Estoy trabajando en la implementación de una imagen acoplable en kubernetes. La primera vez que implementé el contenedor, usé:
kubectl apply -f <deployment_file>.yamly el contenedor se implementó correctamente en un pod.
Además, el archivo_despliegue se parece a esto:
apiVersion: apps/v1beta1 kind: Deployment metadata: name: publisher spec: replicas: 2 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 minReadySeconds: 300 progressDeadlineSeconds: 900 template: metadata: labels: app: publisher spec: containers: - name: publisher image: 123dev.azurecr.io/publisher:{{ci-build-number}} env: - name: ENVIRONMENT value: "dev" ports: - containerPort: 8080He definido el atributo 'progressDeadlineSeconds' en el archivo yaml anterior.
Para realizar un seguimiento de la implementación, utilicé:
kubectl rollout status deployment.v1beta1.apps/publisherAhora, si quiero actualizar el contenedor con una nueva imagen, puedo volver a usar el comando
kubectl apply -f <deployment_file>.yamlpara aplicar la actualización.
Pero, ¿qué pasa si la aplicación de la actualización falla debido a algún motivo (digamos que la imagen de la ventana acoplable está dañada), hay alguna manera de activar automáticamente una reversión a la revisión anterior cuando el estado de los pods no está configurado como 'en ejecución' O el tiempo de ejecución se cruza? 'pregressDeadlineSeconds'?
Hasta ahora no he encontrado una forma de ejecutar una reversión automáticamente. Los pensamientos serían apreciados.
siga los pasos a continuación.
1. append the --record param to deployment, as shown below kubectl apply -f <deployment_file>.yaml --record 2. kubectl rollout history deploy <deployment-name> to check deployment history. for example, kubectl rollout history deploy mynginx deployments "mynginx" REVISION CHANGE-CAUSE 3 kubectl set image deploy mynginx mynginx=nginx:1.12.2 4 kubectl set image deploy mynginx mynginx=nginx:1.13.8 3. you can rollback to previous version using revision, say to revision 3 kubectl rollout undo deploy mynginx --to-revision=3Después del comando kubectl apply , puede verificar si la implementación se implementó correctamente o no y luego, si es necesario, el kubectl rollout undo puede retroceder a la revisión anterior. Además, puede usar el comando de sleep de Linux para esperar un tiempo antes de eso.
En Linux:
sleep 900 && \ if [[ $(timeout 5 kubectl rollout status -f <deployment_file>.yaml) != *"successfully rolled out"* ]]; then kubectl rollout undo -f <deployment_file>.yaml fi > /dev/null 2>&1 & timeout 5 detiene el estado de implementación de kubectl rollout status si se atasca después de 5 segundos.
> /dev/null 2>&1 & ejecuta el comando en segundo plano y sin salida de terminal.
Estos son los pasos que sigo para deshacer el lanzamiento de una implementación
Aquí client-depl es el nombre de la implementación.
Paso.1 Para obtener la lista del historial de una implementación específica, use este comando
kubectl rollout history deploy client-depldespués de eso obtendrás una salida como esta.
imagen de implementación del historial de implementación
así que digamos que quiero implementar la implementación en la REVISIÓN 1 y luego usar este comando
$ kubectl rollout undo deploy client-depl --to-revision=1después de eso obtendrás un resultado como este
imagen de reversión de implementación
Felicitaciones, ha implementado con éxito la implementación a la versión anterior. Para cualquier duda por favor responda será un placer ayudarle.