kubectl run устарел - ищет альтернативу - PullRequest
0 голосов
/ 19 октября 2018

Я использую kubectl run с параметрами среды для создания временных док-контейнеров для меня (например, некоторая пересылка для целей отладки).Уже несколько недель kubectl жалуется на то, что kubectl run устарела.К сожалению, я не могу найти подходящую замену.

Это старая команда:

$KUBECTL run -i -t --attach=false --image djfaze/port-forward --env="REMOTE_HOST=$REMOTE_HOST" --env="REMOTE_PORT=$REMOTE_PORT" $POD_NAME

При выдаче этого kubectl жалуется на это сообщение:

kubectl run --generator=deployment/apps.v1beta1 УСТАРЕЛО и будет удалено в следующей версии.Вместо этого используйте kubectl create.

Есть идеи, как заменить эту команду запуска?

Ответы [ 4 ]

0 голосов
/ 11 мая 2019

kubectl run по умолчанию создаст Deployment .

Команда в полном расширении:

kubectl run --generator=deployment/apps.v1 <deployment_name> --image=<image_to_use_in_the_container_of_the_deployment's_pod>

Таким образом, ресурс kubernetes, которыйбудет создан после выполнения команды run, определяется значением флага --generator.

На что намекает сообщение об устаревании (и также поясняется ответом, предоставленным @soltysh), чтоособая практика будет удалена.

Так что в будущих kubernetes версиях команда run по умолчанию (и как опция только ) создаст pods (ине развертывания), т. е. команда в полном объеме будет выглядеть так:

kubectl run --generator=run-pod/v1 <pod_name> --image=<image_of_the_container_of_the_pod>

Если вы захотите создать любой другой тип ресурса kubernetes, это будет невозможно с помощью команды run, поэтому вы получитеприбегнуть к явному императиву create или декларативному apply -f, который позже указывает на kubernetes yml файлов с соответствующим определением ресурса, как в

kubernetes apply -f <yaml_file_with_my_deployment.yml>
0 голосов
/ 20 октября 2018

вы можете использовать:

kubectl run --generator=run-pod/v1 --image=busybox busybox --dry-run --env=foo=bar

Что не считается устаревшим.

0 голосов
/ 26 октября 2018

Как автор проблемы, позвольте мне немного объяснить намерения, стоящие за этим осуждением.Точно так же, как Брендан объясняет в его ответ , kubectl run само по себе не считается устаревшим, только все генераторы, кроме того, который создает Pod для вас.

Причина этогоизменение в два раза:

  1. Подавляющее большинство входных параметров для команды kubectl run является подавляющим как для новичков, так и для старых таймеров.Не так просто понять, что будет результатом вашего вызова.Вам необходимо принять во внимание несколько переданных опций, а также версию сервера.

  2. Код, стоящий за ним, также является беспорядочным, поскольку матрица возможностей растет быстрее, чем мы можем справиться.

Вот почему мы пытаемся отвести людей от использования kubectl run для своих ежедневных рабочих процессов и убедить их в том, что использование явных команд kubectl create более просто.Наконец, мы хотим, чтобы новички, которые играли с докером или любым другим механизмом контейнеров, где они запускали контейнер, имели такой же опыт работы с Kubernetes, где kubectl run будет просто запускать Pod в кластере.

Извините за первоначальное замешательство, и я надеюсь, что это прояснит ситуацию.

0 голосов
/ 19 октября 2018

Как и в сообщении, вы должны использовать kubectl create.Просто определите минимальный pod yaml Definition и используйте kubectl create -f mypod.yml

...