Score:1

การสร้างโทเค็น kubeadm ล้มเหลวในใบรับรอง ca ที่ลงนามด้วยตนเอง

ธง cn
Ted

ฉันกำลังพยายามปรับใช้คลัสเตอร์ k8s โดยใช้ kubespray ที่ด้านบนของคลัสเตอร์ openstack ของเซิร์ฟเวอร์ Ubuntu การติดตั้งล้มเหลวเมื่อ kubeadm พยายามเริ่มต้นผู้ให้บริการคลาวด์โดยส่งคำขอโพสต์ไปยังจุดปลายคีย์สโตน xxx:5000/v3/ เพื่อสร้างโทเค็นบูตสแตรป kubelet.service ไม่สามารถเริ่มต้นได้เนื่องจากจุดสิ้นสุดของคีย์สโตนได้รับการลงนามโดยใบรับรองที่ลงนามด้วยตนเอง ดูด้านล่าง ฉันบันทึกใบรับรอง ca จากจุดสิ้นสุดของคีย์สโตนและวางไว้บนโหนดหลักใน /etc/kubernetes/ssl/ โดยที่ kubelet และ kubeadm ค้นหาใบรับรอง ฉันได้อัปเดต /etc/kubernetes/kubeadm-config.yaml ตามเอกสารประกอบแล้ว ที่นี่ และ ที่นี่ฉันได้อัปเดตการกำหนดค่าเริ่มต้นการเข้าร่วม kubeadm เพื่อรวม 'unsafeSkipCAVerification: จริง' แต่ kubelet.service ยังคงล้มเหลวในใบรับรองที่ลงนามด้วยตนเอง kubeadm ควรตรวจสอบสิทธิ์ผ่านชื่อผู้ใช้/รหัสผ่านที่จัดเก็บไว้ในไฟล์ /etc/kubernetes/cloud_config และฉันได้ตรวจสอบแล้วว่าค่าเหล่านั้นถูกต้อง ฉันไม่แน่ใจว่าจะหาที่ไหนอีกเพื่อเปลี่ยนพฤติกรรม คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก

ubuntu:/etc/kubernetes# kubeadm config พิมพ์เข้าร่วมเริ่มต้น
apiVersion: kubeadm.k8s.io/v1beta3
caCertPath: /etc/kubernetes/pki/ca.crt
การค้นพบ:
  โทเค็นบูตสแตรป:
  apiServerEndpoint: kube-apiserver:6443
  โทเค็น: abcdef.0123456789abcdef
  unsafeSkipCAVerification: จริง
  หมดเวลา: 5m0s
  tlsBootstrapToken: abcdef.0123456789abcdef
ชนิด: เข้าร่วมการกำหนดค่า
  การลงทะเบียนโหนด:
  criSocket: /var/run/dockershim.sock
  imagePullPolicy: ถ้าไม่ใช่ปัจจุบัน
  ชื่อ: mdap-node-01
  มลทิน: null

การติดตามสแต็ก kubelet:

 15 ธันวาคม 22:19:51 ubuntu kubelet[388780]: E1215 22:19:51.760564 388780 server.go:294] "ไม่สามารถเรียกใช้ kubelet" err="ไม่สามารถเรียกใช้ Kubelet: ไม่สามารถเริ่มต้นผู้ให้บริการระบบคลาวด์ \"openstack\" : โพสต์ \"https://XXX.XXX.XXX.132:5000/v3/auth/tokens\": x509: ใบรับรองที่ลงนามโดยหน่วยงานที่ไม่รู้จัก"
 15 ธันวาคม 22:19:51 ubuntu systemd[1]: kubelet.service: ออกจากกระบวนการหลักแล้ว, รหัส = ออก, สถานะ = 1 / ล้มเหลว


ล้มเหลว - การลองใหม่: สร้างโทเค็น kubeadm สำหรับการเข้าร่วมโหนดที่มีวันหมดอายุ 24 ชั่วโมง (ค่าเริ่มต้น) (เหลือการลองใหม่ 4 ครั้ง) ผลลัพธ์คือ: {
"ความพยายาม": 2,
"เปลี่ยนแปลง": เท็จ
"ซม.": [
    "/usr/local/bin/kubeadm",
    "--kubeconfig",
    "/etc/kubernetes/admin.conf",
    "โทเค็น",
    "สร้าง"
]
"เดลต้า": "0:01:15.035670",
"จบ": "2021-12-16 15:03:22.901080",
"การร้องขอ": {
    "module_args": {
        "_raw_params": "/usr/local/bin/kubeadm --kubeconfig /etc/kubernetes/admin.conf สร้างโทเค็น",
        "_uses_shell": เท็จ
        "argv": โมฆะ
        "chdir": โมฆะ
        "สร้าง": null,
        "เรียกใช้งานได้": null,
        "ลบ": null,
        "stdin": null
        "stdin_add_newline": จริง
        "strip_empty_ends": จริง
        "เตือน": จริง
    }
},
"msg": "โค้ดส่งคืนที่ไม่ใช่ศูนย์",
"อาร์ค": 1,
"ลองใหม่": 6,
"เริ่มต้น": "2021-12-16 15:02:07.865410",
"stderr": "หมดเวลารอเงื่อนไข\nหากต้องการดูการติดตามสแต็กของข้อผิดพลาดนี้ ให้ดำเนินการด้วย --v=5 หรือสูงกว่า",
"stderr_lines": [
    "หมดเวลารอเงื่อนไข",
    "หากต้องการดูการติดตามสแต็กของข้อผิดพลาดนี้ให้ดำเนินการด้วย --v=5 หรือสูงกว่า"
]
"stdout": "",
"stdout_lines": []
kkopczak avatar
ng flag
สวัสดี @Ted คุณใช้ Kubernetes เวอร์ชันใด และตั้งค่าคลัสเตอร์อย่างไร คุณใช้การติดตั้งแบบ Bare Metal หรือผู้ให้บริการคลาวด์บางรายหรือไม่
Ted avatar
cn flag
Ted
@kkopczak ต่อความต้องการของลูกค้า ฉันใช้ terraform v1.1.0 เพื่อปรับใช้เซิร์ฟเวอร์ ubuntu v20.04.3 กับคลัสเตอร์ openstack ซึ่งจะทำหน้าที่เป็นโหนด k8s ฉันใช้ kubespray เพื่อปรับใช้คลัสเตอร์ kubernetes v1.22.4 นอกจากนี้ ต่อ kubespray ฉันใช้ openstack in-tree cloud ผู้ให้บริการ เนื่องจากในที่สุดแล้วสิ่งนี้ควรจะเป็นระบบปิด https://kubespray.io/#/docs/openstack?id=the-in-tree-cloud-provider
Ted avatar
cn flag
Ted
ดูเหมือนว่าฉันเข้าใจผู้ให้บริการคลาวด์ในต้นไม้ผิด: https://kubernetes.io/blog/2019/04/17/the-future-of-cloud-providers-in-kubernetes/
kkopczak avatar
ng flag
ขอโทษที่ตอบช้า [ที่นี่](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/) คือเอกสารเกี่ยวกับการจัดการใบรับรอง คุณช่วยตรวจสอบผลลัพธ์ของคำสั่งนี้ `kubeadm certs check-expiration` (สิ่งนี้สามารถแสดงได้ว่าใบรับรองได้รับการจัดการจากภายนอกหรือไม่)
Wytrzymały Wiktor avatar
it flag
สวัสดี @เท็ด การปรับปรุงใด ๆ ?
Ted avatar
cn flag
Ted
@WytrzymaÅyWiktor ฉันลงเอยด้วยการลบการตั้งค่าผู้ให้บริการคลาวด์ openstack ออกจากการกำหนดค่า kubespray ใน ./kubespray/inventory/my_inventory/group_vars/all/all.yml เนื่องจากเราใช้ openstack เพื่อจัดเตรียมเซิร์ฟเวอร์ แต่เราไม่ได้ใช้ openstack.keystone สำหรับการจัดการใบรับรอง/โทเค็นที่เลเยอร์ k8s ถึงกระนั้นก็ดูเหมือนว่าน่าจะเป็นไปได้
Ted avatar
cn flag
Ted
หลังจากที่ฉันลบผู้ให้บริการระบบคลาวด์แล้ว kubespray ก็ติดตั้งคลัสเตอร์ k8s สำเร็จ ความเข้าใจของฉันเกี่ยวกับข้อผิดพลาดที่ฉันโพสต์คือคีย์สโตนกำลังใช้ใบรับรองที่ลงนามเอง ซึ่งกระบวนการ kubelet ไม่เชื่อถือ ฉันพยายามเพิ่มใบรับรองสาธารณะของคีย์สโตนในโฟลเดอร์ /etc/kuberenetes/ssl บนเซิร์ฟเวอร์เดียวกันกับกระบวนการของ kubelet แต่ kubespray จะจัดเตรียมใบรับรองเหล่านั้นใหม่ทุกครั้งที่เรียกใช้ ฉันจะอ่านเอกสารที่ @kkopczak ส่งมาเพื่อดูว่าฉันสามารถเข้าใจเรื่องนี้ได้ดีขึ้นหรือไม่
Wytrzymały Wiktor avatar
it flag
สวัสดี @เท็ด ตอนนี้หัวข้อเป็นอย่างไรบ้าง? ความคืบหน้าใด ๆ ?
Score:2
ธง ng

เพื่อชี้แจงฉันกำลังโพสต์คำตอบ Wiki ของชุมชน

เพื่อแก้ปัญหานี้ คุณได้ลบการตั้งค่าผู้ให้บริการระบบคลาวด์ openstack หลังจากนั้นด้วย kubespray คุณก็สามารถติดตั้งคลัสเตอร์ k8s ได้สำเร็จ

หากต้องการอ่านเกี่ยวกับใบรับรอง - ดังที่ฉันได้กล่าวไว้ก่อนหน้าเอกสารเกี่ยวกับการจัดการใบรับรองอยู่ภายใต้ ลิงค์นี้. ในการตรวจสอบว่าใบรับรองได้รับการจัดการจากภายนอกหรือไม่ คุณสามารถใช้คำสั่งต่อไปนี้:

kubeadm ตรวจสอบใบรับรองหมดอายุ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา