使用GKE时,我发现Kubernetes集群中的所有节点必须位于同一网络和同一子网中。因此,我想了解设计网络的正确方法。

我有两个服务AB,它们之间没有任何关系。我的计划是在单个区域中使用单个群集,并在同一网络中的不同子网中为服务AB的每个提供两个节点。

但是,似乎无法完成。对集群进行分区的另一种方法是使用namespaces,但是我已经在使用使用命名空间的分区开发环境。

我了解了集群联合https://kubernetes.io/docs/concepts/cluster-administration/federation/,但是它的服务很小,不需要在多个集群中同步它们。

为这些服务设置网络的正确方法是什么?我是否应该为所有4个节点使用相同的网络和子网来服务AB这两个服务?

最佳答案

您可以使用标签和网络策略来限制传入(或传出)流量。

通过这种方式,仅当该流量是由属于同一应用程序的某个Pod生成的,或者具有您要实现的任何逻辑时,这些Pod才能够接收该流量。

您可以按照this分步教程来指导您全面实施POC。

kubectl run hello-web --labels app=hello \
  --image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose

网络策略示例
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: hello-allow-from-foo
spec:
  policyTypes:
  - Ingress
  podSelector:
    matchLabels:
      app: hello
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: foo

关于kubernetes - 了解Kubernetes集群中的子网划分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52591948/

10-16 05:36