使用GKE时,我发现Kubernetes集群中的所有节点必须位于同一网络和同一子网中。因此,我想了解设计网络的正确方法。
我有两个服务A
和B
,它们之间没有任何关系。我的计划是在单个区域中使用单个群集,并在同一网络中的不同子网中为服务A
和B
的每个提供两个节点。
但是,似乎无法完成。对集群进行分区的另一种方法是使用namespaces
,但是我已经在使用使用命名空间的分区开发环境。
我了解了集群联合https://kubernetes.io/docs/concepts/cluster-administration/federation/,但是它的服务很小,不需要在多个集群中同步它们。
为这些服务设置网络的正确方法是什么?我是否应该为所有4个节点使用相同的网络和子网来服务A
和B
这两个服务?
最佳答案
您可以使用标签和网络策略来限制传入(或传出)流量。
通过这种方式,仅当该流量是由属于同一应用程序的某个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/