web-dev-qa-db-fra.com

KUBECTL PATCH: Ajoutez le port du gousse de pod de déploiement

J'ai un déploiement en cours d'exécution d'une pod composée d'un conteneur unique. Le déploiement est actuellement opérationnel et je souhaite modifier son modèle de pod pour ajouter un port au conteneur.

Voici les ports actuellement définis:

$ kubectl get deployment -o yaml spark-master | yq -r -y '.spec.template.spec.containers[] | select(.name=="spark-master").ports'
- containerPort: 7077
  protocol: TCP
- containerPort: 8080
  protocol: TCP

Voici le patch que j'ai essayé d'ajouter du port 6066:

$ kubectl patch deployment spark-master -p '{"op": "add", "path": "/spec/template/spec/containers/0/ports/-", "value": {"containerPort": 6066}}'
deployment "spark-master" not patched
$ kubectl get deployment -o yaml spark-master | yq -r -y '.spec.template.spec.containers[] | select(.name=="spark-master").ports'
- containerPort: 7077
  protocol: TCP
- containerPort: 8080
  protocol: TCP

...Sans succès.

Une autre tentative, cette fois spécifiant le protocole portuaire:

$ kubectl patch deployment spark-master -p '{"op": "add", "path": "/spec/template/spec/containers/0/ports/-", "value": {"containerPort": 6066, "protocol": "TCP"}}'
deployment "spark-master" not patched
$ kubectl get deployment -o yaml spark-master | yq -r -y '.spec.template.spec.containers[] | select(.name=="spark-master").ports'
- containerPort: 7077
  protocol: TCP
- containerPort: 8080
  protocol: TCP

... toujours pas de succès.


$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.4", GitCommit:"bee2d1505c4fe820744d26d41ecd3fdd4a3d6546", GitTreeState:"clean", BuildDate:"2018-03-12T16:29:47Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/AMD64"}
Server Version: version.Info{Major:"1", Minor:"9+", GitVersion:"v1.9.7-gke.3", GitCommit:"9b5b719c5f295c99de68ffb5b63101b0e0175376", GitTreeState:"clean", BuildDate:"2018-05-31T18:32:23Z", GoVersion:"go1.9.3b4", Compiler:"gc", Platform:"linux/AMD64"}
5

Que dis-tu de ça:

kubectl patch deployment spark-master --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/ports/-", "value": {"containerPort": 6066}}]'

EDIT: supprimé "protocol": "TCP" comme suggéré.

Edit n ° 2 (pour adresser le commentaire de Magellan): Le type par défaut pour patch est --type='strategic'. La tentative de patch utilise Patch JSON et donc le --type='json' L'argument a dû être ajouté pour faire fonctionner le commandement.

9
apisim