Score:0

ตั้งค่า RuntimeHandler เริ่มต้นของ Kubernetes อยู่ที่ไหน

ธง mx

ฉันกำลังทดสอบคลาสรันไทม์ของ K8 และเปิดใช้พ็อดบางส่วนได้สำเร็จโดยใช้ containerd & gVisor

ในการทำเช่นนี้ฉันเปลี่ยนไป /etc/containerd/config.toml ด้านล่างจากนั้นเริ่มบริการใหม่

disabled_plugins = ["รีสตาร์ท"]
[plugins.linux]
  shim_debug = จริง
[plugins.cri.containerd.runtimes.runsc]
  runtime_type = "io.containerd.runsc.v1"

สิ่งนี้จะลบ default_runtime_name = "เรียกใช้" config จาก config เริ่มต้นที่อยู่ใน /etc/containerd/config.toml (ซึ่งเดิมสร้างขึ้นโดยใช้ ค่าเริ่มต้นของคอนฟิกูเรชันคอนเทนเนอร์ ก่อนสร้างคลัสเตอร์ด้วย kubeadm)

จากนั้นฉันสร้างคลาสรันไทม์เพื่อใช้ runc และใช้สิ่งนี้ในรายการพ็อดของฉันด้วย runtimeClassName: gvisor

apiVersion: node.k8s.io/v1beta1
ประเภท: RuntimeClass
ข้อมูลเมตา:
  ชื่อ: gvisor
ตัวจัดการ: runc

จากนั้นจึงเริ่มการทำงานของพ็อดเพื่อใช้คลาสรันไทม์ใหม่

api เวอร์ชัน: v1
ชนิด: ฝัก
ข้อมูลเมตา:
  ชื่อ: gvisor-pod
ข้อมูลจำเพาะ:
  runtimeClassName: gvisor
  ตู้คอนเทนเนอร์:
  - ชื่อ: nginx
    ภาพ: nginx

แต่แน่นอนว่าถ้าผมทำแบบปกติ kubectl เรียกใช้ pod1 --image nginx (กล่าวคือไม่ระบุ runtimeClassName: gvisor ในรายการเพื่อให้ใช้คลาสรันไทม์ใหม่ของฉัน) มันยังคงเริ่มต้นได้ดีโดยใช้ runc shim

ต่อ เอกสาร

หากไม่ได้ระบุ runtimeClassName ระบบจะใช้ RuntimeHandler เริ่มต้น 
ซึ่งเทียบเท่ากับลักษณะการทำงานเมื่อปิดใช้งานคุณลักษณะ RuntimeClass

คำถามของฉันคือถ้าไม่มี default_runtime_name = "เรียกใช้" ในไฟล์คอนฟิกคอนเทนเนอร์ kubelet/containerd ยังรู้ได้อย่างไรว่าจะใช้ runc เมื่อไม่ได้ระบุคลาส/ตัวจัดการรันไทม์ที่กำหนดเองในรายการพ็อด คือนี่คือที่ไหน RuntimeHandler เริ่มต้น กำหนดค่า?

โพสต์คำตอบ

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