Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

137
Views
Vuelva a implementar statefulset con el estado CrashLoopBackOff en kubernetes

Eso es lo que hago:

  1. Implementar un conjunto con estado. El pod siempre saldrá con un error para provocar un pod fallido en el estado CrashLoopBackOff : kubectl apply -f error.yaml
  2. Cambie error.yaml ( echo a => echo b ) y vuelva a implementar el conjunto con estado: kubectl apply -f error.yaml
  3. El pod mantiene el estado de error y no se volverá a implementar inmediatamente, sino que esperará hasta que el pod se reinicie después de un tiempo.

Solicitud de estado del pod:

 $ kubectl get pod errordemo-0 NAME READY STATUS RESTARTS AGE errordemo-0 0/1 CrashLoopBackOff 15 59m

error.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: 1

Preguntas

¿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):

  • Mata a la vaina antes de la redistribución
  • Reduzca la escala antes de volver a implementar
  • Eliminar el statefulset antes de volver a implementar

¿Por qué Kubernetes no vuelve a implementar el módulo de inmediato?

  • En mi ejemplo de demostración, tengo que esperar hasta que Kubernetes intente reiniciar el módulo después de esperar un tiempo.
  • Un pod sin error (por ejemplo echo a; sleep 10000; ) se reiniciará inmediatamente. Es por eso que establecí terminationGracePeriodSeconds: 1
  • Pero en mis implementaciones reales (donde uso helm) también encontré el caso de que las cápsulas nunca se vuelven a implementar. Desafortunadamente, no puedo reproducir este comportamiento en un ejemplo simple.
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede 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.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!