【发布时间】:2020-12-10 17:27:12
【问题描述】:
如何在 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
我可以在 configMap full-cluster-state 中的命名空间 kube-system 的某个键 full-cluster-state 的值中找到 clusterCidr。但这个值是一个包含 json 的 string,它看起来是特定于供应商的(在 currentState.rkeConfig.services.kubeController.clusterCidr 中)。 我无法提取 deployment.yaml 中的部分值。而且我更喜欢独立于供应商的解决方案。
我不知道在哪里可以找到相关问题中提到的 ComponentConfig,甚至不知道它是否仍处于 alpha 阶段。
相关的 k8s 问题(全部关闭,没有(明确)修复):
- https://github.com/kubernetes/kubernetes/issues/25533
- https://github.com/kubernetes/kubernetes/issues/46508
关于手动查找集群的CIDR:
【问题讨论】:
-
不确定我是否得到了您想要实现的目标。由于您拥有带有 Cidrs 的 ConfigMap,为什么您不会按照 docs 中的描述使用它。此外,如果您有 json 输出,则可以使用
-o yaml打开 YAML 输出。您还可以从文件或某些值创建自己的配置映射。 -
我用信息扩展了这个问题,为什么我不能使用提到的配置映射,并且我正在寻找一个独立于供应商的解决方案。
标签: kubernetes