容器隧道网络 网段规划建议 在集群网络构成中介绍集群中网络地址可分为节点网络、容器网络、服务网络三块,在规划网络地址时需要从如下方面考虑: 三个网段不能重叠 ,否则会导致冲突。且集群所在VPC下所有子网(包括扩展网段子网)不能和容器网段、服务网段冲突。 保证 每个网段有足够的IP地址可用 。 节点网段的IP地址要与集群规模相匹配,否则会因为IP地址不足导致无法创建节点。 容器网段的IP地址要与业务规模相匹配,否则会因为IP地址不足导致无法创建Pod。每个节点上可以创建多少Pod还与其他参数设置相关,具体请参见节点最多可以创建多少个 Pod 。 容器隧道网络访问示例 创建一个容器隧道网络的集群。在集群中创建一个Deployment。 kind: Deployment apiVersion: apps/v1 metadata: name: example namespace: default spec: replicas: 4 selector: matchLabels: app: example template: metadata: labels: app: example spec: containers: name: container0 image: 'nginx:perl' resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi imagePullSecrets: name: defaultsecret 创建后查看Pod。 $ kubectl get pod owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES example5bdc5699b75rvq4 1/1 Running 0 3m28s 10.0.0.20 192.168.0.42 example5bdc5699b7984j9 1/1 Running 0 3m28s 10.0.0.21 192.168.0.42 example5bdc5699b7lfxkm 1/1 Running 0 3m28s 10.0.0.22 192.168.0.42 example5bdc5699b7wjcmg 1/1 Running 0 3m28s 10.0.0.52 192.168.0.64 此时如果在集群同VPC下集群外部直接访问Pod的IP,会发现访问不通,这就是容器隧道网络的特性,不支持外部网络与容器IP直通。 而在集群内部节点或Pod内,都能正常访问Pod,如下进入到容器中直接访问Pod能够正常访问。 $ kubectl exec it example5bdc5699b75rvq4 curl 10.0.0.21 Welcome to nginx! body { width: 35em; margin: 0 auto; fontfamily: Tahoma, Verdana, Arial, sansserif; } Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to Thank you for using nginx.