J'ai configuré mon nœud maître et j'essaie de rejoindre un nœud de travail comme suit:
kubeadm join 192.168.30.1:6443 --token 3czfua.os565d6l3ggpagw7 --discovery-token-ca-cert-hash sha256:3a94ce61080c71d319dbfe3ce69b555027bfe20f4dbe21a9779fd902421b1a63
Cependant, la commande se bloque pour toujours dans l'état suivant:
[preflight] Running pre-flight checks
[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver. The recommended driver is "systemd". Please follow the guide at https://kubernetes.io/docs/setup/cri/
Comme il ne s'agit que d'un avertissement, pourquoi échoue-t-il réellement?
edit : J'ai remarqué ce qui suit dans mon /var/log/syslog
Mar 29 15:03:15 ubuntu-xenial kubelet[9626]: F0329 15:03:15.353432 9626 server.go:193] failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file "/var/lib/kubelet/config.yaml", error: open /var/lib/kubelet/config.yaml: no such file or directory
Mar 29 15:03:15 ubuntu-xenial systemd[1]: kubelet.service: Main process exited, code=exited, status=255/n/a
Mar 29 15:03:15 ubuntu-xenial systemd[1]: kubelet.service: Unit entered failed state.
Le problème était dû au fait que kubeadm
n'installe pas une solution réseau compatible CNI prête à l'emploi;
Par conséquent, sans cette étape, les nœuds kubernetes
/maître ne peuvent établir aucune forme de communication;
La tâche suivante a résolu le problème:
- name: kubernetes.yml --> Install Flannel
Shell: kubectl -n kube-system apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
become: yes
environment:
KUBECONFIG: "/etc/kubernetes/admin.conf"
when: inventory_hostname in (groups['masters'] | last)
J'ai eu la même erreur sur CentOS 7 mais dans mon cas, la commande join a fonctionné sans problème, il ne s'agissait donc que d'un avertissement.
> [WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker
> cgroup driver. The recommended driver is "systemd". Please follow the
> guide at https://kubernetes.io/docs/setup/cri/ [preflight] Reading
> configuration from the cluster... [preflight] FYI: You can look at
> this config file with 'kubectl -n kube-system get cm kubeadm-config
> -oyaml' [kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.14" ConfigMap in the kube-system namespace
Comme le mentionne la documentation officielle, il y a deux problèmes courants qui font que l'initialisation se bloque (je suppose que cela s'applique également à la commande join):
la configuration par défaut du pilote cgroup pour le kubelet diffère de celle utilisée par Docker. Vérifiez le fichier journal du système (par exemple/var/log/message) ou examinez la sortie de journalctl -u kubelet. Si vous voyez quelque chose comme ceci:
Essayez d'abord les étapes de documentation officielle et si cela ne fonctionne pas, veuillez fournir plus d'informations afin que nous puissions dépanner davantage si nécessaire.
J'ai eu un tas de scripts de déploiement k8s qui ont récemment éclaté avec ce même message d'erreur ... il semble que docker a changé son installation. Essaye ça --
installation précédente: apt-get isntall docker-ce
installation mise à jour: apt-get install docker-ce docker-ce-cli containerd.io