2 votes

Comment configurer Kubernetes pour utiliser kubenet avec kubeadm ?

J'ai déployé un cluster Kubernetes en utilisant kubeadm .

$ kubectl get nodes
NAME                                          STATUS     ROLES                  AGE   VERSION
ip-172-31-33-9.us-east-2.compute.internal     NotReady   <none>                 48m   v1.22.2
ip-172-31-46-53.us-east-2.compute.internal    NotReady   control-plane,master   49m   v1.22.2
ip-172-31-47-245.us-east-2.compute.internal   NotReady   <none>                 6s    v1.22.2

Les nœuds sont NotReady parce que je n'ai pas installé de plugin de mise en réseau. Je veux faire simple et utiliser kubenet . Le site instructions dites :

Kubelet doit être exécuté avec l'argument --network-plugin=kubenet à l'adresse suivante activer le plugin

mais je n'arrive pas à trouver comment faire. J'ai essayé de l'ajouter à divers fichiers de configuration, tels que /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf y /etc/sysconfig/kubelet et de redémarrer Kubelet, mais rien ne fonctionne.

Comment puis-je utiliser kubenet con kubeadm ?

1voto

matt_j Points 290

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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X