Configuration pour cgroup driver
a raison dans /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
J'ai également vérifié le Environment
avec cli
$ systemctl show --property=Environment kubelet | cat
Environment=KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf\x20--require-kubeconfig=true KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests\x20--allow-privileged=true KUBELET_NETWORK_ARGS=--network-plugin=cni\x20--cni-conf-dir=/etc/cni/net.d\x20--cni-bin-dir=/opt/cni/bin KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10\x20--cluster-domain=cluster.local KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook\x20--client-ca-file=/etc/kubernetes/pki/ca.crt KUBELET_CADVISOR_ARGS=--cadvisor-port=0 KUBELET_CGROUP_ARGS=--cgroup-driver=systemd
KUBELET_CGROUP_ARGS=--cgroup-driver=systemd
Comment le reproduire:
Environnement:
kubectl version
): 1.7.3uname -a
): Linux 10-8-108-92 3.10.0-327.22.2.el7.x86_64 # 1 SMP jeu 23 juin 17:05:11 UTC 2016 x86_64 x86_64 x86_64 GNU/LinuxSi vous utilisez CentOS et rencontrez des difficultés lors de la configuration du nœud maître, vérifiez que votre pilote Docker cgroup correspond à la configuration du kubelet:
docker info | grep -i cgroup
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Si le pilote Docker cgroup et la configuration de kubelet ne correspondent pas, modifiez la configuration de kubelet pour correspondre au pilote Docker cgroup. L'indicateur que vous devez modifier est --cgroup-driver. S'il est déjà défini, vous pouvez mettre à jour comme suit:
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Cela peut être remplacé par:
CG=$(Sudo docker info 2>/dev/null | sed -n 's/Cgroup Driver: \(.*\)/\1/p')
sed -i "s/cgroup-driver=systemd/cgroup-driver=$CG/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Pour lancer un mini-cube sur un CentOS 7, je dois le démarrer avec un --extra-config=kubelet.cgroup-driver=systemd
comme suggéré dans https://github.com/kubernetes/minikube/issues/2192 .
Il semble que le processus kubelet n'ait pas chargé les bons paramètres à partir du /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
dire à partir du message d'erreur.
Après avoir obtenu plus d'informations sur le chat, je pense qu'il existe plusieurs façons de procéder:
Basculez à la fois le pilote cubelet et docker cgroup sur cgroupfs
Téléchargez le docker à partir du référentiel ci-dessous qui utilise cgroupfs
par défaut.
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
Et changez également le pilote cgroup dans kubelet conf. Vérifiez si l'erreur se reproduit et quel chargement de kubelet à partir de sa conf.
Ajouter plus de journaux dans le code kubelet pour le déboguer
This est la logique utilisée par le kubelet pour obtenir la conf des deux côtés
Modifiez ce fichier /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
changer systemd en cgroupfs ". puis redémarrer le kubelet systemctl restart kubelet
.
Cela est dû à une mauvaise configuration lors du démarrage initial. Par exemple, oublier de changer le pilote docker cgroup avant d'exécuter kubeadm init
commande.
Pour y remédier sous CentOS, ouvrez /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
ou recherchez le fichier sous votre système d'exploitation. Localisez l'entrée avec EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
. Ouvrez ce fichier et modifiez la valeur de --cgroup-driver
à systemd
ou être identique au pilote docker cgroup. Ancien contenu:
KUBELET_KUBEADM_ARGS=--cgroup-driver=cgrouopfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1
Nouveau contenu:
KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1
Installez d'abord le docker:
yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.0.ce-1.el7.centos.x86_64.rpm
[root@cgfs-dock ~]# docker info | grep -i cgroup
Cgroup Driver: cgroupfs
Ensuite, installez le kubelet, cela résoudrait votre problème.
Dans mon environnement, cela n'a fonctionné que dans l'autre sens. La définition de systemd entraîne toujours une erreur. Voici ma configuration actuelle
OS: CentOS 7.6.1810
Minikube Version v1.0.0
Docker Version 18.06.2-ce
La solution pour moi était: Vérifiez /etc/docker/daemon.json
et changez systemd en cgroupfs
{
"exec-opts": ["native.cgroupdriver=cgroupfs"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
Rechargez ensuite systemctl systemctl daemon-reload
Tuez la configuration précédente du minikub minikube delete
et redémarrez le minikube minikube start --vm-driver=none
Vérifiez maintenant la ligne de commande que la sortie doit trouver cgroupfs
dans les deux sorties
docker info | grep -i cgroup
cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
À la fin, vous devriez voir
kubectl is now configured to use "minikube"
= Done! Thank you for using minikube!
Solution simple: Démarrez votre minikube avec le paramètre Extra onfig
--extra-config=kubelet.cgroup-driver=systemd
La commande complète pour démarrer le minikube est la ligne suivante
minikube start --vm-driver=none --extra-config=kubelet.cgroup-driver=systemd
Tout le meilleur et amusez-vous