Điểm:1

tạo mã thông báo kubeadm không thành công trên chứng chỉ ca tự ký

lá cờ cn
Ted

Tôi đang cố gắng triển khai cụm k8s bằng cách sử dụng kubespray trên cụm máy chủ ubuntu openstack. Quá trình cài đặt không thành công khi kubeadm cố gắng khởi tạo nhà cung cấp đám mây bằng cách gửi yêu cầu đăng tới điểm cuối keystone xxx:5000/v3/ để tạo mã thông báo bootstrap. kubelet.service không khởi động được vì điểm cuối keystone được ký bởi một chứng chỉ tự ký. Xem bên dưới. Tôi đã lưu chứng chỉ ca từ điểm cuối keystone và đặt nó trên nút chính trong /etc/kubernetes/ssl/ nơi kubelet và kubeadm tìm kiếm chứng chỉ. Tôi cũng đã cập nhật /etc/kubernetes/kubeadm-config.yaml Dựa trên tài liệu đâyđây, tôi đã cập nhật cấu hình mặc định tham gia kubeadm để bao gồm 'unsafeSkipCAVerification: true', nhưng kubelet.service vẫn không thành công trên chứng chỉ tự ký. Kubeadm phải được xác thực thông qua tên người dùng/mật khẩu được lưu trữ trong tệp /etc/kubernetes/cloud_config và tôi đã xác minh rằng các giá trị đó là chính xác. Tôi không chắc phải tìm nơi nào khác để thay đổi hành vi. Bất kỳ sự hướng dẫn sẽ được đánh giá rất nhiều.

ubuntu:/etc/kubernetes# cấu hình kubeadm in tham gia mặc định
phiên bản api: kubeadm.k8s.io/v1beta3
caCertPath: /etc/kubernetes/pki/ca.crt
khám phá:
  khởi độngToken:
  apiServerEndpoint: kube-apiserver:6443
  mã thông báo: abcdef.0123456789abcdef
  không an toànSkipCAVerification: true
  thời gian chờ: 5m0s
  tlsBootstrapToken: abcdef.0123456789abcdef
loại: JoinConfiguration
  nútĐăng ký:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: IfNotPresent
  tên: mdap-nút-01
  vết nhơ: null

theo dõi ngăn xếp kubelet:

 Ngày 15 tháng 12 22:19:51 ubuntu kubelet[388780]: E1215 22:19:51.760564 388780 server.go:294] "Không thể chạy kubelet" err="không thể chạy Kubelet: không thể khởi tạo nhà cung cấp đám mây \"openstack\" : Đăng \"https://XXX.XXX.XXX.132:5000/v3/auth/tokens\": x509: chứng chỉ được ký bởi cơ quan không xác định"
 Ngày 15 tháng 12 22:19:51 ubuntu systemd[1]: kubelet.service: Quá trình chính đã thoát, mã=đã thoát, trạng thái=1/THẤT BẠI


KHÔNG THÀNH CÔNG - THỬ LẠI: Tạo mã thông báo kubeadm để tham gia các nút hết hạn 24 giờ (mặc định) (còn 4 lần thử lại). Kết quả là: {
"nỗ lực": 2,
"đã thay đổi": sai,
"cmd": [
    "/usr/local/bin/kubeadm",
    "--kubeconfig",
    "/etc/kubernetes/admin.conf",
    "mã thông báo",
    "tạo ra"
],
"đồng bằng": "0:01:15.035670",
"end": "2021-12-16 15:03:22.901080",
"yêu cầu": {
    "module_args": {
        "_raw_params": "/usr/local/bin/kubeadm --kubeconfig /etc/kubernetes/admin.conf tạo mã thông báo",
        "_uses_shell": sai,
        "argv": không,
        "chdir": không,
        "tạo": null,
        "thực thi": null,
        "loại bỏ": null,
        "stdin": không
        "stdin_add_newline": đúng,
        "strip_empty_ends": đúng,
        "cảnh báo": đúng
    }
},
"msg": "mã trả về khác không",
"rc": 1,
"thử lại": 6,
"bắt đầu": "2021-12-16 15:02:07.865410",
"stderr": "đã hết thời gian chờ điều kiện\nĐể xem dấu vết ngăn xếp của lỗi này thực thi với --v=5 hoặc cao hơn",
"stderr_lines": [
    "hết thời gian chờ điều kiện",
    "Để xem dấu vết ngăn xếp của lỗi này, hãy thực thi với --v=5 hoặc cao hơn"
],
"thiết bị xuất chuẩn": "",
"stdout_lines": []
kkopczak avatar
lá cờ ng
Xin chào @Ted, bạn đã sử dụng phiên bản Kubernetes nào và bạn đã thiết lập cụm như thế nào? Bạn đã sử dụng cài đặt kim loại trần hoặc một số nhà cung cấp đám mây?
Ted avatar
lá cờ cn
Ted
@kkopczak theo yêu cầu của khách hàng Tôi đã sử dụng terraform v1.1.0 để triển khai các máy chủ Ubuntu v20.04.3 cho một cụm openstack sẽ đóng vai trò là các nút k8. Tôi đang sử dụng kubespray để triển khai cụm kubernetes v1.22.4. Ngoài ra, theo kubespray, tôi đang sử dụng nhà cung cấp đám mây trong cây openstack vì đây được coi là một hệ thống khép kín. https://kubespray.io/#/docs/openstack?id=the-in-tree-cloud-provider
Ted avatar
lá cờ cn
Ted
có vẻ như tôi đã hiểu nhầm các nhà cung cấp đám mây trên cây: https://kubernetes.io/blog/2019/04/17/the-future-of-cloud-providers-in-kubernetes/
kkopczak avatar
lá cờ ng
Xin lỗi vì phản hồi muộn. [Đây](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/) là tài liệu về Quản lý chứng chỉ. Bạn có thể kiểm tra đầu ra của lệnh này `kubeadm certs check-expiration` (điều này có thể hiển thị nếu chứng chỉ được quản lý bên ngoài)?
Wytrzymały Wiktor avatar
lá cờ it
Xin chào @Ted. Bất cứ cập nhật?
Ted avatar
lá cờ cn
Ted
@WytrzymaÅyWiktor Cuối cùng, tôi đã xóa cài đặt nhà cung cấp đám mây openstack khỏi cấu hình kubespray trong ./kubespray/inventory/my_inventory/group_vars/all/all.yml vì chúng tôi đang sử dụng openstack để cung cấp máy chủ, nhưng chúng tôi không sử dụng openstack.keystone để quản lý chứng chỉ/mã thông báo ở lớp k8s. Tuy nhiên, có vẻ như nó nên có thể.
Ted avatar
lá cờ cn
Ted
sau khi tôi gỡ bỏ nhà cung cấp đám mây, kubespray đã cài đặt thành công cụm k8s. sự hiểu biết của tôi về lỗi mà tôi đã đăng là keystone đang sử dụng chứng chỉ tự ký mà quy trình kubelet không tin cậy. Tôi đã thử thêm chứng chỉ công khai keystone vào thư mục /etc/kuberenetes/ssl trên cùng một máy chủ với quy trình kubelet, nhưng kubespray cấp lại các chứng chỉ đó mỗi khi chạy. Tôi sẽ đọc qua tài liệu @kkopczak đã gửi để xem liệu tôi có thể hiểu điều này tốt hơn không.
Wytrzymały Wiktor avatar
lá cờ it
Xin chào @Ted. Chủ đề bây giờ thế nào? Có tiến triển gì không?
Điểm:2
lá cờ ng

Để làm rõ tôi đang đăng câu trả lời Wiki cộng đồng.

Để giải quyết vấn đề này, bạn đã xóa cài đặt nhà cung cấp dịch vụ đám mây openstack. Sau đó với kubespray, bạn đã có thể cài đặt thành công cụm k8s.

Để đọc về chứng chỉ - như tôi đã đề cập trước khi tài liệu về Quản lý chứng chỉ nằm dưới liên kết này. Để kiểm tra xem chứng chỉ có được quản lý bên ngoài hay không, bạn có thể sử dụng lệnh sau:

kubeadm certs kiểm tra hết hạn

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.