web-dev-qa-db-fra.com

kubectl run est obsolète - à la recherche d'une alternative

J'utilise kubectl run avec des paramètres d’environnement pour créer des conteneurs temporaires dans mon menu fixe (par exemple, certains transferts à des fins de débogage). Depuis plusieurs semaines, kubectl se plaint de kubectl run étant obsolète. Malheureusement, je ne trouve pas de remplaçant approprié.

C'est l'ancienne commande:

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

Lors de l’émission de ceci, kubectl se plaint de ce message:

kubectl run --generator=deployment/apps.v1beta1 est DEPRECATED et sera supprimé dans une future version. Utilisez plutôt kubectl create.

Des idées comment remplacer cette commande d'exécution?

25
peez80

En tant qu’auteur du problème, j’explique un peu l’intention qui sous-tend cette dépréciation. Comme Brendan l'explique dans sa réponse , kubectl run _ en soi n’est pas obsolète, mais uniquement tous les générateurs, à l’exception de celui qui crée un pod pour vous.

La raison de ce changement est double:

  1. La grande majorité des paramètres d'entrée pour kubectl run La commande est écrasante pour les nouveaux arrivants, ainsi que pour les anciens. Il n’est pas facile de comprendre quel sera le résultat de votre invocation. Vous devez prendre en compte plusieurs options passées ainsi que la version du serveur.

  2. Le code sous-jacent est également un désastre à maintenir étant donné que la matrice de possibilités se développe plus rapidement que nous ne pouvons le gérer.

C'est pourquoi nous essayons d'éloigner les gens de l'utilisation de kubectl run pour leurs flux de travail quotidiens et les convaincre d’utiliser explicitement kubectl create commandes est plus simple. Enfin, nous souhaitons faire en sorte que les nouveaux venus qui ont joué avec docker ou tout autre moteur de conteneur, où ils utilisent un conteneur, aient la même expérience avec Kubernetes où kubectl run exécutera simplement un pod dans un cluster.

Désolé pour la confusion initiale et j'espère que cela clarifiera les choses.

23
soltysh

vous pouvez utiliser:

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

Ce qui n'est pas obsolète.

15
Brendan Burns

kubectl run _ par défaut, créera un Déploiement.

La commande dans son intégralité est:

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

Ainsi, la ressource kubernetes qui sera créée lors de l’exécution de la commande run est définie par la valeur de la commande --generator drapeau.

Le message de désapprobation suggère (et est également clarifié par la réponse fournie par @soltysh) est que la pratique particulière sera supprimée.

Ainsi, dans les futures versions de kubernetes, la commande run sera par défaut (et en tant que seulement option) créer pods (et pas de déploiements), c’est-à-dire que le commandement dans son intégralité deviendra:

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

Si vous voulez créer un autre type de ressource kubernetes, cela sera impossible avec la commande run. Vous devrez donc recourir à l'impératif explicite create ou au déclaratif apply -f, le dernier pointant vers kubernetesyml avec la définition de ressource correspondante, comme dans

kubernetes apply -f <yaml_file_with_my_deployment.yml>
5
pkaramol

Comme le message dit, vous devriez utiliser kubectl create. Il suffit de définir un pod minimal yaml définition et d’utiliser kubectl create -f mypod.yml

0
Nicolas Pepinster

J'ai remarqué que l'exécution de la commande suivante SANS spécifier le paramètre générateur:

kubectl run <name> --image=<image>

Il retourne cette erreur:

kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.

Ce qui est très déroutant dans ce message, c'est que vous n'avez jamais spécifié le paramètre --generator. Cependant, l’essentiel ici est de spécifier explicitement le générateur comme indiqué par le message d’erreur comme suit:

kubectl run --generator=run-pod/v1 <name> --image=<image>

Ensuite, il devrait fonctionner avec succès. (ils auraient simplement dû remplacer le générateur par run-pod/v1 pour éviter cette confusion et/ou simplement encourager l'utilisation de create).

Cependant, sur la base de la réponse @soltysh, il semblerait qu’ils recommandent maintenant "créer" sur "exécuter".

0
jersey bean