Puncte:2

Cum configurez Kubernetes să folosească kubenet cu kubeadm?

drapel in

Am implementat un cluster Kubernetes folosind kubeadm.

$ kubectl obține noduri
NUME STARE ROLURI VÂRSTA VERSIUNE
ip-172-31-33-9.us-east-2.compute.internal NotReady <niciun> 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 <niciun> 6s v1.22.2

Nodurile sunt Nu e gata pentru că nu am instalat un plugin de rețea. Vreau să folosesc, păstrați-l simplu și folosiți kubenet. The instrucțiuni Spune:

Kubelet trebuie rulat cu argumentul --network-plugin=kubenet la activați pluginul

dar nu-mi dau seama cum să fac asta. Am încercat să-l adaug la diferite fișiere de configurare, cum ar fi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf și /etc/sysconfig/kubelet, și repornirea kubelet, dar nimic nu funcționează.

Cum folosesc kubenet cu kubeadm?

drapel in
Bună Timkay, bun venit la S.F. Ai spus că „ai încercat”, dar „niciunul nu funcționează”, dar totuși nu ne-ai împărtășit niciuna dintre încercările tale pentru a evalua ce ai încercat deja și de ce s-ar putea să nu funcționeze. Vă rugăm să citiți pagina [cum să întreb](https://serverfault.com/help/how-to-ask). În spiritul de a încerca să fii puțin de ajutor, ți-ai amintit să rulezi `systemctl daemon-reload` între editări? systemd nu folosește cele mai recente valori de pe disc -- trebuie forțat să le recitească. Noroc!
drapel in
După cum am spus, documentele spun să adăugați `--network-plugin=kubenet` la linia de comandă kubelet, dar nu am niciodată o linie de comandă kubelet, deoarece kubelet este pornit de kubeadm. Prin urmare, nu am nicio încercare de a vă împărtăși.
Puncte:1
drapel in

Puteți folosi /etc/default/kubelet fișier pentru a suprascrie argumentele kubelet. După cum poate fi găsit în 10-kubeadm.conf fişier:

...
# Acesta este un fișier pe care utilizatorul îl poate folosi pentru suprascrieri ale argumentelor kubelet ca ultimă soluție. De preferință, utilizatorul ar trebui să folosească
# obiectul .NodeRegistration.KubeletExtraArgs din fișierele de configurare. KUBELET_EXTRA_ARGS ar trebui să provină din acest fișier.
EnvironmentFile=-/etc/default/kubelet
...

Îți voi arăta cum funcționează.


Mai întâi, am configurat planul de control Kubernetes:

# kubeadm init
[init] Folosind versiunea Kubernetes: 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

După inițializare cu succes, putem verifica valoarea lui --network-plugin argument pe care kubelet îl folosește în prezent și starea lui coredns Poduri:

# ps aux | grep „kubelet” | grep „plugin de rețea”
rădăcină 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 În așteptare 0 2m26s
coredns-78fcd69978-fdcv9 0/1 În așteptare 0 2m26s

Din rezultatul de mai sus, putem vedea asta --network-plugin=cni și coredns Podurile sunt în In asteptarea stat.

Să creăm /etc/default/kubelet fișier și scrieți argumentele kubelet acolo:
NOTĂ: Poate fi necesar să personalizați --pod-cidr și --pod-infra-container-image pentru a se potrivi nevoilor dvs.

# atingeți /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"

Apoi trebuie să reîncărcăm configurația managerului de sistem și să repornim kubelet:

# systemctl daemon-reload
# systemctl reporniți kubelet

În cele din urmă, putem verifica dacă funcționează conform așteptărilor:

# ps aux | grep „kubelet” | grep „plugin de rețea”
rădăcină 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 Alergare 0 6m51s
coredns-78fcd69978-fdcv9 1/1 Alergare 0 6m51s   

# kubectl obține noduri
NUME STARE ROLURI VÂRSTA VERSIUNE
Avion de control kmaster Ready, master 15m v1.22.2

Puteți urma acești pași pentru toate nodurile dvs.

În plus, vă rugăm să rețineți că (mai multe informații pot fi găsite în documentația kubenet):

Kubenet este un plugin de rețea foarte simplu, de bază, numai pe Linux. Nu implementează în sine funcții mai avansate, cum ar fi rețelele între noduri sau politica de rețea. Este de obicei folosit împreună cu un furnizor de cloud care stabilește reguli de rutare pentru comunicarea între noduri sau în medii cu un singur nod.

Wytrzymały Wiktor avatar
drapel it
Bună ziua @timkay și bun venit la ServerFault! Vă rugăm să nu uitați să [reacționați la răspunsurile la întrebările dvs.](https://stackoverflow.com/help/someone-answers). În acest fel, știm dacă răspunsurile au fost utile și dacă alți membri ai comunității ar putea beneficia de ele. Încercați să [acceptați răspunsul](https://stackoverflow.com/help/accepted-answer) care este soluția finală pentru problema dvs., votați răspunsurile care sunt utile și comentați cele care ar putea fi îmbunătățite sau necesită o atenție suplimentară. Sedere placuta!
drapel in
Mulțumesc, @matt_j. Am urmat instrucțiunile tale, pe care le-am rezumat astfel: 1. Instalați ca înainte, folosind kubeadm. 2. Creați un fișier /etc/default/kubelet, cu parametri kubelet suplimentari. 3. Reporniți kubelet cu systemctl daemon-reload && systemctl restart kubelet. Am făcut asta, iar parametrii liniei de comandă pentru kubelet nu s-au schimbat. Variabila de mediu KUBELET_KUBEADM_ARGS mi-ar spune că este folosită de kubeadm pentru a porni kubelet, dar nu rulăm deloc kubeadm după ce facem modificări conform instrucțiunilor dumneavoastră.
matt_j avatar
drapel in
Cum ai verificat dacă parametrii kubelet nu s-au schimbat? Ați putea folosi această comandă: `ps aux | grep „kubelet” | grep "network-plugin"` ?
Wytrzymały Wiktor avatar
drapel it
Salut @timkay. Orice actualizari?
drapel in
Am renunțat la Kubernetes și am scris propriul meu înlocuitor.
Minding avatar
drapel pl
Nu este nevoie să rulați `systemctl daemon-reload`, deoarece nu sa schimbat nicio configurație `systemd` care ar trebui reîncărcată. De asemenea, nu-mi place să folosesc `/etc/default` pentru configurații personalizate.In rest foarte util, multumesc!
Minding avatar
drapel pl
De fapt, `kubeadm` [„nu acceptă kubenet”](https://unofficial-kubernetes.readthedocs.io/en/latest/getting-started-guides/kubeadm/) conform acestui wiki.
Puncte:0
drapel jp

kubeadm oferă posibilitatea de a utiliza a --config fișier yaml care este documentat Aici. În acest fișier puteți folosi parametrii cli de la kubelet ca argumente suplimentare, cum ar fi --network-plugin=kubelet la fel de plugin-ul de rețea: kubelet:

apiVersion: kubeadm.k8s.io/v1beta3
fel: InitConfiguration
bootstrapTokens:
...
nodeÎnregistrare:
...
  kubeletExtraArgs:
    ...
    plugin-ul de rețea: kubenet
    pod-cidr: 10.20.0.0/24

drapel in
Kubernetes este atât de încurcat. Am renunțat la el cu mult timp în urmă și am scris propriul meu înlocuitor, care este doar câteva sute de linii de cod. Sunt destul de dezamăgit că industria pare a fi o schemă piramidală. Oamenii scriu software complexe pe care doar oamenii cu înaltă pregătire le pot folosi. Unde este măiestria? După cum spune Elon, „nicio parte nu este cea mai bună parte”. Nu mai remediați problemele de complexitate făcând totul mai complex.
Oskar avatar
drapel jp
@timkay Cuvinte adevărate, pot înțelege pe deplin afirmația ta :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.