Phước
2023-09-05 10:25:07
Xử lý sự cố
Chứng chỉ K3s đã được lưu vào bộ nhớ cache không được xóa khi automatically rotated.
K3s tạo ra các internal certificates với thời hạn sử dụng 1 năm. Khi khởi động lại dịch vụ K3s, chứng chỉ hết hạn hoặc sắp hết hạn trong vòng 90 ngày sẽ tự động được rotated. Tuy nhiên, phiên bản K3s được sử dụng với App Host không xóa bỏ bộ nhớ cache chứng chỉ đã lưu, dẫn đến cùng một vấn đề. Do đó, bộ nhớ cache cần được xóa bỏ thủ công.
Sử dụng công cụ dòng lệnh kubectl gây ra lỗi sau đây:
Unable to connect to the server: x509: certificate has expired or is not yet valid
Chú ý: Các ứng dụng hiện đang chạy vẫn tiếp tục hoạt động mà không gặp vấn đề gì
Phiên bản K3s hiện tại được sử dụng (v1.18) không xóa bỏ bộ nhớ cache chứng chỉ. Vì vậy, ngay cả khi chứng chỉ được xoay vòng sau khi khởi động lại K3s, vấn đề vẫn tiếp tục tồn tại.
Các thay đổi vào ứng dụng hiện có sử dụng nền tảng SOAR không thành công. Điều này bao gồm các thay đổi tệp, thay đổi thông tin bí mật (secrets), triển khai (deploy) hoặc hủy triển khai (undeploy), và yêu cầu nâng cấp (upgrade).
Trạng thái ứng dụng mới vẫn ở trạng thái 'Deploying' (Đang triển khai). Một tooltip yêu cầu người dùng chạy lệnh "sudo appHostPackageLogs". Chạy lệnh này hoặc bất kỳ lệnh nào bắt đầu bằng "kubectl" đều gây ra lỗi sau đây:
#: kubectl get pods -A
Unable to connect to the server: x509: certificate has expired or is not yet valid
Bạn có thể kiểm tra dữ liệu hết hạn của cached certificates trong bộ đệm ẩn bằng cách chạy lệnh sau trên máy chủ Máy chủ ứng dụng:
openssl s_client -connect localhost:6443 -showcerts < /dev/null 2>&1 | openssl x509 -noout -enddate
Như một biện pháp phòng ngừa, chúng ta backup thư mục TLS.
sudo tar -czvf /var/lib/rancher/k3s/server/apphost-cert.tar.gz /var/lib/rancher/k3s/server/tls
Xóa tệp sau.
sudo rm /var/lib/rancher/k3s/server/tls/dynamic-cert.json
Xóa cached certificates trong bộ nhớ cache khỏi kubernetes secret.
sudo kubectl --insecure-skip-tls-verify=true delete secret -n kube-system k3s-serving
Khởi động lại dịch vụ K3s rotate certificates.
sudo systemctl restart k3s
Xác minh rằng lệnh kubectl hoạt động.
sudo kubectl get pods -A
Ngoài ra, bạn có thể xác minh rằng tất cả các internal certificates của K3s không còn expired nữa.
sudo su; for i in `ls /var/lib/rancher/k3s/server/tls/*.crt`; do echo $i; openssl x509 -enddate -noout -in $i; done
Hoặc run
curl -v -k https://localhost:6443 [https://localhost:6443] //xác nhận cert mới đã được renew
Cnit09
good job