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

时间:2017-05-25 22:13:05

标签: kubernetes kubectl

如果Kubernetes群集已经在运行,您如何找到群集/服务CIDR?

我知道Minikube,它是10.0.0.1/24。

对于GKE,你可以通过

找到
gcloud container clusters describe XXXXXXX --zone=XXXXXX |
  grep -e clusterIpv4Cidr -e servicesIpv4Cidr

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

8 个答案:

答案 0 :(得分:16)

我花了几个小时寻找一种通用的方式来做到这一点。我放弃了搜索并写了自己的书。从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

这一行可以通过将无效的服务集群IP输入到kubectl apply中并解析错误输出来提供服务CIDR信息。

答案 1 :(得分:5)

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

kubectl cluster-info dump

答案 2 :(得分:3)

获取服务IP范围

kubectl cluster-info dump | grep -m 1 service-cluster-ip-range

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

获取Pod IP范围

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

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

答案 3 :(得分:1)

我不能发表评论而导致代表,所以我只想回答我发现的事情。

对于minikube来说,看起来CIDR可以改变,特别是对我而言。我在

的.minikube目录下找到了CIDR
  

.minikube \型材\ minikube

对于Windows,您可以在以下位置找到:

  

C:\用户\ YourUserName \ .minikube \型材\ minikube

对于linux和mac,我假设它将在〜/ .minikube目录下。

在目录中应该有一个名为config.json的文件,它有一个json对象" KubernetesConfig":{},其中包含以下字段:ServiceCIDR。它的值应该是您服务的CIDR。

不幸的是,我没有其他关于kubectl查找CIDR的提示,也许它更像是提供者的东西,并且取决于你在哪里/如何运行kubernetes。

答案 4 :(得分:0)

使用kubeadm

kubeadm config view | grep Subnet

下面的输出不言自明

podSubnet:10.10.0.0/16

serviceSubnet:10.96.0.0/12

答案 5 :(得分:0)

与建议的before类似,但只返回了CIDR:

POD_CIDR=$(kubectl cluster-info dump | grep -m 1 -Po '(?<=--cluster-cidr=)[0-9.\/]+')
SERVICE_RANGE=$(kubectl cluster-info dump | grep -m 1 -Po '(?<=--service-cluster-ip-range=)[0-9.\/]+')

答案 6 :(得分:0)

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

答案 7 :(得分:0)

如果未指定--pod-network-cidr--service-cidr,则使用默认值。获取默认值:

kubeadm config print init-defaults

或获取配置图:

kubectl  --namespace kube-system get configmap kubeadm-config -o yaml