一旦 Kubernetes 集群已经运行,您如何查找集群/服务的 CIDR?
我知道在 Minikube 中它是 10.0.0.1/24。
对于 GKE,您可以通过以下方式找到:
gcloud container clusters describe XXXXXXX --zone=XXXXXX |
grep -e clusterIpv4Cidr -e servicesIpv4Cidr
但是在通用的 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
,您如何找出呢?
我花了数小时寻找一种通用的方式来做这件事。最终我放弃了搜索并自己动手写了。从 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 信息。
获取服务IP范围
kubectl cluster-info dump | grep -m 1 service-cluster-ip-range
你将会看到类似于--service-cluster-ip-range=xxx.yy.0.0/13的东西
获取Pods IP地址范围
kubectl cluster-info dump | grep -m 1 cluster-cidr
你会看到类似这样的东西,比如--cluster-cidr=xxx.yy.0.0/11
您是否检查了以下命令是否包含所需的信息?
kubectl cluster-info dump
kubectl cluster-info dump | grep -i cidr
命令可以用来查找pidCIDRs和clusterCIDR。 - damick使用kubeadm
kubeadm config view | grep Subnet
下面的输出是自解释的
podSubnet: 10.10.0.0/16
serviceSubnet: 10.96.0.0/12
如果您没有指定--pod-network-cidr
或--service-cidr
,则会使用默认值。获取默认值:
kubeadm config print init-defaults
或者获取配置映射:
kubectl --namespace kube-system get configmap kubeadm-config -o yaml
--pod-network-cidr
,并且它也没有列在 kubeadm config print init-defaults
或 kubectl --namespace kube-system get configmap kubeadm-config -o yaml
中。 - ComradeJoecool由于我的声望还不够,我暂时无法留下评论,所以我将回答我所发现的内容。
对于minikube而言,CIDR似乎是可以更改的,特别是对于我来说。我在.minikube目录下找到了CIDR,具体路径为:
.minikube\profiles\minikube
对于Windows系统,您可以在以下位置找到它:
对于linux和mac,我认为它应该在~/.minikube目录下。C:\Users\YourUserName\.minikube\profiles\minikube
与之前提出的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.\/]+')
kubectl describe node | egrep 'PodCIDR|Name:'
名称:
是为了让你也能识别节点的名称。