Score:2

วิธีจำกัดพื้นที่รูทดิสก์สำหรับพ็อด

ธง gb

ฉันติดตั้งพ็อดบนโหนดที่มีโวลุ่ม 100gb ฉันต้องการให้พ็อดมีพื้นที่ดิสก์รูท 50GB เท่านั้น

ดังนั้นฉันจึงมีการกำหนดค่าดังกล่าวใน การปรับใช้ yaml:

         ทรัพยากร:
            คำขอ:
              พื้นที่เก็บข้อมูลชั่วคราว: "50G"
            ขีด จำกัด :
              พื้นที่เก็บข้อมูลชั่วคราว: "70G"

แต่เมื่อฉันตรวจสอบคอนเทนเนอร์ (มีเพียง 1 คอนเทนเนอร์ในพ็อด) ฉันเห็นว่าพื้นที่ดิสก์ทั้งหมดบนโหนดถูกจัดสรรให้กับพ็อด อ่านได้จาก ที่นี่, ฉันคิด ที่เก็บข้อมูลชั่วคราว ควบคุมพื้นที่ดิสก์ที่จัดสรรให้กับพ็อด

#df -h
ขนาดระบบไฟล์ที่ใช้ Avail Use% Mounted on
ซ้อนทับ 100G 6.5G 94G 7% /
tmpfs 64M 0 64M 0% /เดฟ
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/nvme0n1p1 100G 6.5G 94G 7% /อื่นๆ/โฮสต์
shm 64M 0 64M 0% /dev/shm
tmpfs 1.9G 0 1.9G 0% /proc/acpi
tmpfs 1.9G 0 1.9G 0% /sys/เฟิร์มแวร์

มีความคิดอะไรที่ฉันทำผิด?

user3908406 avatar
gb flag
ฉันเพิ่งแก้ไขคำถาม ฉันหมายถึง 100GB ทั้งหมดถูกจัดสรรให้กับพ็อด แต่ฉันต้องการให้พ็อดมีดิสก์รูท 50GB เท่านั้น
Score:2
ธง cn

ความจริงที่ว่าพื้นที่ทั้งหมด (/) ปรากฏแก่คุณ ไม่ได้หมายความว่าพื้นที่นั้นว่าง/จัดสรรได้

คูเบเลต จะตรวจสอบการใช้พื้นที่เก็บข้อมูลชั่วคราวของคุณ พ็อด และดำเนินการตามนั้น (โดยไล่ที่ พ็อด ที่เกินขีดจำกัด):

การจัดการการใช้พื้นที่เก็บข้อมูลชั่วคราว

หาก kubelet จัดการพื้นที่เก็บข้อมูลชั่วคราวในเครื่องเป็นทรัพยากร kubelet จะวัดพื้นที่เก็บข้อมูลที่ใช้ใน:

  • ว่างเปล่าผบ ปริมาณ ยกเว้น tmpfs ว่างเปล่าผบ ปริมาณ
  • ไดเรกทอรีที่เก็บบันทึกระดับโหนด
  • ชั้นคอนเทนเนอร์ที่เขียนได้ หาก Pod ใช้พื้นที่เก็บข้อมูลชั่วคราวมากกว่าที่คุณอนุญาต kubelet จะตั้งค่าสัญญาณการไล่ออกที่กระตุ้นให้ Pod ออก

-- Kubernetes.io: เอกสาร: แนวคิด: การกำหนดค่า: จัดการคอนเทนเนอร์ทรัพยากร: การใช้พื้นที่เก็บข้อมูลชั่วคราวของทรัพยากร


โปรดดูตัวอย่างด้านล่าง:

สมมติว่าคุณมีดังต่อไปนี้ พ็อด รายการ:

api เวอร์ชัน: v1
ชนิด: ฝัก
ข้อมูลเมตา:
  ชื่อ: nginx
ข้อมูลจำเพาะ:
  ตู้คอนเทนเนอร์:
  - ชื่อ: nginx
    ภาพ: nginx
    ทรัพยากร:
      คำขอ:
        พื้นที่เก็บข้อมูลชั่วคราว: "2Gi"
      ขีด จำกัด :
        พื้นที่เก็บข้อมูลชั่วคราว: "4Gi"

ขีดจำกัดที่กำหนดค่าสำหรับพื้นที่เก็บข้อมูลชั่วคราวคือ 4Gi. หากต้องการตรวจสอบว่าจะเกิดอะไรขึ้น คุณสามารถเรียกใช้:

  • kubectl exec -it nginx -- fallocate -l 10GB /evict.img

ข้อสังเกต!

ผิดพลาด ใช้เพื่อจัดการพื้นที่ดิสก์ที่จัดสรรสำหรับไฟล์ ไม่ว่าจะเพื่อจัดสรรคืนหรือจัดสรรล่วงหน้า

-- Man7.org: Linux: หน้าคน: Fallocate

หลังจากนั้นสักครู่คุณควรเห็น:

  • $ kubectl อธิบายถึง pod nginx
ชื่อ: nginx
เนมสเปซ: ค่าเริ่มต้น
ลำดับความสำคัญ: 0
โหนด: XYZ
เวลาเริ่ม: จันทร์ที่ 05 กรกฎาคม 2021 09:47:08 +0200
ป้ายกำกับ: <ไม่มี>
คำอธิบายประกอบ: <ไม่มี>
สถานะ: ล้มเหลว # <-- สำคัญ!
เหตุผล: ไล่ออก # <-- สำคัญ!
ข้อความ: การใช้งานที่เก็บข้อมูลในเครื่องชั่วคราวของ Pod เกินขีดจำกัดรวมของคอนเทนเนอร์ 4Gi # <-- สำคัญ!
<-- ปกปิด --> 
    ขีดจำกัด:
      พื้นที่เก็บข้อมูลชั่วคราว: 4Gi # <-- สำคัญ!
    คำขอ:
      พื้นที่เก็บข้อมูลชั่วคราว: 2Gi
<-- ปกปิด --> 
เหตุการณ์:
  พิมพ์อายุเหตุผลจากข้อความ
  ---- ------ ---- ---- -------
  ตัวกำหนดตารางเวลาเริ่มต้น 32s ตามกำหนดเวลาปกติ กำหนดค่าเริ่มต้น/nginx ให้กับ XYZ สำเร็จแล้ว
  การดึงปกติ 31s kubelet การดึงอิมเมจ "nginx"
  ปกติดึง 31s kubelet ดึงภาพ "nginx" สำเร็จใน 360.098619ms
  ปกติสร้าง 31s kubelet สร้างคอนเทนเนอร์ nginx
  ปกติ 31 วินาทีที่เริ่มต้น kubelet คอนเทนเนอร์ที่เริ่มต้น nginx
  คำเตือน Evicted 3s kubelet Pod การใช้พื้นที่เก็บข้อมูลชั่วคราวในตัวเครื่องเกินขีดจำกัดรวมของคอนเทนเนอร์ 4Gi # <-- สำคัญ!
  Normal Killing 3s kubelet การหยุดคอนเทนเนอร์ nginx # <-- สำคัญ!
  • $ kubectl รับพ็อด
สถานะพร้อมชื่อเริ่มอายุใหม่
nginx 0/1 ถูกไล่ออก 0 9m7s

แหล่งข้อมูลเพิ่มเติม:

user3908406 avatar
gb flag
ขอบคุณ จะเกิดอะไรขึ้นถ้าฉันมี 3 พ็อด แต่ละอันขอพื้นที่เก็บข้อมูลชั่วคราว 40 กิกะไบต์ และ 2 โหนดที่แต่ละโหนดมีปริมาณ 100 กิกะไบต์ สมมติว่า CPU และหน่วยความจำหมด หากกังวล kubenetes จะกำหนดเวลา 2 พ็อดใน 1 โหนดและ 1 พ็อดในโหนดอื่นเพื่อหลีกเลี่ยง ขับไล่?
Dawid Kruk avatar
cn flag
@ user3908406 พูดสั้นๆ ว่าใช่ Kubernetes ตามคำขอจะรับประกันการจัดสรรทรัพยากรตามทรัพยากรที่จัดสรรได้และ "คำขอ" (หากไม่สามารถทำได้ "Pod" จะยังคงอยู่ในสถานะ "รอดำเนินการ") ในหัวข้อของพื้นที่เก็บข้อมูลชั่วคราวที่มีอยู่ ฉันจะตรวจสอบ: `$ kubectl อธิบายโหนด` ซึ่งคุณจะพบ `จำกัด `/` คำขอ ` ใน ` โหนด ' เฉพาะ นอกเหนือจากนั้น ฉันคิดว่า Kubernetes จะปรับสมดุล 'Pods' ทั่วทั้ง 'Nodes' เพื่อให้แน่ใจว่ามีความพร้อมใช้งานสูงในกรณีที่ 'Node' ล้มเหลว

โพสต์คำตอบ

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