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?
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:
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.
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.
vous pouvez utiliser:
kubectl run --generator=run-pod/v1 --image=busybox busybox --dry-run --env=foo=bar
Ce qui n'est pas obsolète.
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 kubernetes
yml
avec la définition de ressource correspondante, comme dans
kubernetes apply -f <yaml_file_with_my_deployment.yml>
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
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".