使用GKE时,我发现Kubernetes集群中的所有节点必须位于同一网络和同一子网中。因此,我想了解设计网络的正确方法。
我有两个服务A
和B
,它们之间没有任何关系。我的计划是在单个区域中使用单个群集,并在同一网络的不同子网中为每个服务A
和B
配备两个节点。
但是,似乎无法完成。对集群进行分区的另一种方法是使用namespaces
,但是我已经在使用通过名称空间进行分区的开发环境。
我了解了集群联合https://kubernetes.io/docs/concepts/cluster-administration/federation/,但是它的服务很小,不需要在多个集群中同步它们。
为这些服务设置网络的正确方法是什么?我是否应该为所有4个节点使用相同的网络和子网来服务A
和B
这两个服务?
答案 0 :(得分:1)
您可以使用标签和网络策略来限制传入(或传出)流量。
通过这种方式,只有当流量是由属于同一应用程序的Pod生成的,或者具有您要实现的任何逻辑时,Pod才能够接收流量。
您可以按照this的分步教程来指导您彻底实施POC。
::1 - - [01/Oct/2018:03:28:55 +0000] "GET /index.map?platform=android&dev=true&minify=false&deltaBundleId=368588d58201b180 HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" ::ffff:127.0.0.1 - - [01/Oct/2018:03:30:02 +0000] "GET /launch-js-devtools HTTP/1.1" 200 - "-" "okhttp/3.10.0"
DELTA [android, dev] ../../index.js ░░░░░░░░░░░░░░░░ 0.0% (0/1)::1
- - [01/Oct/2018:03:30:03 +0000] "GET /index.delta?platform=android&dev=true&minify=false&deltaBundleId=7af603fc71db260a HTTP/1.1" 200 - "http://localhost:8081/debugger-ui/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
DELTA [android, dev] ../../index.js ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 100.0% (1/1), done.
网络政策示例
kubectl run hello-web --labels app=hello \
--image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose