如何在吊舱中获取群集CIDR?

时间:2020-08-21 10:16:54

标签: kubernetes

如何在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:

1 个答案:

答案 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了解更多信息。