المحتويات

المقدمة

المتطلبات الأساسية

المتطلبات

المكونات المستخدمة

ما هو Kube-apiserver؟

المشكلة

تحليل السبب الجذري

خطوات الاسترداد

عمليات التحقق من النشر

المقدمة

يصف هذا المستند حلا لاستعادة إعادة التشغيل المستمر ل Kube-apiserver pod.

المتطلبات الأساسية

المتطلبات

cisco يوصي أن يتلقى أنت معرفة من هذا موضوع:

- محطات الإرساء و كوبرنيتس

- بيئة التنفيذ المشتركة (CEE) للبنية الأساسية للخدمات الدقيقة للمشتركين من Cisco (SMI)

المكونات المستخدمة

تستند المعلومات الواردة في هذا المستند إلى إصدار Kubernetes v1.21.0.

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.

ما هو Kube-apiserver؟

- يقوم خادم واجهة برمجة تطبيقات Kubernetes (API) بالتحقق من بيانات كائنات واجهة برمجة التطبيقات (API) وتكوينها والتي تتضمن قوائم التحكم في الوصول والخدمات ووحدات التحكم في النسخ المتماثل وغيرها. تقوم خدمات خادم واجهة برمجة التطبيقات (API) بعمليات النقل (REST) الحالية وتوفر الواجهة الأمامية للحالة المشتركة الخاصة بالمجموعة والتي يتم من خلالها التفاعل بين جميع المكونات الأخرى.

- خادم Kubernetes API مسؤول عن مصادقة الطلبات والتحقق منها، لاسترداد البيانات وتحديثها في مخزن البيانات. في الواقع، يعد خادم Kube-API المكون الوحيد الذي يتفاعل مباشرة مع مكدس بيانات ETCD.

- هذه هي الخطوات التي يتخذها خادم Kube-API عند إنشاء POD في نظام المجموعة:

أ. مصادقة المستخدم

ب. التحقق من صحة الطلب

ج. إسترداد البيانات

د. تحديث ETCD

هـ. مجدول

و. كوبيليت

- وتستخدم المكونات الأخرى مثل المجدول و kube-controller-manager و kubelet خادم API لإجراء التحديثات في المجموعة في المناطق الخاصة بها.

المشكلة

تتم ملاحظة إعادة تشغيل Kube-apiserver-smf-data-master-3 بشكل مستمر. في هذه الحالة، يحصل تنفيذ Kubectl CLI Kubectl على pods -A -o واسعة | خدمة GREP لتحديد المشكلة:

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:~$

تمت ملاحظة هذه الأخطاء في سجلات Kubectl <kube-apiserver_pod_name> -n kube-system:

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...

لاسترداد البيانات، يجب إعادة تشغيل Kube-apiserver pod باستخدام CLI Kubectl delete pod <kube-apiserver_pod_name> -n kube-system، ولكنه لا يساعد.

تحليل السبب الجذري

وبمزيد من التحليل، تبين أن الاختلاف في القيمة السرية بين Master-3، حيث تتم إعادة تشغيل Kube-Apiserver باستمرار، والعقد الرئيسية الأخرى، هو الذي يسبب هذه المشكلة.

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:~$

خطوات الاسترداد

1. كجزء من الاسترداد، انسخ السر الحالي للأساسي-3 إلى ملف نسخ إحتياطي:

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

2. قم بتحرير الأسرار، وتكوينها في Master-3، وتغيير قيمة السر إلى نفس القيمة كما ترى في العقد الرئيسية الأخرى.

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. إعادة تشغيل حاوية Kube-apisver على Master-3:

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

عمليات التحقق من النشر

التحقق من Kubernetes من الرئيسي:

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

الآن، يجب أن تكون جميع أجهزة الكمبيوتر المحمولة جاهزة ويجب تشغيلها دون إعادة التشغيل.