Vérifiez kube-controller-manager
l'erreur indiquant que le segment d'adresse IP n'a pas d'adresse IP disponible.
# kubectl logs -f kube-controller-manager-loc-k8s-master -n kube-system
...
I0517 08:56:08.159382 1 event.go:291] "Event occurred" object="loc-node37" kind="Node" apiVersion="v1" type="Normal" reason="CIDRNotAvailable" message="Node loc-node37 status is now: CIDRNotAvailable"
E0517 08:58:55.524439 1 controller_utils.go:260] Error while processing Node Add/Delete: failed to allocate cidr from cluster cidr at idx:0: CIDR allocation failed; there are no remaining CIDRs left to allocate in the accepted range
...
Node
L'allocation de nœuds podCIDR
doit être kube-controller-manager
activée . Lorsqu'il est utilisé avec le paramètre, il allouera des segments IP de conteneur pour toutes les ressources et écrira le résultat dans le champ. Vérifiez le fichier de configuration de l'environnement pour trouver le problème. Comme le montre la figure ci-dessous, l'environnement est défini simultanément sur 172.16.100.0/24 et 24. Le paramètre est utilisé pour indiquer la longueur du masque cidr des nœuds du cluster de gestion. La valeur par défaut est 24 bits, et le segment d'adresse doit être alloué à partir de celui-ci, mais le paramètre ne peut évidemment pas satisfaire cette exigence de masque entraîne l' échec de l'attribution d'une adresse au nœud.allocate-node-cidrs
true
cluster-cidr
controller-manager
Node
PodCIDR
kube-controller-manager
cluster-cidr
node-cidr-mask-size
node-cidr-mask-size
kubernetes
cluster-cidr
cluster-cidr
kube-controller-manager
master
Modifier kube-controller-manager
les --node-cidr-mask-size
paramètres du fichier de configuration dans
# vim /etc/kubernetes/manifests/kube-controller-manager.yaml
......
- kube-controller-manager
- --allocate-node-cidrs=true
- --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
- --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
- --bind-address=127.0.0.1
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --cluster-cidr=172.16.100.0/20 # 修改这个
- --cluster-name=kubernetes
- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
- --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
- --controllers=*,bootstrapsigner,tokencleaner
- --kubeconfig=/etc/kubernetes/controller-manager.conf
- --leader-elect=true
- --node-cidr-mask-size=20 # 修改这个
- --port=0
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
- --root-ca-file=/etc/kubernetes/pki/ca.crt
- --service-account-private-key-file=/etc/kubernetes/pki/sa.key
- --service-cluster-ip-range=192.168.0.0/24
- --use-service-account-credentials=true
......
Elle prendra effet automatiquement après avoir attendu quelques secondes après la modification, pas besoin de redémarrer, kubernetes
la version est 1.19.20, et l'erreur ci-dessus ne sera pas signalée si vous vérifiez à nouveau le journal après la modification
# ps -ef|grep controller # 可以看到启动命令的--node-cidr-mask-size参数已经修改了
# kubectl logs -f kube-controller-manager-loc-master35 -n kube-system
Référence :
https://www.jianshu.com/p/29e9c967f029