تعمیر گواهی های منقضی شده در Kubernetes

بهطور پیشفرض، وقتی خوشه Kubernetes خود را راهاندازی میکنید، گواهیها پس از یک سال منقضی میشوند.
اگر مدتی است که خوشه Kubernetes خود را راه اندازی کرده اید و سعی می کنید دستورات kubectl را صادر کنید و متوجه خطاهای عدم پذیرش اتصال شوید.
دستورات مورد استفاده نیاز به «root» دارند، بنابراین اگر بهعنوان غیر روت وارد سیستم میشوید، باید «sudo» را قبل از دستورات اضافه کنید.
در عیبیابی بیشتر، متوجه شدید که سرویس kubelet شما شروع به کار نمیکند ('systemctl status kubelet').
پس از بررسی گزارشهای مربوط به kubelet ('journalctl | grep kubelet')، متوجه پیامهای خطای متعلق شدید.
برای تأیید، «انقضای چک گواهیهای kubeadm» را صادر کنید.
یکنوع بازی شبیه لوتو!
اجازه دهید گواهینامه ها را به صورت دستی تمدید کنیم تا مشکلات خود را برطرف کنیم.
اگر خوشه شما بیش از یک گره صفحه کنترل دارد، حتماً دستورات زیر را روی تمام گره های صفحه کنترل در خوشه اجرا کنید.
ابتدا اجازه دهید از گواهینامه های خود نسخه پشتیبان تهیه کنیم تا در صورت نیاز به آنها.
- 'cp -R /etc/kubernetes/pki /etc/kubernetes/pki.backup'
حالا بیایید گواهینامه های خود را با آن تمدید کنیم
- “گواهینامه های kubeadm همه را تمدید می کند”
تأیید کنید که گواهی جدید به درستی نصب شده است.
- انقضای چک گواهیهای kubeadm
راه اندازی مجدد «سرویس کوبلت»
- 'systemctl Restart Kubelet'
هنگامی که فرآیند تمدید کامل شد، باید تمام غلاف های هواپیمای کنترلی را مجددا راه اندازی کنیم. یکی از راههای راهاندازی مجدد این است که فایل مانیفست آن را به بیرون منتقل کنید و قبل از انتقال مجدد فایل به پوشه pki، حدود 20 ثانیه صبر کنید. با این کار، Pod برای استفاده از گواهیهای جدید دوباره ایجاد میشود.
گواهی های مدیر را کپی کنید
- 'sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config'
- 'sudo chown $(id -u):$(id -g) $HOME/.kube/config'
این باید باعث شود که خوشه شما دوباره اجرا شود. می توانید با 'kubectl get pods' تأیید کنید و خطا دریافت نکنید.
اگر مراحل بالا کار نمی کند، کارهای دیگری که باید انجام دهید
اگر به دلایلی موارد بالا جواب نداد، باید موارد زیر را انجام دهید. از /etc/kubernetes/pki/ یک نسخه پشتیبان تهیه کنید
- 'cp -R /etc/kubernetes/pki /etc/kubernetes/pki-backup'
فایل های زیر را از /etc/kubernetes/pki پاک کنید
- 'rm apiserver.crt \ apiserver-etcd-client.key\ apiserver-kubelet-client.crt\ front-proxy-ca.crt\ front-proxy-client.crt\ front-proxy-client.key\ front-proxy- ca.key\ apiserver-kubelet-client.key\ apiserver.key\ apiserver-etcd-client.crt'
تمام فایلهای crt. و .key زیر را از /etc/kubernetes/pki/etcd حذف کنید
- 'rm /etc/kubernetes/pki/etcd/*.crt'
- 'rm /etc/kubernetes/pki/etcd/*.key'
سپس گواهی ها را با
- 'kubeadm init stage گواهی همه –apiserver-advertise-address' — IP خوشه شما را جایگزین کنید.
Backup\Move فایل های conf از /etc/kubernetes
- 'mkdir conf-backup'
- 'mv admin.conf\ controller-manager.conf\ kubelet.conf\ scheduler.conf /etc/kubernetes/conf-backup/'
فایل های conf جدید ایجاد کنید
- 'kubeadm init فاز kubeconfig all'
در نهایت سرویس Kubelet را مجددا راه اندازی کنید یا سیستم را راه اندازی مجدد کنید.
- 'systemctl Restart Kubelet' یا 'Reboot'