นักเทียบท่าในการปรับใช้ Kubernetes


13

ฉันใช้ห้องสมุดบุคคลที่สามที่สร้างคอนเทนเนอร์นักเทียบท่าพี่น้องผ่าน:

docker run -d /var/run/docker.sock:/var/run/docker.sock ...

ฉันพยายามสร้างการปรับใช้ Kubernetes ออกจากคอนเทนเนอร์ด้านบน แต่ขณะนี้กำลังรับ:

ไม่สามารถเชื่อมต่อกับ Docker daemon ได้ที่ unix: ///var/run/docker.sock daemon ของนักวิ่งกำลังทำงานอยู่หรือไม่?

นี่เป็นสิ่งที่คาดหวังเพราะฉันไม่ได้ประกาศ/var/run/docker.sockว่าเป็นโวลุ่มในการปรับใช้ yaml

ปัญหาคือฉันไม่รู้วิธีการทำสิ่งนี้ เป็นไปได้ไหมที่จะเมานต์/var/run/docker.sockเป็นโวลุ่มในการปรับใช้ yaml?

ถ้าไม่วิธีการที่ดีที่สุดในการรัน sibling-container จากภายใน Kubernetes คืออะไร

คำตอบ:


19

ได้รับการยืนยันเป็นเสียงเปราะกับผมที่จะเริ่มต้นที่อยู่นอกตู้คอนเทนเนอร์ของการกำกับดูแล k8s แต่คุณควรจะสามารถที่จะติด/var/run/docker.sockกับปริมาณ hostPath

ตัวอย่างการเปลี่ยนแปลงจากเอกสาร:

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: gcr.io/google_containers/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /var/run/docker.sock
      name: docker-sock-volume
  volumes:
  - name: docker-sock-volume
    hostPath:
      # location on host
      path: /var/run/docker.sock
      # this field is optional
      type: File

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

spec:
  containers:
  - image: gcr.io/google_containers/test-webserver
    securityContext:
      privileged: true
    name: test-container

มันใช้งานได้ดีขอบคุณ ใช่มันเป็นเครื่องมือของบุคคลที่สามดังนั้นจึงไม่เหมาะ แต่อย่างน้อยฉันก็ต้องการให้ภาชนะหลักใน Kubernetes ทำให้มันน่าเชื่อถือมากขึ้น คอนเทนเนอร์เพิ่มคอนเทนเนอร์ชั่วคราวด้วยเบราว์เซอร์สำหรับการทดสอบ UI อัตโนมัติจากนั้นเบราว์เซอร์คอนเทนเนอร์จะถูกทำลาย
rys

@ ใช่ใช่นั่นเป็นกรณีที่ฉันคิดไว้คุณอาจยังพบปัญหาหากโหลดโหนดสูงเกินไปเนื่องจาก k8 อาจย้ายคอนเทนเนอร์ 'ตัวเรียกใช้' ของคุณ แต่ฉันคิดว่าความล้มเหลวของชุดทดสอบเป็นสิ่งที่ยอมรับได้ในกรณีนี้
Tensibai

2

แม้ว่านี่จะเป็นโซลูชันที่ใช้งานได้ (ฉันใช้ตัวเอง) แต่ก็มีข้อเสียเปรียบบางประการสำหรับการใช้ Docker ในฝัก Kubernetes ด้วยการติดตั้ง /var/run/docker.sock

ความจริงที่ว่าคุณกำลังทำงานกับ Docker container อยู่นอกการควบคุมของ Kubernetes

อีกวิธีแก้ไขที่แนะนำที่ฉันพบคือการใช้ตู้ข้างรถในฝักของคุณ ดูกรณีสำหรับนักเทียบท่าในเทียบท่าใน Kubernetes มีสองส่วนไปอยู่ที่โซลูชั่นที่นำเสนออยู่ในส่วน 2

ฉันหวังว่านี่จะช่วยได้.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.