2017-02-16 7 views
1

Я прочитал quick start guide и я добрался доКак начать простой контейнер?

  • У меня есть кластер
  • Я вижу, что мне нужно ввести kubectl run команду, чтобы запустить свой контейнер.

Я хочу начать общедоступную Docker контейнер, который можно начать в любой Docker с поддержкой машины с этой командой

docker run -d \ 
    -e DRONE_SERVER=wss://ci.fommil.com/ws/broker \ 
    -e DRONE_SECRET=<redacted> \ 
    -e DOCKER_MAX_PROCS=1 \ 
    -e DRONE_TIMEOUT=30m \ 
    -v /var/run/docker.sock:/var/run/docker.sock \ 
    --restart=always \ 
    --name=drone-agent \ 
    drone/drone:0.5 agent 

, что является эквивалентом команды/cubectl консоли Google? Я дошел до

kubectl run agent \ 
    --image=drone/drone:0.5 \ 
    --env="DRONE_SERVER=wss://ci.fommil.com/ws/broker" \ 
    --env="DRONE_SECRET=<redacted>" \ 
    --env="DOCKER_MAX_PROCS=1" \ 
    --env="DRONE_TIMEOUT=30m" \ 
    -v /var/run/docker.sock:/var/run/docker.sock 

но -v линия не совсем верно. Мне нужно убедиться, что /var/run/docker.sock смонтирован в контейнере в качестве единственной цели - запустить подпроцессы в докере для запуска заданий CI.

ответ

1

Вы правы, создание томов с использованием для создания томов без файлов конфигурации недоступно в Kubernetes.

Но легко написать некоторую конфигурацию. Основываясь на этом blog post и ваши требования, может выглядеть «современная» конфигурация.

deployment.yml:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: agent 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: agent 
    spec: 
     containers: 
     - env: 
     - name: DRONE_SERVER 
      value: "wss://ci.fommil.com/ws/broker" 
     - name: DRONE_SECRET 
      value: <redacted> 
     - name: DOCKER_MAX_PROCS 
      value: "1" 
     - name: DRONE_TIMEOUT 
      value: 30m 
     image: drone/drone:0.5 
     name: agent 
     args: ["agent"] 
     securityContext: 
      privileged: true 
     volumeMounts: 
      - mountPath: /var/run/docker.sock 
      name: docker-sock 
      - mountPath: /var/lib/docker 
      name: docker-lib 
     volumes: 
     - name: docker-sock 
      hostPath: 
      path: /var/run/docker.sock 
     - name: docker-lib 
      hostPath: 
      path: /var/lib/docker 

Это может теперь использоваться с kubectl create -f deployment.yml и останавливали kubectl delete deployments -l app=agent

+0

это замечательно, спасибо! Я обновил ваш ответ с помощью точного yml, который работал для меня. Файл смехотворно повторяется, было бы хорошо, если бы его можно было обрезать. Это как соревнование, чтобы сказать «агент» как можно больше. – fommil

+1

Я также хотел бы использовать --generator = run-pod/v1, если вы хотите действительно простой блок вместо развертывания/replicaset/... –