كيفية تغيير الشهادات منتهية الصلاحية في كتلة kubernetes.

لقد واجهنا مؤخرًا مشكلة في انتهاء صلاحية شهادة kubernetes. يحدث الاتصال عقدة ماستر kubernetes من خلال نفق SSL. يعتمد نفق طبقة المقابس الآمنة عادةً على مجموعة من المراجع الموثوق بها لشهادات الطرف الثالث لإثبات صحة الشهادات. بمجرد حدوث ذلك ، سيواجه نظامك فترة توقف مؤقتة. ستساعدك هذه المقالة في حل / تجنب مشكلات انتهاء صلاحية الشهادة.

الجذر @ xxxxxxxx: / home / أوبونتو # kubectl الحصول على القرون على نطاق واسع
يتعذر الاتصال بالخادم: x509: انتهت صلاحية الشهادة أو أنها غير صالحة بعد

توليد جديد

قم بإنشاء دليل جديد يسمى cts

mkdir certs

إنشاء ملف openssl.cnf داخل دليل certs بالمحتوى التالي (يرجى تغيير المعلمات وفقًا للبيئة الخاصة بك)

[مسا]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[v3_req]
basicConstrict = CA: FALSE
keyUsage = nonRepudiation، digitalSignature، keyEncipherment
topicAltName =alt_names
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = internal-XXXXXXXXXXXXXX.ap-south-1.elb.amazonaws.com
DNS.4 = *. *. compute.internal
DNS.5 = * .ec2.internal
IP.1 = 10.3.0.1

قم بتشغيل الأوامر التالية لإنشاء الشهادات.

openssl genrsa-out certs / ca-key.pem 2048
openssl req -x509 -new -nodes -key certs / ca-key.pem-days 365-out certs / ca.pem -subj "/ CN = kube-ca"
openssl genrsa-out certs / apiserver-key.pem 2048
openssl req-new-key certs / apiserver-key.pem -out certs / apiserver.csr -subj "/ CN = kube-apiserver" -config openssl.cnf
openssl x509 -req -ints / apiserver.csr -CA certs / ca.pem-cakey certs / ca-key.pem -CAcreateserial -outts / apiserver.pem -days 365 -extensions v3_req -extfile openssl
openssl genrsa-out certs / worker-key.pem 2048
openssl req-new-key certs / worker-key.pem-out certs / worker.csr -subj "/ CN = kube-worker"
openssl x509 -req -في certs / worker.csr-cats cts / ca.pem -ckey certs / ca-key.pem -CAcreateserial-out cts / worker.pem -days 365
openssl genrsa-out certs / admin-key.pem 2048
openssl req-new-key certs / admin-key.pem -out certs / admin.csr -subj "/ CN = kube-admin"
openssl x509 -req -في certs / admin.csr -CA cts / ca.pem -ckey certs / ca-key.pem -CAcreateserial-out certs / admin.pem -days 365

إنشاء الرمز البريدي certs باستخدام مجلد certs

الرمز البريدي -r certs.zip

ماجستير تغيير شهادة العقد

يرجى سه في الماجستير وتشغيل الأوامر.

قم بتحميل ملف certs.zip الذي تم إنشاؤه لإتقان العقد واستخراجه إلى / tmp

النسخ الاحتياطي / الخ / kubernetes الدليل.

cp / etc / kubernetes / الصفحة الرئيسية / المستخدم / النسخ الاحتياطية

ثم قم بإزالة جميع ملفات * .pem من / etc / kubernetes / ssl /

rm /etc/kubernetes/ssl/*.pem

ثم قم بتشغيل الأوامر التالية على جميع العقد الرئيسية.

sudo mv /tmp/certs/ca.pem /etc/kubernetes/ssl/ca.pem
sudo mv /tmp/certs/apiserver.pem /etc/kubernetes/ssl/apiserver.pem
sudo mv /tmp/certs/apiserver-key.pem /etc/kubernetes/ssl/apiserver-key.pem
rm -R / tmp / certs
sudo chmod 600 /etc/kubernetes/ssl/*-key.pem
sudo chown root: root /etc/kubernetes/ssl/*-key.pem

ثم أعد تشغيل البرنامج الخفي k8

sudo systemctl الخفي إعادة تحميل
sudo systemctl بدء kubelet
sudo systemctl تمكين kubelet
sudo systemctl وقف عامل ميناء
sudo systemctl بدء عامل ميناء

يرجى التأكد من عمر صور عامل ميناء جديد.

سوف يساعدك أمر docker ps في التحقق من عمر صورة عامل النقل. (يرجى إعادة تشغيل الخوادم إذا كان العمر غير جديد)

تغيير شهادة عقد العمال

يرجى SSH في العامل وتشغيل الأوامر.

قم بتحميل ملف certs.zip الذي تم تكوينه على العقد المنفذة واستخرجه إلى / tmp

النسخ الاحتياطي / الخ / kubernetes الدليل

cp / etc / kubernetes / الصفحة الرئيسية / المستخدم / النسخ الاحتياطية

ثم قم بإزالة جميع ملفات * .pem من / etc / kubernetes / ssl /

rm /etc/kubernetes/ssl/*.pem

ثم قم بتشغيل الأوامر التالية على جميع العقد المنفذة.

sudo mv /tmp/certs/ca.pem /etc/kubernetes/ssl/ca.pem
sudo mv /tmp/certs/worker.pem /etc/kubernetes/ssl/worker.pem
sudo mv /tmp/certs/worker-key.pem /etc/kubernetes/ssl/worker-key.pem
sudo chmod 600 /etc/kubernetes/ssl/*-key.pem
sudo chown root: root /etc/kubernetes/ssl/*-key.pem
sudo systemctl الخفي إعادة تحميل
sudo systemctl وقف kubelet
sudo systemctl بدء kubelet
sudo systemctl تمكين kubelet
sudo systemctl وقف عامل ميناء
sudo systemctl بدء عامل ميناء

يرجى التأكد من عمر صور عامل ميناء جديد.

سوف يساعدك أمر docker ps في التحقق من عمر صورة عامل النقل. (الرجاء إعادة تشغيل الخوادم إذا كان العمر غير جديد)

تغيير الشهادات في عقدة المدير

يرجى سه في إدارة الخادم الذي تثبيت kubctl.

قم بتحميل ملف certs.zip الذي تم إنشاؤه إلى العقد المنفذة واستخرجه إلى / tmp وقم بفك ضغطه.

القط ~ /. مكعب / التكوين /

الناتج عينة

apiVersion: v1
عناقيد المجموعات:
- العنقودية:
 شهادة المرجع: /root/.kube/certs/ca.pem
 الخادم: https://internal-XXXXXXXXXXXXXX.ap-south-1.elb.amazonaws.com
 الاسم: الافتراضي الكتلة
السياقات:
- سياق الكلام:
 الكتلة: الافتراضي الكتلة
 المستخدم: الافتراضي المسؤول
 الاسم: النظام الافتراضي
السياق الحالي: النظام الافتراضي
النوع: التكوين
التفضيلات: {}
المستخدمين:
- الاسم: الافتراضي المسؤول
 المستعمل:
 شهادة العميل: /root/.kube/certs/admin.pem
 مفتاح العميل: /root/.kube/certs/admin-key.pem

النسخ الاحتياطي وإزالة الشهادات في مسار الشهادة أعلاه.

rm /root/.kube/certs/admin.pem /root/.kube/certs/admin-key.pem /root/.kube/certs/ca.pem

انسخ شهادات جديدة إلى دليل /root/.kube/certs

cp /tmp/certs/ca.pem /tmp/certs/admin.pem /tmp/certs/admin-key.pem /root/.kube/certs

تشغيل الأمر kubectl إلى kubectl جدا يعمل بشكل جيد

شغّل الأوامر التالية لتحديث حسابات الخدمة لأنها تحتوي الآن على رموز غير صالحة.

kubectl حذف serviceaccount الافتراضي
kubectl delete serviceaccount - مساحة الاسم = نظام kube الافتراضي

يرجى إعادة نشر جميع الخدمات ، وحدات تحكم النسخ المتماثل ، القرون ، مساحات الأسماء ، إلخ. لتجنب إعادة التشغيل.