J'ai mis en place un cluster Kubernetes à un seul nœud, en utilisant kubeadm, sur Ubuntu 16.04 LTS avec flanelle.Kubernetes: Obtient fréquemment "Erreur d'ajout de réseau: aucune adresse IP disponible dans le réseau: cbr0"
La plupart du temps, tout fonctionne bien, mais tous les deux jours, le cluster se trouve dans un état où il ne peut pas planifier de nouveaux modules - les modules sont bloqués en état "En attente" et kubectl describe pod
I des messages d'erreur comme ceux-ci:
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
2m 2m 1 {default-scheduler } Normal Scheduled Successfully assigned dex-1939802596-zt1r3 to superserver-03
1m 2s 21 {kubelet superserver-03} Warning FailedSync Error syncing pod, skipping: failed to "SetupNetwork" for "somepod-1939802596-zt1r3_somenamespace" with SetupNetworkError: "Failed to setup network for pod \"somepod-1939802596-zt1r3_somenamespace(167f8345-faeb-11e6-94f3-0cc47a9a5cf2)\" using network plugins \"cni\": no IP addresses available in network: cbr0; Skipping pod"
J'ai trouvé cet stackoverflow question et la solution de contournement, il est suggéré. Il aide à récupérer (cela prend quelques minutes cependant), mais le problème revient après un certain temps ...
J'ai également rencontré ce open issue, et a également obtenu le problème récupéré en utilisant la solution de contournement suggérée, mais encore , le problème revient. Aussi, il est pas exactement mon cas, et la question a été fermé après seulement trouver une solution ...: \
Détails techniques:
kubeadm version: version.Info{Major:"1", Minor:"6+", GitVersion:"v1.6.0-alpha.0.2074+a092d8e0f95f52", GitCommit:"a092d8e0f95f5200f7ae2cba45c75ab42da36537", GitTreeState:"clean", BuildDate:"2016-12-13T17:03:18Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Kubernetes Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.3", GitCommit:"029c3a408176b55c30846f0faedf56aae5992e9b", GitTreeState:"clean", BuildDate:"2017-02-15T06:34:56Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Started le cluster avec ces commandes:
kubeadm init --pod-network-cidr 10.244.0.0/16 --api-advertise-addresses 192.168.1.200
kubectl taint nodes --all dedicated-
kubectl -n kube-system apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Certains journaux syslog qui peuvent être pertinents (je suis arrivé beaucoup):
Feb 23 11:07:49 server-03 kernel: [ 155.480669] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Feb 23 11:07:49 server-03 dockerd[1414]: time="2017-02-23T11:07:49.735590817+02:00" level=warning msg="Couldn't run auplink before unmount /var/lib/docker/aufs/mnt/89bb7abdb946d858e175d80d6e1d2fdce0262af8c7afa9c6ad9d776f1f5028c4-init: exec: \"auplink\": executable file not found in $PATH"
Feb 23 11:07:49 server-03 kernel: [ 155.496599] aufs au_opts_verify:1597:dockerd[24704]: dirperm1 breaks the protection by the permission bits on the lower branch
Feb 23 11:07:49 server-03 systemd-udevd[29313]: Could not generate persistent MAC address for vethd4d85eac: No such file or directory
Feb 23 11:07:49 server-03 kubelet[1228]: E0223 11:07:49.756976 1228 cni.go:255] Error adding network: no IP addresses available in network: cbr0
Feb 23 11:07:49 server-03 kernel: [ 155.514994] IPv6: eth0: IPv6 duplicate address fe80::835:deff:fe4f:c74d detected!
Feb 23 11:07:49 server-03 kernel: [ 155.515380] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Feb 23 11:07:49 server-03 kernel: [ 155.515588] device vethd4d85eac entered promiscuous mode
Feb 23 11:07:49 server-03 kernel: [ 155.515643] cni0: port 34(vethd4d85eac) entered forwarding state
Feb 23 11:07:49 server-03 kernel: [ 155.515663] cni0: port 34(vethd4d85eac) entered forwarding state
Feb 23 11:07:49 server-03 kubelet[1228]: E0223 11:07:49.757001 1228 cni.go:209] Error while adding to cni network: no IP addresses available in network: cbr0
Feb 23 11:07:49 server-03 kubelet[1228]: E0223 11:07:49.757056 1228 docker_manager.go:2201] Failed to setup network for pod "somepod-752955044-58g59_somenamespace(5d6c28e1-f8dd-11e6-9843-0cc47a9a5cf2)" using network plugins "cni": no IP addresses available in network: cbr0; Skipping pod
Un grand merci!
Edit:
Je suis en mesure de le reproduire. Il semble que ce soit un échappement des adresses IP dans le CIDR du kubelet. Résultats:
D'abord, le podCIDR du nœud est (il a obtenu par
kubectl get node -o yaml
):podCIDR: 10.244.0.0/24
(BTW, pourquoi pas/16 comme CIDR de cluster j'ai mis dans le commnad de kubeadm?).Deuxième:
$ sudo ls -la /var/lib/cni/networks/cbr0 | wc -l
256
(qui est, 256 adresses IP sont affectées, non?)Mais, cela arrive même si je ne captez pas plus de 256 dosettes Kubernetes en cours d'exécution et services:
$ kubectl get all --all-namespaces | wc -l
180
### (Yes, this includes not only pods and services, but also jobs, deployments and replicasets)
Ainsi, la maison vient les adresses IP sont épuisées? Comment réparer ça? Il ne peut pas être que ces solutions de contournement sont les seuls moyens ...
Merci encore.
Modifier (2)
Une autre question connexe: https://github.com/containernetworking/cni/issues/306