ฉันพยายามสร้าง Kubernetes Cluster โดยใช้ kubeadm ฉันได้หมุนเซิร์ฟเวอร์ Ubuntu 18.04 ติดตั้งนักเทียบท่า (ตรวจสอบให้แน่ใจว่า docker.service กำลังทำงานอยู่) ติดตั้ง kubeadm kubelet และ kubectl
ต่อไปนี้เป็นขั้นตอนที่ฉันทำ:
sudo apt-get อัปเดต
sudo apt ติดตั้ง apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key เพิ่ม -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu `lsb_release -cs` ทดสอบ"
อัปเดต sudo apt
sudo apt ติดตั้ง docker-ce
sudo systemctl เปิดใช้งานนักเทียบท่า
sudo systemctl เริ่มนักเทียบท่า
ขด -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key เพิ่ม
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get install kubeadm kubelet kubectl -y
sudo apt-mark ถือ kubeadm kubelet kubectl
รุ่น kubeadm
แลกเปลี่ยน âa
นอกจากนี้ เพื่อกำหนดค่าไดรเวอร์ Docker cgroup ฉันได้แก้ไขแล้ว /etc/systemd/system/kubelet.service.d/10-kubeadm.conf. ภายในไฟล์ฉันเพิ่ม สภาพแวดล้อม = "KUBELET_CGROUP_ARGS = --cgroup-driver = systemd"
และแสดงความคิดเห็น สภาพแวดล้อม = "KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
.
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf สำหรับการอ้างอิง:
# หมายเหตุ: dropin นี้ใช้ได้กับ kubeadm และ kubelet v1.11+ เท่านั้น
[บริการ]
สภาพแวดล้อม = "KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
#Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
สภาพแวดล้อม = "KUBELET_CGROUP_ARGS = --cgroup-driver = systemd"
# นี่คือไฟล์ที่ "kubeadm init" และ "kubeadm join" สร้างขึ้นที่รันไทม์ เติมตัวแปร KUBELET_KUBEADM_ARGS แบบไดนามิก
EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
# นี่คือไฟล์ที่ผู้ใช้สามารถใช้เพื่อแทนที่ kubelet args เป็นทางเลือกสุดท้าย ผู้ใช้ควรใช้
# วัตถุ .NodeRegistration.KubeletExtraArgs ในไฟล์การกำหนดค่าแทน KUBELET_EXTRA_ARGS ควรมาจากไฟล์นี้
EnvironmentFile=-/etc/default/kubelet
ExecStart=
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
หลังจากนี้ฉันวิ่ง: systemctl daemon-โหลดซ้ำ
และ systemctl รีสตาร์ท kubelet
. kubelet.service ทำงานได้ดี
ต่อไปฉันวิ่ง sudo kubeadm init --pod-network-cidr=10.244.0.0/16
และได้รับข้อผิดพลาดดังต่อไปนี้:
root@ip-172-31-1-238:/home/ubuntu# kubeadm init --pod-network-cidr=10.244.0.0/16
[init] ใช้เวอร์ชัน Kubernetes: v1.23.1
[preflight] การตรวจสอบก่อนการบิน
[preflight] การดึงรูปภาพที่จำเป็นสำหรับการตั้งค่าคลัสเตอร์ Kubernetes
[preflight] อาจใช้เวลาหนึ่งหรือสองนาที ขึ้นอยู่กับความเร็วของการเชื่อมต่ออินเทอร์เน็ตของคุณ
[preflight] คุณยังสามารถดำเนินการนี้ล่วงหน้าได้โดยใช้ 'kubeadm config images pull'
[ใบรับรอง] การใช้โฟลเดอร์ certificateDir "/etc/kubernetes/pki"
[certs] กำลังสร้างใบรับรองและคีย์ "ca"
[certs] กำลังสร้างใบรับรองและคีย์ "apiserver"
[certs] apiserver ที่ให้บริการใบรับรองได้รับการลงชื่อสำหรับชื่อ DNS [ip-172-31-1-238 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] และ IPs [10.96.0.1 172.31.1.238]
[certs] กำลังสร้างใบรับรองและคีย์ "apiserver-kubelet-client"
[certs] กำลังสร้างใบรับรองและคีย์ "front-proxy-ca"
[certs] กำลังสร้างใบรับรองและคีย์ "front-proxy-client"
[certs] กำลังสร้างใบรับรองและคีย์ "etcd/ca"
[certs] กำลังสร้างใบรับรองและคีย์ "etcd/server"
[certs] ใบรับรองการให้บริการ etcd/server ได้รับการลงชื่อสำหรับชื่อ DNS [ip-172-31-1-238 localhost] และ IPs [172.31.1.238 127.0.0.1 ::1]
[certs] กำลังสร้างใบรับรองและคีย์ "etcd/peer"
[certs] ใบรับรองการให้บริการ etcd/peer ได้รับการลงชื่อสำหรับชื่อ DNS [ip-172-31-1-238 localhost] และ IPs [172.31.1.238 127.0.0.1 ::1]
[certs] กำลังสร้างใบรับรองและคีย์ "etcd/healthcheck-client"
[certs] กำลังสร้างใบรับรองและคีย์ "apiserver-etcd-client"
[ใบรับรอง] กำลังสร้างคีย์ "sa" และคีย์สาธารณะ
[kubeconfig] การใช้โฟลเดอร์ kubeconfig "/etc/kubernetes"
[kubeconfig] กำลังเขียนไฟล์ "admin.conf" kubeconfig
[kubeconfig] กำลังเขียนไฟล์ "kubelet.conf" kubeconfig
[kubeconfig] กำลังเขียนไฟล์ "controller-manager.conf" kubeconfig
[kubeconfig] กำลังเขียนไฟล์ kubeconfig "scheduler.conf"
[kubelet-start] การเขียนไฟล์สภาพแวดล้อม kubelet พร้อมแฟล็กไปยังไฟล์ "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] กำลังเขียนการกำหนดค่า kubelet ไปยังไฟล์ "/var/lib/kubelet/config.yaml"
[kubelet-start] การเริ่มต้น kubelet
[ระนาบควบคุม] การใช้โฟลเดอร์รายการ "/etc/kubernetes/manifests"
[control-plane] การสร้างรายการ Pod แบบคงที่สำหรับ "kube-apiserver"
[control-plane] การสร้างรายการ Pod แบบคงที่สำหรับ "kube-controller-manager"
[control-plane] การสร้างรายการ Pod แบบคงที่สำหรับ "kube-scheduler"
[etcd] การสร้างรายการ Pod แบบคงที่สำหรับ etcd ในเครื่องใน "/etc/kubernetes/manifests"
[wait-control-plane] กำลังรอให้ kubelet บูตเครื่องควบคุมเป็น Pods แบบคงที่จากไดเร็กทอรี "/etc/kubernetes/manifests" อาจใช้เวลาถึง 4m0 วินาที
[kubelet-check] หมดเวลาเริ่มต้น 40 วินาที
ขออภัย เกิดข้อผิดพลาด:
หมดเวลารอตามเงื่อนไข
ข้อผิดพลาดนี้น่าจะเกิดจาก:
- คูเบเลตไม่ทำงาน
- kubelet ไม่แข็งแรงเนื่องจากการกำหนดค่าโหนดผิดพลาดในทางใดทางหนึ่ง (ปิดใช้งาน cgroups ที่จำเป็น)
หากคุณอยู่บนระบบที่ขับเคลื่อนด้วย systemd คุณสามารถลองแก้ไขข้อผิดพลาดด้วยคำสั่งต่อไปนี้:
- 'สถานะ systemctl kubelet'
- 'วารสาร -xeu kubelet'
นอกจากนี้ ส่วนประกอบของระนาบควบคุมอาจขัดข้องหรือออกเมื่อเริ่มทำงานโดยคอนเทนเนอร์รันไทม์
หากต้องการแก้ปัญหา ให้แสดงรายการคอนเทนเนอร์ทั้งหมดโดยใช้ CLI รันไทม์ของคอนเทนเนอร์ที่คุณต้องการ
ต่อไปนี้คือตัวอย่างวิธีแสดงรายการคอนเทนเนอร์ Kubernetes ทั้งหมดที่ทำงานในนักเทียบท่า:
- 'นักเทียบท่า ps -a | เกรปคูเบะ | grep -v หยุดชั่วคราว'
เมื่อคุณพบคอนเทนเนอร์ที่ล้มเหลวแล้ว คุณสามารถตรวจสอบบันทึกด้วย:
- 'บันทึกนักเทียบท่า CONTAINERID'
หลังจากวิ่ง systemctl สถานะ kubelet.service
ดูเหมือนว่า kubelet ทำงานได้ดี
อย่างไรก็ตามหลังจากวิ่ง วารสาร ctl -xeu kubelet
ฉันได้รับบันทึกต่อไปนี้:
kubelet.go:2347] "เครือข่ายรันไทม์คอนเทนเนอร์ไม่พร้อม" networkReady="NetworkReady=false เหตุผล: ข้อความ NetworkPluginNotReady: นักเทียบท่า: ปลั๊กอินเครือข่ายไม่พร้อม: cni config ไม่ได้กำหนดค่าเริ่มต้น"
kubelet.go:2422] "ข้อผิดพลาดในการรับโหนด" err="node "ip-172-31-1-238" not found"
kubelet.go:2422] "ข้อผิดพลาดในการรับโหนด" err="node "ip-172-31-1-238" not found"
controller.go:144] ล้มเหลวในการตรวจสอบการเช่าที่มีอยู่ จะลองอีกครั้งใน 7 วินาที ข้อผิดพลาด: รับ "https://172.31.1.238:6443/apis/coordination.k8s.io/v1/namespaces/kube-node-lease/lease /ip-172-31-1-238?timeout=10s": กด tcp 172.31.1.238:6443: เชื่อมต่อ: การเชื่อมต่อถูกปฏิเสธ
kubelet.go:2422] "ข้อผิดพลาดในการรับโหนด" err="node "ip-172-31-1-238" not found"
kubelet.go:2422] "ข้อผิดพลาดในการรับโหนด" err="node "ip-172-31-1-238" not found"
kubelet_node_status.go:70] "กำลังพยายามลงทะเบียนโหนด" node="ip-172-31-1-238"
kubelet_node_status.go:92] "ไม่สามารถลงทะเบียนโหนดกับเซิร์ฟเวอร์ API" err="Post "https://172.31.1.238:6443/api/v1/nodes": หมุน tcp 172.31.1.238:6443: เชื่อมต่อ: การเชื่อมต่อถูกปฏิเสธ" โหนด = "ip-172-31-1-238"
kubelet.go:2422] "ข้อผิดพลาดในการรับโหนด" err="node "ip-172-31-1-238" not found"
รุ่น:
นักเทียบท่า: นักเทียบท่าเวอร์ชัน 20.10.12 สร้าง e91ed57
Kubeadm: {หลัก:"1", รอง:"23", GitVersion:"v1.23.1", GitCommit:"86ec240af8cbd1b60bcc4c03c20da9b98005b92e", GitTreeState:"สะอาด", BuildDate:"2021-12-16T11:39:51Z", GoVersion:" go1.17.5", คอมไพเลอร์:"gc", แพลตฟอร์ม:"linux/amd64"}
ไม่แน่ใจว่านี่เป็นปัญหาการเชื่อมต่อระหว่าง Kube Api Server และ Kubelet หรือไม่
ไม่มีใครรู้วิธีการที่จะแก้ไขปัญหานี้?