如何在Pod中使用群集CIDR(包含所有Pod IP地址的IP地址范围)? (自动,无需手动将其放在环境变量,ConfigMap或其他任何地方。)
我想要的示例:
env:
- name: CLUSTER_CIDR
valueFrom: # ??? does a configMap like this exist ??? Or any other source for clusterCidr?
configMap:
key: clusterCidr
name: ...
我最好的部分解决方案:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: GUESSED_CLUSTER_CIDR
value: $(POD_IP)/16
我可以在键full-cluster-state
的值中某处的命名空间kube-system
中的configMap full-cluster-state
中找到clusterCidr。但是,该值是包含json的 string ,并且看起来是特定于供应商的(在currentState.rkeConfig.services.kubeController.clusterCidr
中)。 我无法提取Deployment.yaml中的部分值。而且,我更喜欢有一个独立于供应商的解决方案。
我不知道在哪里可以找到相关问题中提到的ComponentConfig,甚至不知道它是否仍在alpha中。
与k8s相关的问题(已全部关闭,未(明确)修复):
关于手动查找集群的CIDR:
答案 0 :(得分:0)
恐怕还没有独立于供应商的解决方案。另外,ComponentConfig
仍然是alpha feature
,因此没有足够的适当文档。
但是,目前最好的方法(即使不是通用方法)是使用:
$ kubectl cluster-info dump | grep -m 1 cluster-cidr
然后,您可以使用输出的簇ConfigMap
创建一个新的CIDR
,然后像在this docs中一样在窗格中引用它。
即使概念相同,您也必须在不同的环境中采用不同的方法。不幸的是,到目前为止,还没有单一的解决方案。
关于其他信息,我已经在Kubeadm
和 Google Kubernetes Engine
之间对CIDR进行了比较。您可以查看this thread了解更多信息。