Puncte:0

/var/lib/kubelet/pki/kubelet.crt este expirat, cum îl reînnoiesc?

drapel cn

The kubernetes grupați pe 1.21.2. The kubelet este tot pe 1.21.2

kubelet --versiune
Kubernetes v1.21.2

versiunea kubeadm
Versiune kubeadm: &versiune.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean:"21:5:16T1D 56Z", GoVersion:"go1.16.5", Compiler:"gc", Platforma:"linux/amd64"}

Când încerc să"kl obține nu„Primesc o eroare de mai jos

kl obține nu
eroare: trebuie să fiți conectat la server (neautorizat)
**Notă: kl este alias-ul lui kubectl**
Mi-am verificat /var/lib/kubelet/pki/kubelet.crt și a expirat.

În kubelet.crt, emitentul este mai jos

Subiect: CN=aparapu@1591592441
        Informații despre cheia publică a subiectului:
            Algoritmul cheii publice: rsaEncryption

Aveți nevoie de ajutor pentru a reînnoi acest kubelet.crt.

drapel in
Bună, shaktirath, bun venit la S.F. Fără să știți mai multe despre cum v-ați asigurat nodul, nimeni nu poate spune _cu siguranță_, dar în _majoritatea cazurilor_ `rm -rf /var/lib/kubelet && rm -rf /etc/kubernetes && systemctl restart kubelet.service` va face ca kubelet să dispară înapoi prin procesul inițial de solicitare a certificatului și apiserver fie vă va solicita, fie va aproba automat cererea de certificare a Nodului. Simțiți-vă liber să utilizați `mv` în loc de `rm` și opțional opriți mai întâi kubelet
shaktirath avatar
drapel cn
De ce să eliminați /etc/kubernetes? Am furnizat nodul prin kubeadm, care este prezent în documentația kubernetes.
shaktirath avatar
drapel cn
Doar pentru a adăuga încă ceva, kubeadm renew cert nu este pentru /var/lib/kubelet/kubelet.crt. Dacă încă ești sigur, dă-mi pașii detaliați.
Mikołaj Głodziak avatar
drapel id
Bună @shaktirath, dacă înțeleg bine întrebarea ta [reînnoirea manuală a certificatului](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#manual-certificate-renewal) ar trebui să te ajute. Încercați să executați `kubeadm certs renew`.
shaktirath avatar
drapel cn
Acest link de mai sus nu vorbește despre nimic, cum să reînnoiești /var/lib/kubelet/kubelet.crt. Am încercat și linkul de mai jos, dar, din păcate, kubectl-ul meu nu funcționează. https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#kubelet-serving-certs
Mikołaj Głodziak avatar
drapel id
Cum ți-ai configurat clusterul? Folosiți bare metal sau vreun furnizor de cloud? Uitați-vă și la [această problemă similară](https://github.com/kubernetes/kubeadm/issues/2186)
shaktirath avatar
drapel cn
Da. Grupul meu este alcătuit din metal gol.
Puncte:1
drapel my

Am văzut aceste probleme pe multe alte forumuri și, în sfârșit, am găsit o soluție care funcționează de la mine.

În primul rând, problemele mele s-au datorat exclusiv certificatului /var/lib/kubelet/pki/kubelet.crt, pe care îl văd expirat fie cu:

ecou -n | openssl s_client -connect localhost:10250 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -text -noout | grep -A 2 Valabilitate

sau

sudo openssl x509 -in /var/lib/kubelet/pki/kubelet.crt -text -noout | grep -A 2 Valabilitate

În primul rând, trebuie să activați --rotate-certificates=true și --rotate-server-certificates=true în kubeletul tău. În cazul meu, am instalat cluster-ul folosind kubeadm, ca să pot edita /etc/systemd/system/kubelet.service.d/10-kubeadm.conf, și adăugați următoarele la KUBELET_EXTRA_ARGS:

Environment="KUBELET_EXTRA_ARGS=--rotate-certificates=true --rotate-server-certificates=true --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"

În general, este doar adăugarea acestor steaguri la execuția kubelet /usr/bin/kubelet --rotate-certificates=true --rotate-server-certificates=true.

Și reîncărcați și reporniți kubelet cu:

sudo systemctl daemon-reload
sudo service kubelet restart

După repornire, văd ceva de genul 14114 log.go:172] http: eroare de strângere de mână TLS de la 20.0.0.13:57738: niciun certificat de servire nu este disponibil pentru kubelet, care indică faptul că certificatul trebuie adăugat și aprobat.

În al doilea rând, trebuie să aprobăm csr de la kubernetes (acesta este ceva la care nu m-am uitat niciodată până acum...):

kubectl obține csr

Acolo se va vedea certificatul care așteaptă să fie aprobat, deci doar aprobat:

certificatul kubectl aprobă csr-dlcf6

Și clusterul dvs. ar trebui să aibă acum certificatul server kubelet reînnoit. Pentru a verifica din nou:

ecou -n | openssl s_client -connect localhost:10250 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -text -noout | grep -A 2 Valabilitate

Cateva note:

  • Am activat rotația atât pentru client, cât și pentru server. Rotația clienților face, de asemenea, parte din scriptul de reînnoire automată a certificatului (https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/)
  • După ce am activat rotația /var/lib/kubelet/pki/kubelet.crt nu mai este folosită, în schimb legătura simbolică /var/lib/kubelet/pki/kubelet-server-current.pem este utilizat și indică cel mai recent certificat rotat.

Referinte:

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.