Score:0

บริการ kubelet ไม่ทำงาน (ผันผวน) ในโหนดหลักของ Kubernetes

ธง gb

ฉันพยายามสร้าง Kubernetes Cluster โดยใช้ kubeadm ฉันได้หมุนเซิร์ฟเวอร์ Ubuntu 18.04 ติดตั้งนักเทียบท่า (ตรวจสอบให้แน่ใจว่า docker.service กำลังทำงานอยู่) ติดตั้ง kubeadm kubelet และ kubectl

ต่อไปนี้เป็นขั้นตอนที่ฉันทำ:

sudo apt-get อัปเดต
sudo apt-get install docker.io -y
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

sudo hostnamectl set-hostname มาสเตอร์โหนด
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

ครั้งหนึ่งหลังจากที่ฉันวิ่ง sudo kubeadm init --pod-network-cidr=10.244.0.0/16ฉันได้รับข้อผิดพลาดต่อไปนี้:

root@ip-172-31-10-50:/home/ubuntu# sudo kubeadm init --pod-network-cidr=192.168.0.0/16
[init] ใช้เวอร์ชัน Kubernetes: v1.23.1
[preflight] การตรวจสอบก่อนการบิน
[preflight] การดึงรูปภาพที่จำเป็นสำหรับการตั้งค่าคลัสเตอร์ Kubernetes
[preflight] อาจใช้เวลาหนึ่งหรือสองนาที ขึ้นอยู่กับความเร็วของการเชื่อมต่ออินเทอร์เน็ตของคุณ
[preflight] คุณยังสามารถดำเนินการนี้ล่วงหน้าได้โดยใช้ 'kubeadm config images pull'
[ใบรับรอง] การใช้โฟลเดอร์ certificateDir "/etc/kubernetes/pki"
[ใบรับรอง] การใช้ผู้ออกใบรับรอง ca ที่มีอยู่
[certs] ใช้ใบรับรอง apiserver และคีย์บนดิสก์ที่มีอยู่
[ใบรับรอง] การใช้ใบรับรองและคีย์ไคลเอนต์ apiserver-kubelet ที่มีอยู่ในดิสก์
[ใบรับรอง] การใช้ผู้ออกใบรับรอง front-proxy-ca ที่มีอยู่
[certs] การใช้ใบรับรองและคีย์ของ front-proxy-client ที่มีอยู่ในดิสก์
[ใบรับรอง] การใช้ผู้ออกใบรับรอง etcd/ca ที่มีอยู่
[certs] ใช้ใบรับรอง etcd/server ที่มีอยู่และคีย์บนดิสก์
[ใบรับรอง] การใช้ใบรับรอง etcd/peer ที่มีอยู่และคีย์บนดิสก์
[ใบรับรอง] การใช้ใบรับรองไคลเอนต์ etcd/healthcheck ที่มีอยู่และคีย์บนดิสก์
[certs] การใช้ใบรับรองไคลเอนต์ apiserver-etcd-client ที่มีอยู่และคีย์บนดิสก์
[ใบรับรอง] โดยใช้คีย์ "sa" ที่มีอยู่
[kubeconfig] การใช้โฟลเดอร์ kubeconfig "/etc/kubernetes"
[kubeconfig] ใช้ไฟล์ kubeconfig ที่มีอยู่: "/etc/kubernetes/admin.conf"
[kubeconfig] ใช้ไฟล์ kubeconfig ที่มีอยู่: "/etc/kubernetes/kubelet.conf"
[kubeconfig] ใช้ไฟล์ kubeconfig ที่มีอยู่: "/etc/kubernetes/controller-manager.conf"
[kubeconfig] ใช้ไฟล์ kubeconfig ที่มีอยู่: "/etc/kubernetes/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-check] ดูเหมือนว่า kubelet ไม่ทำงานหรือมีสุขภาพดี
[kubelet-check] การเรียก HTTP เท่ากับ 'curl -sSL http://localhost:10248/healthz' ล้มเหลวโดยมีข้อผิดพลาด: รับ "http://localhost:10248/healthz": หมุน tcp 127.0.0.1:10248: เชื่อมต่อ : การเชื่อมต่อถูกปฏิเสธ

ฉันพยายามวิ่ง kubectl init --pod-network-cidr โดยใช้ CIDR ของสักหลาด (10.244.0.0/16) และนอกจากนี้ยังมี CIDR ของ Calico (192.168.0.0/16). อย่างไรก็ตาม ฉันได้รับข้อผิดพลาดเดียวกัน

นอกจากนี้ฉันสังเกตเห็นว่าสถานะของ คูเบเลต ในอินสแตนซ์ EC2 ของฉันมีความผันผวน เมื่อฉันวิ่ง systemctl สถานะ kubelet.serviceบางครั้งก็ไม่ทำงาน และบางครั้ง Kubelet ก็ทำงานอยู่ มันเกิดขึ้นโดยอัตโนมัติ คิดว่านี่คือสิ่งที่ล้มเหลว kubectl เริ่มต้น ตั้งแต่ kubelet ตรวจสอบ พูดอย่างชัดเจนว่า: "ดูเหมือนว่า kubelet ไม่ทำงานหรือมีสุขภาพดี"

หลังจากวิ่ง systemctl สถานะ kubelet.service, ข้อผิดพลาด:

root@ip-172-31-10-50:/home/ubuntu# สถานะ systemctl kubelet.service
â kubelet.service - kubelet: ตัวแทนโหนด Kubernetes
โหลดแล้ว: โหลดแล้ว (/lib/systemd/system/kubelet.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน)
ดรอปอิน: /etc/systemd/system/kubelet.service.d
ââ10-kubeadm.conf
ใช้งานอยู่: กำลังเปิดใช้งาน (รีสตาร์ทอัตโนมัติ) (ผลลัพธ์: exit-code) ตั้งแต่วันพุธที่ 12-2021-2021 17:52:35 UTC; 3 วินาทีที่แล้ว
เอกสาร: https://kubernetes.io/docs/home/
กระบวนการ: 22901 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (รหัส=ออก สถานะ=1/ล้มเหลว)
PID หลัก: 22901 (รหัส=ออก สถานะ=1/ล้มเหลว)

และเมื่อฉันวิ่งต่อไป systemctl สถานะ kubelet.serviceหลังจากนั้นไม่กี่วินาที kubectl.service ก็ดูเหมือนจะทำงานอยู่ และหลังจากนั้นไม่กี่วินาที มันก็ล้มเหลวอีกครั้ง

...ข้าม...
â kubelet.service - kubelet: ตัวแทนโหนด Kubernetes
โหลดแล้ว: โหลดแล้ว (/lib/systemd/system/kubelet.service; เปิดใช้งาน; การตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน)
ดรอปอิน: /etc/systemd/system/kubelet.service.d
ââ10-kubeadm.conf
ใช้งานอยู่: ใช้งานอยู่ (ทำงาน) ตั้งแต่พฤ. 2021-12-30 18:50:49 UTC; 125ms ที่แล้ว
เอกสาร: https://kubernetes.io/docs/home/
PID หลัก: 12895 (kubelet)
งาน: 9 (จำกัด: 4686)
CGroup: /system.slice/kubelet.service
ââ12895 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf > --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib /kubelet/conf

ฉันไม่แน่ใจว่าทำไม kubelet ถึงผันผวนด้วยวิธีนี้
ไม่มีใครรู้วิธีการที่จะแก้ไขปัญหานี้?

jp flag
ตรวจสอบบันทึกสำหรับบันทึก `kubelet`
arjunbnair avatar
gb flag
1. ไม่สามารถเรียกใช้ kubelet" err="ล้มเหลวในการเรียกใช้ Kubelet: misconfiguration: ไดรเวอร์ kubelet cgroup: \"systemd\" แตกต่างจากไดรเวอร์ docker cgroup: \"cgroupfs\"" 2. kubelet.service: ออกจากกระบวนการหลักแล้ว, รหัส=ออกแล้ว, สถานะ=1/ล้มเหลว 3. kubelet.service: ล้มเหลวด้วยผลลัพธ์ 'exit-code' 4. kubelet.service: หมดเวลาหยุดให้บริการแล้ว กำหนดเวลาเริ่มต้นใหม่ 5. kubelet.service: งานรีสตาร์ทตามกำหนดเวลา ตัวนับการรีสตาร์ทอยู่ที่ 45 6. หยุด kubelet: ตัวแทนโหนด Kubernetes
Score:1
ธง jp

บันทึกข้อผิดพลาดมีคำตอบของคุณ:

ไม่สามารถเรียกใช้ Kubelet: การกำหนดค่าผิดพลาด: ไดรเวอร์ kubelet cgroup: "systemd" แตกต่างจากไดรเวอร์ docker cgroup: "cgroupfs""

ดูเอกสาร Kubernetes เกี่ยวกับวิธีกำหนดค่าไดรเวอร์ cgroup

arjunbnair avatar
gb flag
ขอบคุณ. สิ่งนี้ช่วยได้
Score:0
ธง gb

ฉันสามารถแก้ไขปัญหา kubelet.service ได้โดยการแก้ไข /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 ทำงานอยู่เสมอ

ขอบคุณ!

โพสต์คำตอบ

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