【问题标题】:How can I get the clusters CIDR in a pod?如何在 pod 中获取集群 CIDR?
【发布时间】: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 问题(全部关闭,没有(明确)修复):

关于手动查找集群的CIDR:

【问题讨论】:

  • 不确定我是否得到了您想要实现的目标。由于您拥有带有 Cidrs 的 ConfigMap,为什么您不会按照 docs 中的描述使用它。此外,如果您有 json 输出,则可以使用 -o yaml 打开 YAML 输出。您还可以从文件或某些值创建自己的配置映射。
  • 我用信息扩展了这个问题,为什么我不能使用提到的配置映射,并且我正在寻找一个独立于供应商的解决方案。

标签: kubernetes


【解决方案1】:

恐怕没有供应商独立解决方案。此外,ComponentConfig 仍然是 alpha feature,因此没有足够的适当文档。

但是,目前最好的方法(即使它不是通用的)是使用:

$ kubectl cluster-info dump | grep -m 1 cluster-cidr

然后您可以使用输出的集群CIDR 值创建一个新的ConfigMap,然后在pod 中引用它,如this docs

即使概念相同,您也必须在不同的环境中采用不同的方法。不幸的是,到目前为止,还没有单一的解决方案。

至于附加信息,我已经在Kubeadm Google Kubernetes Engine之间做了一个关于CIDR的小比较。您可以查看this thread 了解更多信息。

【讨论】:

  • 我想要的是在 pod 中自动获取值。 (没有手动将它放入环境变量、ConfigMap 或其他任何东西中。)答案是它目前不起作用。 (我的部分解决方案 GUESSED_CLUSTER_CIDR 似乎是我想要的最接近的解决方案。)
猜你喜欢
  • 2018-12-10
  • 2023-03-26
  • 2016-12-26
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 2019-08-19
  • 2018-04-05
  • 2021-10-12
相关资源
最近更新 更多