Eso es lo que hago:
CrashLoopBackOff : kubectl apply -f error.yamlecho a => echo b ) y vuelva a implementar el conjunto con estado: kubectl apply -f error.yamlSolicitud de estado del pod:
$ kubectl get pod errordemo-0 NAME READY STATUS RESTARTS AGE errordemo-0 0/1 CrashLoopBackOff 15 59merror.yaml
apiVersion: apps/v1 kind: StatefulSet metadata: name: errordemo labels: app.kubernetes.io/name: errordemo spec: serviceName: errordemo replicas: 1 selector: matchLabels: app.kubernetes.io/name: errordemo template: metadata: labels: app.kubernetes.io/name: errordemo spec: containers: - name: demox image: busybox:1.28.2 command: ['sh', '-c', 'echo a; sleep 5; exit 1'] terminationGracePeriodSeconds: 1Preguntas
¿Cómo puedo lograr una reimplementación inmediata incluso si el pod tiene un estado de error? Descubrí estas soluciones, pero me gustaría tener un solo comando para lograrlo (en la vida real, estoy usando helm y solo quiero llamar a helm upgrade para mis implementaciones):
¿Por qué Kubernetes no vuelve a implementar el módulo de inmediato?
echo a; sleep 10000; ) se reiniciará inmediatamente. Es por eso que establecí terminationGracePeriodSeconds: 1Puede configurar spec.podManagementPolicy: "Parallel"
La administración paralela de pods le indica al controlador StatefulSet que inicie o finalice todos los pods en paralelo, y que no espere a que los pods se ejecuten y estén listos o terminen por completo antes de iniciar o finalizar otro pod.
Recuerde que el podManagementPolicy predeterminado es OrderedReady
La administración de pods OrderedReady es la predeterminada para StatefulSets. Le dice al controlador StatefulSet que respete las garantías de pedido demostradas anteriormente
Y si su aplicación requiere una actualización ordenada, entonces no hay nada que pueda hacer.