Создать модуль kubernetes с томом, используя kubectl run
Я понимаю, что вы можете создать модуль с помощью Deployment/Job, используя kubectl run. Но возможно ли создать тот, к которому прикреплен том? Я попытался запустить эту команду:
kubectl run -i --rm --tty ubuntu --overrides='{ "apiVersion":"batch/v1", "spec": {"containers": {"image": "ubuntu:14.04", "volumeMounts": {"mountPath": "/home/store", "name":"store"}}, "volumes":{"name":"store", "emptyDir":{}}}}' --image=ubuntu:14.04 --restart=Never -- bash
Но громкость не появляется в интерактивном bash.
Есть ли лучший способ создать стручок с объемом, к которому вы можете прикрепить?
1 ответ
Решение
Ваше переопределение JSON указано неправильно. К сожалению, kubectl run просто игнорирует поля, которые он не понимает.
kubectl run -i --rm --tty ubuntu --overrides='
{
"apiVersion": "batch/v1",
"spec": {
"template": {
"spec": {
"containers": [
{
"name": "ubuntu",
"image": "ubuntu:14.04",
"args": [
"bash"
],
"stdin": true,
"stdinOnce": true,
"tty": true,
"volumeMounts": [{
"mountPath": "/home/store",
"name": "store"
}]
}
],
"volumes": [{
"name":"store",
"emptyDir":{}
}]
}
}
}
}
' --image=ubuntu:14.04 --restart=Never -- bash
Для устранения этой проблемы я запустил указанную вами команду, а затем в другом терминале запустил:
kubectl get job ubuntu -o json
Оттуда вы можете видеть, что фактическая структура задания отличается от вашего переопределения json (вы пропустили вложенный шаблон / спецификацию, а тома, volumeMounts и контейнеры должны быть массивами).