了解Kubernetes集群中的子网划分

时间:2018-10-01 13:11:36

标签: kubernetes google-cloud-platform google-kubernetes-engine kubernetes-networkpolicy

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

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

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

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

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

1 个答案:

答案 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
相关问题