Inhoud

Inleiding

Voorwaarden

Vereisten

Gebruikte componenten

Wat is oebe-apiserver?

Probleem

Root Cause Analysis

Stappen voor herstel

Controles achteraf

Inleiding

In dit document wordt een oplossing beschreven om de kubus-apiserver-pod continu opnieuw op te starten.

Voorwaarden

Vereisten

Cisco raadt u aan om de kennis van deze onderwerpen te hebben:

- Dockers en Kubernetes

- Cisco Subscriber Microservices Infrastructuur (SMI) Ultra Cloud Core Common Executive Environment (CEE)

Gebruikte componenten

De informatie in dit document is gebaseerd op de versie Kubernetes v1.21.0.

De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk levend is, zorg er dan voor dat u de mogelijke impact van om het even welke opdracht begrijpt.

Wat is oebe-apiserver?

- De API-server (Kubernetes Application) bevestigt en vormt gegevens voor de API-objecten, waaronder pods, services, replicatie-controllers en andere. De API Server services REPresentational State Transfer (REST) bewerkingen en leveren de voorkant van de gedeelde status van het cluster waardoor alle andere componenten samenwerken.

- De server van Kubernetes API is verantwoordelijk voor het authentiseren en valideren van verzoeken, om gegevens in etcd gegevensopslag op te halen en bij te werken. In feite is kube-API server de enige component die direct met de etcd datastore interageert.

- Dit zijn de stappen die de kube-API server neemt wanneer er een pod in de cluster wordt gemaakt:

a. Verificeren gebruiker

b. Valideren aanvraag

c. Gegevens ophalen

d. Update ETCD

e. Scheduler

f. Kubelet

- De andere componenten, zoals de planner, kube-controller-manager en kubelet, gebruiken de API-server om updates in het cluster in hun respectievelijke gebieden uit te voeren.

Probleem

Het kube-apiserver-smf-data-master-3 opstarten wordt continu waargenomen. In dit geval executeert u kubectl CLI kubectl pods -A-o-breed | grep apiser om de kwestie te identificeren:

cloud-user@smf-data-master-1:~$ kubectl get pods -A -o wide | grep apiserver

kube-system      kube-apiserver-smf-data-master-1                   1/1     Running   4          68d    10.192.1.22       smf-data-master-1   <none>           <none>

kube-system      kube-apiserver-smf-data-master-2                   1/1     Running   4          68d    10.192.1.23       smf-data-master-2   <none>           <none>

kube-system      kube-apiserver-smf-data-master-3                   0/1     Running   2          68d    10.192.1.24       smf-data-master-3   <none>           <none>

cloud-user@smf-data-master-1:~$

Deze fouten zijn waargenomen in de kobectl-bestanden van <kube-apiserver_pod_name> -n kube-systeem:

cloud-user@smf-data-master-1:~$ kubectl logs  kube-apiserver-smf-data-master-3 -n kube-system

E1116 20:09:52.635602       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:09:53.691253       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:09:54.751145       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:09:55.808782       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:09:56.865492       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:09:57.906426       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:09:58.963801       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:10:00.027583       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:10:01.084615       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:10:02.206947       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:10:03.256261       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:10:04.313860       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

E1116 20:10:05.363353       1 cacher.go:419] cacher (*core.Secret): unexpected ListAndWatch error: failed to list *core.Secret: unable to transform key "/registry/secrets/cee-dnceed21/alert-logger-sa-token-dzhkb": invalid padding on input; reinitializing...

Om te herstellen moet u proberen om de kube-apiserver-pod met CLI kubectl te hervatten door pod <kube-apiserver_pod_name> -n kube-systeem te verwijderen, maar dit helpt niet.

Root Cause Analysis

Bij nader onderzoek werd vastgesteld dat het verschil in de geheime waarde tussen master-3, waar de kubus-apiser voortdurend heropende, en andere knooppunten, dit probleem veroorzaakte.

From Master-1:

cloud-user@smf-data-master-1:~$ cat /data/kubernetes/secrets.conf

apiVersion: apiserver.config.k8s.io/v1

kind: EncryptionConfiguration

resources:

- resources:

- secrets

providers:

- aescbc:

keys:

- name: key1

secret: BG5hleucjlD5ZDkFYUxoGLHHhBA/AeoNruHM0i70/ZI=   <<<<<<<<<<

- identity: {}

cloud-user@smf-data-master-1:~$

From Master-3:

cloud-user@smf-data-master-3:~$ cat /data/kubernetes/secrets.conf

apiVersion: apiserver.config.k8s.io/v1

kind: EncryptionConfiguration

resources:

- resources:

- secrets

providers:

- aescbc:

keys:

- name: key1

secret: XK+7mbh3YEnMdqswtySQ1d6QRehg+K6/J1d2e3EnMvI=   <<<<<<<<

- identity: {}

cloud-user@smf-data-master-3:~$

Stappen voor herstel

1. Als deel van herstel, kopieer het huidige geheim van master-3 naar een reservekopie:

cloud-user@smf-data-master-3:~$ sudo cp /data/kubernetes/secrets.conf /data/kubernetes/secrets.conf-bkp

2. Bewerk de geheimen, vorm ze in Master-3 en wijzig de waarde van het geheim tot dezelfde waarde als in andere master knooppunten.

cloud-user@smf-data-master-3:~$ sudo vim /data/kubernetes/secrets.conf

apiVersion: apiserver.config.k8s.io/v1

kind: EncryptionConfiguration

resources:

- resources:

- secrets

providers:

- aescbc:

keys:

- name: key1

secret: XK+7mbh3YEnMdqswtySQ1d6QRehg+K6/J1d2e3EnMvI=     <----  Change this value to “BG5hleucjlD5ZDkFYUxoGLHHhBA/AeoNruHM0i70/ZI=“ as in other Master nodes

- identity: {}

3. Start de container van de kubusmaker op Master-3 opnieuw:

cloud-user@smf-data-master-3:~$ sudo docker ps -f "name=k8s_kube-apiserver" -q | xargs sudo docker restart

Controles achteraf

Controleer Kubernetes van meester:

cloud-user@pod-name-smf-master-1:~$ kubectl get pods -A -o wide | grep kube-apiserver

Nu moeten alle poden omhoog en rennen zonder nieuwe start.