2015-11-24 19 views
15

, bir yaml yapılandırma dosyasında komutunu çalıştırabilirsiniz:Kubernetes ile bir yaml dosyasında birden çok komut nasıl ayarlanır? Bu resmi belgede

http://kubernetes.io/v1.1/docs/user-guide/configuring-containers.html

apiVersion: v1 
kind: Pod 
metadata: 
    name: hello-world 
spec: # specification of the pod’s contents 
    restartPolicy: Never 
    containers: 
    - name: hello 
    image: "ubuntu:14.04" 
    env: 
    - name: MESSAGE 
     value: "hello world" 
    command: ["/bin/sh","-c"] 
    args: ["/bin/echo \"${MESSAGE}\""] 

Birden fazla komutu çalıştırmak istiyorsanız, nasıl yapmalı?

cevap

42
command: ["/bin/sh","-c"] 
args: ["command one; command two && command three"] 

Açıklama: command ["/bin/sh", "-c"] diyor "bir kabuk çalıştırın ve aşağıdaki talimatları yürütmek". Args daha sonra kabuklara komut olarak geçirilir. Kabuk betiklerinde bir noktalı virgül komutları ayırır ve ilk başarılı olursa && koşullu olarak aşağıdaki komutu çalıştırır. Yukarıdaki örnekte, her zaman command one ve ardından command two çalışır ve command two başarılı olursa yalnızca command three çalışır.

Alternatif: Birçok durumda, çalıştırmak istediğiniz komutların bir kısmı büyük olasılıkla çalıştırmak için son komutu ayarlıyordur. Bu durumda, kendi Dockerfile'u inşa etmenin yolu. Özellikle RUN yönergesine bakın.

+1

Evet, çok geçerli, ancak, Dockerfile'ın "Entrypoint"; –

0
bir komut dosyası olarak

Bir Ses ve configMap kullanmaya istekli iseniz, olabilir mount ConfigMap data ve daha sonra bu komut dosyasını çalıştırın:

--- 
apiVersion: v1 
kind: ConfigMap 
metadata: 
    name: my-configmap 
data: 
    entrypoint.sh: |- 
    #!/bin/bash 
    echo "Do this" 

    echo "Do that" 
--- 
apiVersion: v1 
kind: Pod 
metadata: 
    name: my-pod 
spec: 
    containers: 
    - name: my-container 
    image: "ubuntu:14.04" 
    command: 
    - /bin/entrypoint.sh 
    volumeMounts: 
    - name: configmap-volume 
     mountPath: /bin/entrypoint.sh 
     readOnly: true 
     subPath: entrypoint.sh 
    volumes: 
    - name: configmap-volume 
    configMap: 
     defaultMode: 0700 
     name: my-configmap 

Bu biraz nakliye modülünün spec temizler ve daha kompleks için izin verir betik.

$ kubectl logs my-pod 
Do this 
Do that 
İlgili konular