我需要一种方法来获取适用于所有 Kubernetes 集群的服务集群 IP 范围(如 CIDR)。
我尝试了以下方法,它适用于使用 kubeadm 创建的集群,因为它会获取 apiserver pod 的参数:
$ kubectl cluster-info dump | grep service-cluster-ip-range
"--service-cluster-ip-range=10.96.0.0/12",
这不适用于所有 Kubernetes 集群,即 gcloud
所以问题是,以编程方式获取服务 ip 范围的最佳方法是什么?
最佳答案
我认为没有办法通过 K8s Api 访问此类信息,有一个 Unresolved 问题可以解决此功能的缺失:https://github.com/kubernetes/kubernetes/issues/25533 .如果您有权访问相关 k8s 集群的 etcd,则有一个包含有关服务 cidr 范围信息的 key :/registry/ranges/serviceips
.您可以使用 etcdctl 获取该值(假设您拥有适当的权限):etcdctl --enpoints=<your etcd> --<any authentication flags> get "/registry/ranges/serviceips" --prefix=true
.
关于Kubernetes - 以编程方式找出服务 ip 范围 CIDR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44154425/