Score:1

Kubernetes: พ็อดไม่สามารถติด PVC ได้ แม้ว่าตัวหลังจะดูเหมือนถูกผูกมัดกับ PV อย่างถูกต้องก็ตาม

ธง ru

สวัสดี

ฉันประสบปัญหาขณะพยายามปรับใช้พ็อดที่ได้รับการกำหนดค่าให้ใช้ Persistent Volumeการติดตั้งของฉันโฮสต์บน Hetzner Cloud และ Kubernetes ได้รับการกำหนดค่าตามคำแนะนำที่มีให้โดยผู้ให้บริการ การกำหนดค่าพื้นฐานดูเหมือนจะใช้ได้เนื่องจากฉันสามารถปรับใช้เช่น Portainer จากหนึ่งในรายการที่ให้มา: ติดตั้ง PVC อย่างถูกต้องและวิ่ง เนื่องจากการกำหนดค่าเริ่มต้นไม่ได้สร้างที่เก็บข้อมูลถาวร ทุกครั้งที่ฉันยกเลิกการปรับใช้และปรับใช้ Portainer ใหม่ ข้อมูลทั้งหมดจะสูญหาย

ดังนั้นฉันจึงดำเนินการสร้าง PersistentVolumeแต่ขั้นตอนสุดท้ายไม่ได้ผล ฉันไม่สามารถบอกได้ว่าปัญหาเป็นปัญหาทั่วไปของ Kubernetes หรือเกิดจากการผสานรวมกับ Hetzner แต่ฉันคิดว่ามันสมเหตุสมผลที่จะตรวจสอบสมมติฐานแรกก่อน ดังนั้นฉันจึงถามที่นี่ก่อนที่จะไปที่ฟอรัม Hetzner

ขั้นตอน:

  1. ฉันสร้างไดรฟ์ข้อมูลโดยใช้อินเทอร์เฟซผู้ใช้ Hetzner Cloud

  2. จากนั้นฉันก็ปรับใช้ PV:

    api เวอร์ชัน: v1
    ชนิด: เนมสเปซ
    ข้อมูลเมตา:
      ชื่อ: คนขนของ
    ---
    api เวอร์ชัน: v1
    ชนิด: PersistentVolume
    ข้อมูลเมตา:
      ชื่อ: pv-portainer-test
      เนมสเปซ: porttainer
      ป้ายกำกับ:
        สภาพแวดล้อม: ทดสอบ
    ข้อมูลจำเพาะ:
      storageClassName: การทดสอบ porttainer
      โหมดการเข้าถึง:
        - ReadWriteOnce
      ความจุ:
        ความจุ: 10Gi
      PersistentVolumeReclaimPolicy: เก็บรักษา
      VolumeMode: ระบบไฟล์
      ซีเอสไอ:
        ไดรเวอร์: csi.hetzner.cloud
        fsประเภท: ext4
        VolumeHandle: "pv_id"

pv_id เป็นรหัสไดรฟ์ข้อมูลที่ฉันเห็นได้จากอินเทอร์เฟซผู้ใช้ของ Hetzner

ได้ดูพีวีด้วย kubelet รับ pv -A:

NAMESPACE NAME ความจุ โหมดการเข้าถึง เรียกคืนสถานะนโยบาย การอ้างสิทธิ์ที่เก็บข้อมูลอายุเหตุผลของชั้นเรียน
            การทดสอบปริมาณคงที่ / pv-portainer-test 10Gi RWO รักษาการทดสอบ porttainer-test ที่ใช้ได้ 71 วินาที

โปรดทราบว่าเนมสเปซยังไม่ได้กำหนด... แต่ฉันคิดว่านี่ไม่ใช่ปัญหาร้ายแรง บางทีฉันอาจจะผิด

  1. ฉันปรับใช้ Portainer จาก ที่นี่ และแพตช์ต่อไปนี้â
    ประเภท: PersistentVolumeClaim
    api เวอร์ชัน: v1
    ข้อมูลเมตา:
      ชื่อ: คนขนของ
      เนมสเปซ: porttainer
    ข้อมูลจำเพาะ:
      storageClassName: การทดสอบ porttainer
      โหมดการเข้าถึง:
        - ReadWriteOnce
      ทรัพยากร:
        คำขอ:
          ที่เก็บข้อมูล: "10Gi"

ตอนนี้กับ kubectl รับ pvc,pv -A ฉันเห็นว่า PVC ถูกผูกไว้กับ PV:

âNAMESPACE NAME สถานะ VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
portainer ถาวรvolumeclaim/portainer ขอบเขต pv-portainer-test 10Gi RWO portainer-test 16m

NAMESPACE NAME ความจุ โหมดการเข้าถึง เรียกคืนสถานะนโยบาย การอ้างสิทธิ์ที่เก็บข้อมูลอายุเหตุผลของชั้นเรียน
            peristentvolume/pv-portainer-test 10Gi RWO Retain Bound portainer/portainer portainer-test 17m
  1. แต่ Portainer pod อยู่ใน การสร้างคอนเทนเนอร์ สถานะตลอดไปâด้วย kubectl อธิบาย ฉันเห็นเหตุผล:

คำเตือน FailedAttachVolume 2s (x7 over 38s) Attachdetach-controller AttachVolume.Attach ล้มเหลวสำหรับวอลุ่ม "pv-portainer-test": ข้อผิดพลาด rpc: code = FailedPrecondition desc = ล้มเหลวในการเผยแพร่วอลุ่ม: วอลุ่มถูกแนบ

ดูเหมือนว่ามันจะบ่นเพราะติด PV ไว้แล้ว... แต่จริงๆ มันควรจะติดเข้ากับพ็อดนั้นพอดี

Score:1
ธง in

โดยปกติแล้ว คุณไม่จำเป็นต้องสร้าง PV ก่อน เมื่อคุณสร้าง PVC ระบบจะสร้าง PV โดยอัตโนมัติ อย่างไรก็ตาม ขอให้เป็นไปตามที่เป็นอยู่และมีข้อสงสัยเกี่ยวกับคลาสพื้นที่เก็บข้อมูลของคุณ การทดสอบ porttainerคุณสร้างมันขึ้นมาได้อย่างไร?

หากคุณเริ่มจากจุดเริ่มต้น ฉันคิดว่าคุณได้สร้างความลับสำหรับโทเค็น API ของคุณไปยัง Hetzner และเปิดใช้งานไดรเวอร์ CSI ใช่ไหม จากนั้นขอ PVC และปรับใช้ พ็อด ไม่น่าจะมีปัญหา เว้นแต่ Kubernetes จะรองรับประเภทไดรเวอร์ ฉันไม่รู้ว่าคุณมีประเภทไหน แต่โปรดทราบว่า Kubernetes รองรับ สำหรับ csi.hetzner.cloud เท่านั้น v0.3, v1.0 รุ่น

สมมติว่าคุณทำทุกอย่างถูกต้องก่อนหน้านี้ และเวอร์ชัน Kubernetes (1.13 หรือใหม่กว่า) และเวอร์ชันไดรเวอร์นั้นดี ดังนั้นนี่คือ แนะนำ เกี่ยวกับวิธีสร้างวัตถุ PersistentVolume ด้วยตนเองเพื่อเป็นตัวแทนของไดรฟ์ข้อมูลที่มีอยู่:

api เวอร์ชัน: v1
ชนิด: PersistentVolume
ข้อมูลเมตา:
  ชื่อ: pv-portainer-tes
ข้อมูลจำเพาะ:
  ความจุ:
    ความจุ: 10Gi
  โหมดการเข้าถึง:
    - ReadWriteOnce
  PersistentVolumeReclaimPolicy: เก็บรักษา
  ซีเอสไอ:
    ไดรเวอร์: csi.hetzner.cloud
    VolumeHandle: คนยกของ
    อ่านอย่างเดียว: เท็จ
    fsประเภท: ext4
    ปริมาณแอตทริบิวต์:
      ฟู: บาร์
    controllerPublishSecretRef:
      ชื่อ: mysecret1
      เนมสเปซ: mynamespace
    nodeStageSecretRef:
      ชื่อ: mysecret2
      เนมสเปซ: mynamespace
    nodePublishSecretRef
      ชื่อ: mysecret3
      เนมสเปซ: mynamespace

แล้ว แนบและติดตั้ง ปริมาณโดยการปรับใช้ พ็อด. เมื่อมีการกำหนดเวลาพ็อดที่อ้างอิงไดรฟ์ข้อมูล CSI Kubernetes จะทริกเกอร์การดำเนินการที่เหมาะสมกับปลั๊กอิน CSI ภายนอก (ControllerPublishVolume, NodeStageVolume, NodePublishVolume ฯลฯ) เพื่อให้แน่ใจว่าไดรฟ์ข้อมูลที่ระบุถูกแนบ ติดตั้ง และพร้อมใช้งานโดยคอนเทนเนอร์ใน ฝัก

และหมายเหตุ: มีขีดจำกัดสำหรับไดรเวอร์ csi สูงสุด 16 โปรดตรวจสอบว่าขีดจำกัดของคุณไม่เกิน 16

ru flag
(เขียนความคิดเห็นใหม่ ... )
ru flag
«โดยปกติแล้ว คุณไม่จำเป็นต้องสร้าง PV ก่อน เมื่อคุณสร้าง PVC ระบบจะสร้าง PV โดยอัตโนมัติ» ใช่ แต่ด้วย peristentVolumeReclaimPolicy: ลบในขณะที่ฉันต้องการคงไว้ «อย่างไรก็ตาม ขอให้เป็นไปตามที่เป็นอยู่ และมีข้อสงสัยเกี่ยวกับการทดสอบคลาสสตอเรจ porttainer-test ของคุณ คุณสร้างมันขึ้นมาได้อย่างไร?» สำหรับข้อกังวลเกี่ยวกับ storageClass ข้างต้น มันเป็นความผิดพลาด ตอนนี้ฉันแทนที่ด้วย hcloud-volumes สำหรับส่วนที่เหลือ ตัวอย่างที่คุณให้มานั้นน่าสนใจ โดยเฉพาะอย่างยิ่งสำหรับสิ่งที่เกี่ยวกับ volumeHandle: portainer ให้ฉันพยายามใหม่สองสามครั้งแล้วฉันจะแสดงความคิดเห็นเพิ่มเติม
ru flag
ตกลง จริง ๆ แล้วมันเป็นสิ่งที่ฉันได้ทำไปแล้วและอธิบายไว้ข้างต้น - volumeHandle ต้องเป็นรหัสของไดรฟ์ข้อมูลที่ฉันสร้างไว้ล่วงหน้า และมันใช้ได้กับสิ่งที่เกี่ยวข้องกับการสร้าง PV อย่างที่ฉันพูด แต่มันไม่ได้ติดตั้งกับพ็อด เท่าที่ฉันเข้าใจไม่จำเป็นต้องระบุความลับ เนื่องจากโทเค็นลับได้มอบให้กับไดรเวอร์ Hetzner CSI แล้วในระหว่างการติดตั้ง
Score:1
ธง ru

ปัญหาไม่เกี่ยวกับ k8s แต่เฉพาะกับ Hetzner ในการกำหนดค่าโปรเจกต์ ฉันได้ทิ้งไดรฟ์ข้อมูลไว้บนเซิร์ฟเวอร์ถาวร ซึ่งเห็นได้ชัดว่าทำให้ไม่สามารถแนบผ่านไดรเวอร์ CSI ได้ ผู้ใช้ที่ ฟอรัม Hetzner Cloud ชี้ให้ฉันเห็นว่า

ฉันอยากจะขอบคุณ Bazhikov ที่เขาให้คำแนะนำที่มีประโยชน์ในการแก้ไขปัญหาอื่นๆ แก่ฉัน

โพสต์คำตอบ

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