#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. Это проясняет и является объяснением, которое я искал. Большое Вам спасибо 🙂 Очень ценю вашу помощь.