Как выполнить команду при запуске модуля в Kubernetes?

#kubernetes #kubectl

Вопрос:

Я хочу выполнить команду во время создания модуля. Я вижу два доступных варианта :

kubectl run busybox --image=busybox --restart=Never -- sleep 3600

kubectl run busybox --image=busybox --restart=Never -- /bin/sh -c "sleep 3600"

В чем разница между двумя вышеперечисленными командами ?

Ответ №1:

  • Короче говоря, никакой разницы в результате, если вы хотите запустить «sleep 3600». Оба выполняют одну и ту же операцию.
  • Чтобы понять поведение этих опций, добавьте к ним опцию сухого запуска
  • Первый передает «спящий режим» и «3600» в качестве аргументов в точку входа изображения busybox, которая является «/bin/sh».
 kubectl run busybox --image=busybox --restart=Never --dry-run=client -o yaml -- sleep 3600
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: busybox
  name: busybox
spec:
  containers:
  - args:
    - sleep
    - "3600"
    image: busybox
    name: busybox
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Never
 
  • второй передает «/bin/sh-c» , «sleep» и «3600» в качестве аргументов в точку входа изображения busybox, которая является «/bin/sh» . Таким образом, он откроет новую оболочку для запуска «sleep 3600» внутри контейнера.
 kubectl run busybox --image=busybox --restart=Never --dry-run=client -o yaml -- /bin/sh -c "sleep 3600"
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: busybox
  name: busybox
spec:
  containers:
  - args:
    - /bin/sh
    - -c
    - sleep 3600
    image: busybox
    name: busybox
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}
 
  • Как упоминалось в начале, это не имеет никакого значения для результата «сна 3600», но этот метод полезен, когда вы хотите выполнить несколько команд по контейнеру, например «сон 3600» и «эхо-бу». таким образом, синтаксис будет
 kubectl run busybox --image=busybox --restart=Never -- /bin/sh -c "sleep 3600;echo boo"
 

Комментарии:

1. Это проясняет и является объяснением, которое я искал. Большое Вам спасибо 🙂 Очень ценю вашу помощь.