如何找到Kubernetes集群的集群和服务CIDR?

ric*_*izy 10 kubernetes kubectl

一旦Kubernetes集群已经运行,您如何找到它的集群/服务CIDR?

我知道Minikube,它是10.0.0.1/24.

对于GKE,你可以找到通过

gcloud container clusters describe XXXXXXX --zone=XXXXXX |
  grep -e clusterIpv4Cidr -e servicesIpv4Cidr
Run Code Online (Sandbox Code Playgroud)

但是,你如何找到一个通用的Kubernetes集群,特别是通过kubectl

小智 29

我花了几个小时寻找一种通用的方法来做到这一点。我放弃了搜索并写了我自己的。从 Kubernetes 1.18 开始,此方法适用于云提供商,而不仅仅是 GKE。

SVCRANGE=$(echo '{"apiVersion":"v1","kind":"Service","metadata":{"name":"tst"},"spec":{"clusterIP":"1.1.1.1","ports":[{"port":443}]}}' | kubectl apply -f - 2>&1 | sed 's/.*valid IPs is //')
echo $SVCRANGE
172.21.0.0/16
Run Code Online (Sandbox Code Playgroud)

这个 liner 的工作原理是将无效的服务集群 IP 输入 kubectl apply 并解析错误输出,从而提供服务 CIDR 信息。

  • 干净的解决方案,也是唯一对我有用的解决方案。 (2认同)
  • 你是 MVP @StevenDake。我在 1.14.9 上尝试过,它也在那里工作。 (2认同)
  • 谢谢。第一个答案对我不起作用,但这个答案对我有用!有没有类似的方法来查找集群CIDR?(pod IP 范围) (2认同)

小智 7

获取服务IP范围

kubectl cluster-info dump | grep -m 1 service-cluster-ip-range
Run Code Online (Sandbox Code Playgroud)

您将看到类似--service-cluster-ip-range = xxx.yy.0.0 / 13的内容

获取Pod IP范围

kubectl cluster-info dump | grep -m 1 cluster-cidr
Run Code Online (Sandbox Code Playgroud)

您将看到类似--cluster-cidr = xxx.yy.0.0 / 11的内容

  • 不适用于 DOKS 以太币 (2认同)

Osw*_*ann 6

您是否检查以下命令是否包含您需要的信息?

kubectl cluster-info dump

  • 对我来说,`kubectl cluster-info dump | grep -i cidr`努力寻找pidCIDR和clusterCIDR. (5认同)

小智 5

kubectl describe cm kubeadm-config -n kube-system |grep Subnet