Score:1

จะแก้ไขข้อผิดพลาด ContainerCreating ขณะปรับใช้ metallb ได้อย่างไร

ธง ke

เพื่อวัตถุประสงค์ในการทดสอบ ฉันได้ติดตั้ง ubuntu 21 บนเซิร์ฟเวอร์ vmware esxi ในเครื่องนั้น หมุน kubernetes โดยใช้คอนเทนเนอร์ lxc ตามนี้ ที่เก็บ LXC ถูกหมุนและทำงาน

adminuser@testing:~/Desktop$ รายการ lxc
+---------+--+-----------+-------- --------------------------------------- +-------------- -+-----------+
| ชื่อ | รัฐ | IPV4 | IPV6 | ประเภท | ภาพรวม |
+---------+--+-----------+-------- --------------------------------------- +-------------- -+-----------+
| กมมาสเตอร์ | วิ่ง | 10.8.0.217 (eth0) | fd42:666f:471d:3d53:216:3eff:fe54:dce6 (eth0) | ตู้คอนเทนเนอร์ | 0 |
+---------+--+-----------+-------- --------------------------------------- +-------------- -+-----------+
| kworker1 | วิ่ง | 10.8.0.91 (eth0) | fd42:666f:471d:3d53:216:3eff:fee4:480e (eth0) | ตู้คอนเทนเนอร์ | 0 |
+---------+--+-----------+-------- --------------------------------------- +-------------- -+-----------+
| kworker2 | วิ่ง | 10.8.0.124 (eth0) | fd42:666f:471d:3d53:216:3eff:fede:3c9d (eth0) | ตู้คอนเทนเนอร์ | 0 |
+---------+--------+------------

จากนั้นเริ่มปรับใช้ metallb บนคลัสเตอร์นี้โดยใช้ขั้นตอนที่กล่าวถึงในนี้ ลิงค์. และใช้ configmap นี้สำหรับการกำหนดเส้นทาง GNU นาโน 4.8 k8s-metallb-configmap.yaml

api เวอร์ชัน: v1
ประเภท: ConfigMap
ข้อมูลเมตา:
  เนมสเปซ: ระบบโลหะ
  ชื่อ: การกำหนดค่า
ข้อมูล:
  การกำหนดค่า: |
    กลุ่มที่อยู่:
    - ชื่อ: ค่าเริ่มต้น
      โปรโตคอล: Layer2
      ที่อยู่:
      - 10.8.0.240-10.8.0.250

แต่ฝักโลหะไม่ทำงาน

kubectl รับพ็อด -n ระบบ metallb
สถานะพร้อมชื่อเริ่มอายุใหม่
controller-6b78bff7d9-cxf2z 0/1 การสร้างคอนเทนเนอร์ 0 38m
ลำโพง-fpvjt 0/1 CreateContainerConfigError 0 38m
ลำโพง-mbz7b 0/1 CreateContainerConfigError 0 38m
ลำโพง-zgz4d 0/1 CreateContainerConfigError 0 38m

ฉันตรวจสอบบันทึก

kubectl อธิบาย pod controller-6b78bff7d9-cxf2z -n metallb-system
ชื่อ: controller-6b78bff7d9-cxf2z
Namespace: ระบบโลหะ
ลำดับความสำคัญ: 0
โหนด: kworker1/10.8.0.91
เวลาเริ่ม: พุธ 14 ก.ค. 2021 20:52:10 +0530
ป้ายกำกับ: app=metallb
                ส่วนประกอบ = ตัวควบคุม
                ฝักแม่แบบแฮช = 6b78bff7d9
คำอธิบายประกอบ: prometheus.io/port: 7472
                prometheus.io/scrape: จริง
สถานะ: รอดำเนินการ
ไอพี:             
IPs: <ไม่มี>
ควบคุมโดย: ReplicaSet/controller-6b78bff7d9
ตู้คอนเทนเนอร์:
  ตัวควบคุม:
    รหัสคอนเทนเนอร์:  
    รูปภาพ: quay.io/metallb/controller:v0.10.2
    รหัสรูปภาพ:      
    พอร์ต: 7472/TCP
    พอร์ตโฮสต์: 0/TCP
    อาร์กิส:
      --port=7472
      --config=config
    รัฐ: กำลังรอ
      เหตุผล: การสร้างคอนเทนเนอร์
    พร้อม: เท็จ
    เริ่มนับใหม่: 0
    สิ่งแวดล้อม:
      METALLB_ML_SECRET_NAME: รายชื่อสมาชิก
      METALLB_DEPLOYMENT: ตัวควบคุม
    ภูเขา:
      /var/run/secrets/kubernetes.io/serviceaccount จาก kube-api-access-j76kg (ro)
เงื่อนไข:
  พิมพ์สถานะ
  เริ่มต้น True 
  พร้อมเท็จ 
  ตู้คอนเทนเนอร์พร้อมเป็นเท็จ 
  PodScheduled จริง 
ปริมาณ:
  kube-api-access-j76kg:
    ประเภท: Projected (วอลุ่มที่มีข้อมูลที่ฉีดจากหลายแหล่ง)
    TokenExpirationSeconds: 3607
    ConfigMapName: kube-root-ca.crt
    ConfigMapOptional: <ไม่มี>
    DownwardAPI: จริง
คลาส QoS: BestEffort
ตัวเลือกโหนด: kubernetes.io/os=linux
ความคลาดเคลื่อน: node.kubernetes.io/not-ready:NoExecute op=มีอยู่เป็นเวลา 300 วินาที
                             node.kubernetes.io/unreachable:NoExecute op=มีอยู่เป็นเวลา 300 วินาที
เหตุการณ์:
  พิมพ์อายุเหตุผลจากข้อความ
  ---- ------ ---- ---- -------
  ตัวกำหนดตารางเวลาเริ่มต้น 32m ที่กำหนดเวลาไว้ปกติ กำหนดระบบ metallb/controller-6b78bff7d9-cxf2z ให้กับ kworker1 เรียบร้อยแล้ว
  คำเตือน FailedCreatePodSandBox 32m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "a8a6fa54086b9e65c42c8a0478dcac0769e8b278eeafe11eafb9ad5be40d48eb": open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 31m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "264ee423734139b712395c0570c888cff0b7b526e5154da0b7ccbdafe5bd9ba3": open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 31m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "1a3cb9e20a2a015adc7b4924ed21e0b50604ee9f9fae52170c03298dff0d6a78": open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 31m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "56dd906cdadc8ef50db3cc725d988090539a0818c2579738d575140cebbec71a": open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 31m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "8ddcfa704da9867c3a68030f0dc59f7c0d04bdc3a0b598c98a71aa8787585ca6": open /run/flannel/subnet.env: ไม่มีไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 30m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "50431bbc89188799562c48847be90e243bbf49a2c5401eb2219a0c4745cfcfb6": open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 30m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "da9ad1d418d3aded668c53f5e3f98ddfac14af638ed7e8142b904e12a99bfd77": open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 30m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "4dc6109c696ee410c58a0894ac70e5165a56bab99468ee42ffe88b2f5e33ef2f": open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 30m kubelet ไม่สามารถสร้าง pod sandbox: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "a8f1cad2ce9f8c278c07c924106a1b6b321a80124504737a574bceea983a0026": open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
  คำเตือน FailedCreatePodSandBox 2m (x131 over 29m) kubelet (รวมจากเหตุการณ์ที่คล้ายกัน): สร้าง pod sandbox ไม่สำเร็จ: ข้อผิดพลาด rpc: code = Unknown desc = ล้มเหลวในการตั้งค่าเครือข่ายสำหรับ sandbox "f5e93b893275afe5309eddd9686c0ecfeb01e91141259164082cb99c1e2c1902": opensub/ennet ไม่พบไฟล์หรือโฟลเดอร์ที่คุณค้นหา

และตู้ลำโพง.

kubectl อธิบาย pod speaker-zgz4d -n metallb-system
ชื่อ: ลำโพง-zgz4d
Namespace: ระบบโลหะ
ลำดับความสำคัญ: 0
โหนด: kmmaster/10.8.0.217
เวลาเริ่ม: พุธ 14 ก.ค. 2021 20:52:10 +0530
ป้ายกำกับ: app=metallb
              ส่วนประกอบ = ลำโพง
              ตัวควบคุมการแก้ไขแฮช = 7668c5cdf6
              pod-template-generation=1
คำอธิบายประกอบ: prometheus.io/port: 7472
              prometheus.io/scrape: จริง
สถานะ: รอดำเนินการ
ไอพี: 10.8.0.217
IP:
  ไอพี: 10.8.0.217
ควบคุมโดย: DaemonSet/speaker
ตู้คอนเทนเนอร์:
  ลำโพง:
    รหัสคอนเทนเนอร์:  
    รูปภาพ: quay.io/metallb/speaker:v0.10.2
    รหัสรูปภาพ:      
    พอร์ต: 7472/TCP, 7946/TCP, 7946/UDP
    พอร์ตโฮสต์: 7472/TCP, 7946/TCP, 7946/UDP
    อาร์กิส:
      --port=7472
      --config=config
    รัฐ: กำลังรอ
      เหตุผล: CreateContainerConfigError
    พร้อม: เท็จ
    เริ่มนับใหม่: 0
    สิ่งแวดล้อม:
      METALLB_NODE_NAME: (v1:spec.nodeName)
      METALLB_HOST: (v1:status.hostIP)
      METALLB_ML_BIND_ADDR: (v1:status.podIP)
      METALLB_ML_LABELS: app=metallb,component=speaker
      METALLB_ML_SECRET_KEY: <ตั้งค่าเป็นคีย์ 'secretkey' ใน 'memberlist' ที่เป็นความลับ> ทางเลือก: เท็จ
    ภูเขา:
      /var/run/secrets/kubernetes.io/serviceaccount จาก kube-api-access-l2gzm (ro)
เงื่อนไข:
  พิมพ์สถานะ
  เริ่มต้น True 
  พร้อมเท็จ 
  ตู้คอนเทนเนอร์พร้อมเป็นเท็จ 
  PodScheduled จริง 
ปริมาณ:
  kube-api-เข้าถึง-l2gzm:
    ประเภท: Projected (วอลุ่มที่มีข้อมูลที่ฉีดจากหลายแหล่ง)
    TokenExpirationSeconds: 3607
    ConfigMapName: kube-root-ca.crt
    ConfigMapOptional: <ไม่มี>
    DownwardAPI: จริง
คลาส QoS: BestEffort
ตัวเลือกโหนด: kubernetes.io/os=linux
ความคลาดเคลื่อน: node-role.kubernetes.io/master:NoSchedule op=Exists
                             node.kubernetes.io/disk-pressure:NoSchedule op=มีอยู่
                             node.kubernetes.io/memory-pressure:NoSchedule op=มีอยู่
                             node.kubernetes.io/network-unavailable:NoSchedule op=มีอยู่
                             node.kubernetes.io/not-ready:NoExecute op=มีอยู่
                             node.kubernetes.io/pid-pressure:NoSchedule op=มีอยู่
                             node.kubernetes.io/unreachable:NoExecute op=มีอยู่
                             node.kubernetes.io/unschedulable:NoSchedule op=มีอยู่
เหตุการณ์:
  พิมพ์อายุเหตุผลจากข้อความ
  ---- ------ ---- ---- -------
  ตัวกำหนดตารางเวลาปกติ 41m กำหนดการปกติ กำหนดระบบ metallb/speaker-zgz4d ให้กับ kmaster เรียบร้อยแล้ว
  คำเตือน FailedMount 41m kubelet MountVolume.SetUp ล้มเหลวสำหรับวอลุ่ม "kube-api-access-l2gzm": ไม่สามารถซิงค์แคช configmap: หมดเวลารอเงื่อนไข
  คำเตือนล้มเหลว 39m (x12 มากกว่า 41m) kubelet Error: ไม่พบ "memberlist" ที่เป็นความลับ
  Normal Pulled 78s (x185 over 41m) kubelet Container image "quay.io/metallb/speaker:v0.10.2" มีอยู่แล้วในเครื่อง

สถานะคอนเทนเนอร์หลังจากตั้งค่าจาก null เป็น 0

kube-apiserver-kmaster 1/1 วิ่ง 0 27m
kube-controller-manager-kmaster 1/1 วิ่ง 0 27m
kube-flannel-ds-7f5b7 0/1 CrashLoopBackOff 1 76 วินาที
kube-flannel-ds-bs9h5 0/1 ข้อผิดพลาด 1 72 วินาที
kube-flannel-ds-t9rpf 0/1 ข้อผิดพลาด 1 71 วินาที
kube-proxy-ht5fk 0/1 CrashLoopBackOff 3 76 วินาที
kube-proxy-ldhhc 0/1 CrashLoopBackOff 3 75 วินาที
kube-proxy-mwrkc 0/1 CrashLoopBackOff 3 76 วินาที
kube-scheduler-kmaster 1/1 กำลังทำงาน 0 2
p10l avatar
us flag
คุณได้ติดตั้ง addon ของเครือข่ายหรือไม่? ถ้าเป็นเช่นนั้นอันไหน? ข้อผิดพลาด `open /run/flannel/subnet.env: ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว' แสดงว่าคุณควรติดตั้ง [flannel](https://github.com/flannel-io/flannel)
uday avatar
ke flag
ฉันทำตามนี้ https://github.com/justmeandopensource/kubernetes/tree/master/lxd-provisioning มันมีคำสั่งสักหลาด คุณสามารถลองตรวจสอบได้ ปัญหากำลังมาในเครื่อง esxi ubuntu, lxd container
p10l avatar
us flag
ใช่ฉันพลาดอย่างใด ผลลัพธ์ของ `kubectl รับโหนด 'หลังจากดำเนินการในโหนดหลักคืออะไร (`lxc exec kmmaster ทุบตี`)
p10l avatar
us flag
นอกจากนี้ หากคุณสามารถรวมผลลัพธ์ของ `kubectl get pods -n kube-system` เป็นไปได้ว่าฝักสักหลาดจะพัง
uday avatar
ke flag
lxc exec kmaster bash -- กำลังเปิด bash shell ของ kmaster ที่กำลังทำงานอยู่
Score:0
ธง us

ฉันไม่สามารถเข้าถึงชุดเครื่องมือ VMWare ได้ แต่ฉันพยายามจำลองการตั้งค่าของคุณให้ใกล้เคียงที่สุด

ในกรณีของฉัน kube-proxy-* และ kube-สักหลาด-ds-* พ็อดอยู่ใน CrashLoopBackOff สถานะ. ล้มเหลวด้วย

1 main.go:251] ไม่สามารถสร้าง SubnetManager: เกิดข้อผิดพลาดในการเรียกข้อมูลจำเพาะของพ็อดสำหรับ 'kube-system/kube-flannel-ds-7tg89': รับ "https://10.96.0.1:443/api/v1/namespaces/kube -system/pods/kube-flannel-ds-7tg89": หมุน tcp 10.96.0.1:443: หมดเวลา i/o
1 server.go:489] เปิด /proc/sys/net/netfilter/nf_conntrack_max: ปฏิเสธการอนุญาต

สิ่งนี้ทำให้พ็อดของ Metallb ไม่สามารถเริ่มต้นได้


เพื่อให้มันใช้งานได้ฉันแก้ไข kube-พร็อกซี configMap

# kubectl แก้ไข configmap/kube-proxy -n kube-system

และเปลี่ยนไป

maxPerCore: null

ถึง

สูงสุดต่อคอร์: 0

แล้วลบทิ้งทั้งหมด kube-พร็อกซี และ kube-สักหลาด-ds พ็อดซึ่ง DaemonSet สร้างขึ้นใหม่ทันที

# kubectl รับ pods -n kube-system
สถานะพร้อมชื่อเริ่มอายุใหม่
coredns-558bd4d5db-h5qsh 1/1 วิ่ง 0 49m
coredns-558bd4d5db-m86w5 1/1 วิ่ง 0 49m
etcd-kmaster 1/1 วิ่ง 0 49m
kube-apiserver-kmaster 1/1 วิ่ง 0 49m
kube-controller-manager-kmaster 1/1 วิ่ง 0 49m
kube-flannel-ds-87pnx 1/1 วิ่ง 0 11ม
kube-flannel-ds-jmjtc 1/1 วิ่ง 0 11m
kube-flannel-ds-rxbdm 1/1 วิ่ง 0 11m
kube-proxy-dcvjs 1/1 วิ่ง 0 12m
kube-proxy-h628j 1/1 วิ่ง 0 12m
kube-proxy-w8jxn 1/1 วิ่ง 0 12m
kube-scheduler-kmaster 1/1 วิ่ง 0 49m

จากนั้นลบพ็อดของ Metallb ทั้งหมดซึ่ง DeamonSet สร้างขึ้นใหม่เช่นกัน

root@kmaster:~# kubectl รับพ็อด -n ระบบ metallb
สถานะพร้อมชื่อเริ่มอายุใหม่
controller-6b78bff7d9-btwlr 1/1 วิ่ง 0 12m
ลำโพง-kr8lv 1/1 วิ่ง 0 12m
speaker-sqk4d 1/1 วิ่ง 0 12m
speaker-wm5r8 1/1 วิ่ง 0 12m

ดูเหมือนว่าตอนนี้ทุกอย่างทำงานได้


ฉันยังสร้าง /run/flannel/subnet.env ไฟล์ด้วยตนเองพร้อมเนื้อหา:

FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=จริง

แต่อาจไม่จำเป็น

uday avatar
ke flag
ฉันทำตามที่คุณแนะนำแล้ว แต่คอนเทนเนอร์ผ้าสักหลาดยังพังอยู่ หากไม่มี esxi คุณสามารถลองใช้ vmware workstation ได้เช่นกัน
uday avatar
ke flag
kube-flannel-ds-7f5b7 0/1 CrashLoopBackOff 1 76 วินาที kube-flannel-ds-bs9h5 0/1 ข้อผิดพลาด 1 72 วินาที kube-flannel-ds-t9rpf 0/1 ข้อผิดพลาด 1 71 วินาที kube-proxy-ht5fk 0/1 CrashLoopBackOff 3 76 วินาที kube-proxy-ldhhc 0/1 CrashLoopBackOff 3 75 วินาที kube-proxy-mwrkc 0/1 CrashLoopBackOff 3 76 วินาที kube-scheduler-kmaster 1/1 กำลังทำงาน 0 2
p10l avatar
us flag
อืม โปรดรวมเอาต์พุตของ `kubectl logs` ของพ็อดเหล่านั้นในโพสต์ต้นฉบับของคุณ
Score:0
ธง br

ฉันแก้ไขได้โดยสร้างชื่อรหัสลับที่ถูกต้องด้วยตนเอง รายชื่อสมาชิก แทน รายชื่อสมาชิกของ metallb ดังต่อไปนี้:

kubectl สร้างรายการสมาชิกทั่วไปที่เป็นความลับ -n metallb-system --from-literal=secretkey="$(openssl rand -base64 128)"

โพสต์คำตอบ

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