Vous pouvez utiliser le /etc/default/kubelet
pour remplacer les arguments des kubelets. Comme on peut le trouver dans le fichier 10-kubeadm.conf
fichier :
...
# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
EnvironmentFile=-/etc/default/kubelet
...
Je vais vous montrer comment ça marche.
Tout d'abord, j'ai configuré le plan de contrôle de Kubernetes :
# kubeadm init
[init] Using Kubernetes version: v1.22.2
...
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
Après une initialisation réussie, nous pouvons vérifier la valeur de l'élément --network-plugin
que kubelet utilise actuellement et le statut de l'argument coredns
Des gousses :
# ps aux | grep "kubelet" | grep "network-plugin"
root 27488 5.1 3.6 1816612 145808 ? Ssl 10:42 0:01 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.5
# kubectl get pod -n kube-system | grep "coredns"
coredns-78fcd69978-bbc52 0/1 Pending 0 2m26s
coredns-78fcd69978-fdcv9 0/1 Pending 0 2m26s
A partir de la sortie ci-dessus, nous pouvons voir que --network-plugin=cni
y coredns
Les gousses sont dans le Pending
l'État.
Créons le /etc/default/kubelet
et y écrire les arguments du kubelet :
NOTE : Vous devrez peut-être personnaliser le --pod-cidr
y --pod-infra-container-image
pour répondre à vos besoins.
# touch /etc/default/kubelet
# echo 'KUBELET_KUBEADM_ARGS="--network-plugin=kubenet --pod-cidr=10.20.0.0/24 --pod-infra-container-image=k8s.gcr.io/pause:3.5"' > /etc/default/kubelet
# cat /etc/default/kubelet
KUBELET_KUBEADM_ARGS="--network-plugin=kubenet --pod-cidr=10.20.0.0/24 --pod-infra-container-image=k8s.gcr.io/pause:3.5"
Ensuite nous devons recharger la configuration du gestionnaire systemd et redémarrer kubelet
:
# systemctl daemon-reload
# systemctl restart kubelet
Enfin, nous pouvons vérifier si tout fonctionne comme prévu :
# ps aux | grep "kubelet" | grep "network-plugin"
root 27841 6.9 3.5 1890600 143760 ? Ssl 10:47 0:01 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --network-plugin=kubenet --pod-cidr=10.20.0.0/24 --pod-infra-container-image=k8s.gcr.io/pause:3.5
# kubectl get pod -n kube-system | grep "coredns"
coredns-78fcd69978-bbc52 1/1 Running 0 6m51s
coredns-78fcd69978-fdcv9 1/1 Running 0 6m51s
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kmaster Ready control-plane,master 15m v1.22.2
Vous pouvez suivre ces étapes pour tous vos nœuds.
En outre, n'oubliez pas que (plus d'informations peuvent être trouvées dans le site de l documentation kubenet ):
Kubenet est un plugin réseau très basique et simple, sur Linux uniquement. Il n'implémente pas, en soi, des fonctionnalités plus avancées comme la mise en réseau inter-nœuds ou la politique réseau. Il est généralement utilisé avec un fournisseur de nuage qui établit des règles de routage pour la communication entre les nœuds, ou dans des environnements à nœud unique.