我认为不可能以便携和简单的方式获得您想要的东西。如果您不指定 Cidr 的参数,它将分配默认值。
由于您有多种方法可以将 kubernetes 作为非托管集群(如 kubeadm、minikbue、k3s、micork8s)运行或像云提供商(GKE、Azure、AWS)一样托管,因此很难找到一种方法来列出所有环境中的所有 cidr。另一个障碍可能是 Kubernetes 或 CNI 的版本。
在 Kubernetes 1.17发行说明中,您可以找到以下信息
弃用默认服务 IP CIDR。之前的默认设置10.0.0.0/24
将在 6 个月/2 个版本中删除。集群管理员必须通过--service-cluster-ip-range
在 kube-apiserver 上使用来指定他们自己想要的值。
以 Kubeadm 为例:$ kubeadm init --pod-network-cidr 10.100.0.0/12 --service-cidr 10.99.0.0/12
有几种方法可以获得这个 pod 和 service-cidr:
$ kubectl cluster-info dump | grep -E '(service-cluster-ip-range|cluster-cidr)'
"--service-cluster-ip-range=10.99.0.0/12",
"--cluster-cidr=10.100.0.0/12",
$ kubeadm config view | grep Subnet
podSubnet: 10.100.0.0/12
serviceSubnet: 10.99.0.0/12
但如果您检查此集群中的所有 pod,有些 pod 以 192.168.190.X 或 192.168.137.X 开头
$ kubectl get pods -A -owide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default nginx 1/1 Running 0 62m 192.168.190.129 kubeadm-worker <none> <none>
kube-system calico-kube-controllers-77c5fc8d7f-9n6m5 1/1 Running 0 118m 192.168.137.66 kubeadm-master <none> <none>
kube-system calico-node-2kx2v 1/1 Running 0 117m 10.128.0.4 kubeadm-worker <none> <none>
kube-system calico-node-8xqd9 1/1 Running 0 118m 10.128.0.3 kubeadm-master <none> <none>
kube-system coredns-66bff467f8-sgmkw 1/1 Running 0 120m 192.168.137.65 kubeadm-master <none> <none>
kube-system coredns-66bff467f8-t84ht 1/1 Running 0 120m 192.168.137.67 kubeadm-master <none> <none>
如果您要描述任何CNI
pod,您可以找到其他 CIDR:
CALICO_IPV4POOL_CIDR: 192.168.0.0/16
对于 GKE 示例,您将拥有:节点 CIDR
$ kubectl describe node | grep CIDRs
PodCIDRs: 10.52.1.0/24
PodCIDRs: 10.52.0.0/24
PodCIDRs: 10.52.2.0/24
$ gcloud container clusters describe cluster-2 --zone=europe-west2-b | grep Cidr
clusterIpv4Cidr: 10.52.0.0/14
clusterIpv4Cidr: 10.52.0.0/14
clusterIpv4CidrBlock: 10.52.0.0/14
servicesIpv4Cidr: 10.116.0.0/20
servicesIpv4CidrBlock: 10.116.0.0/20
podIpv4CidrSize: 24
servicesIpv4Cidr: 10.116.0.0/20
老实说,我认为没有一种简单且便携的方法可以在一个简单的命令中列出所有 podCidrs 和 serviceCidrs。