Kubernetes 배포의 도커


13

다음을 통해 형제 도커 컨테이너를 만드는 타사 라이브러리를 사용하고 있습니다.

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

위 컨테이너에서 Kubernetes 배포를 만들려고하지만 현재 얻고 있습니다.

unix : ///var/run/docker.sock에서 Docker 데몬에 연결할 수 없습니다. 도커 데몬이 실행 중입니까?

/var/run/docker.sock배포 yaml에서 볼륨으로 선언하지 않았기 때문에 예상 됩니다.

문제는 내가 이것을하는 방법을 모른다는 것입니다. /var/run/docker.sock배치 yaml에서 볼륨 으로 마운트 할 수 있습니까?

그렇지 않은 경우 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

컨테이너의 docker 클라이언트에서 호스트의 docker 데몬으로의 통신을 허용하기 위해 간단한 마운트가 충분해야한다고 생각하지만 쓰기 권한 오류가 발생하면 다음 과 같은 securityContext 객체를 사용하여 컨테이너를 권한있는 컨테이너로 실행해야합니다. 추가 내용을 표시하기 위해 위에서 추출한 내용 , 설명서 에서 가져온 값 ) :

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

감사합니다. 예, 타사 도구이므로 이상적이지 않습니다. 그러나 적어도 쿠 버네 티스의 메인 컨테이너가 더 안정적으로 작동하기를 원합니다. 컨테이너는 자동화 UI 테스트를 위해 브라우저로 임시 컨테이너를 증가시킨 후 브라우저 컨테이너가 손상됩니다.
rys

@rys 예, 그것은 내가 생각했던 경우였습니다. k8s가 '실행기'컨테이너를 움직일 수 있기 때문에 노드로드가 너무 높아지면 여전히 문제가 발생할 수 있습니다. 그러나 테스트 스위트의 실패는이 경우 수용 가능한 것으로 가정합니다.
Tensibai

2

이것이 작동하는 솔루션이지만 직접 사용하지만 Kubernetes 포드에서 Docker를 마운트하여 실행하면 몇 가지 단점이 있습니다. /var/run/docker.sock

대부분 Kubernetes가 통제 할 수없는 Docker 컨테이너로 작업하고 있다는 사실.

내가 찾은 또 다른 해결책은 포드에 사이드 카 컨테이너를 사용하는 것 입니다. Kubernetes의 Docker-in-Docker 사례를 참조하십시오 . 제안 된 솔루션이 파트 2에 있는 파트 는 두 가지가 있습니다 .

이게 도움이 되길 바란다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.