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

169
Views
Reinicie el pod de Kubernetes cuando ocurra un cambio en otro

La app de dos pods y postgres se crearon correctamente y pueden comunicarse a través de los servicios de cada uno en un nodo. En el proceso actual, los dos pods se crean al mismo tiempo, pero eso se puede cambiar para que se creen o inicien en una secuencia.

Inicialmente, el contenedor de la base de datos en el pod de postgres está vacío y debe inicializarse. El proceso inicial pasa por el módulo de la app y, por lo tanto, también debe estar en funcionamiento. Una vez que se siembra postgres , la app aún no está al tanto de estos nuevos datos y debe reiniciarse. Esta es una falla en la app en sí, sobre la que tengo poco control.

En este momento, el proceso es:

 kubectl create -f pods.yaml # creates `app` and `postgres` pods kubectl exec app -- bash -c "<seed command>" kubectl delete pod app sleep 45 # takes a while for `app` to terminate kubectl create -f pods.yaml # Ignore the "postgres pod and service already exist" error

¿Hay una mejor manera de coordinar automáticamente un reinicio de la app una vez que postgres alcanza un estado inicial?

Tal vez hay algún conjunto de aspectos/características de Kubernetes que me falta por completo y que ayuda con tal circunstancia...

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede usar una "prueba de preparación" en el pod de postgresql que no informará que el contenedor está listo antes de que se importen los datos (por ejemplo, consultar la base de datos o la tabla que importa). El contenedor de su aplicación puede consultar el estado de preparación del módulo de base de datos para reiniciarse automáticamente una vez que informe que está listo. La sonda de preparación puede ser un script que realiza la importación. Aquí hay un ejemplo (debe reemplazar el comando "MOSTRAR BASES DE DATOS" con lo que corresponda en su caso):

 spec: containers: - name: mysql image: mysql:latest ports: - containerPort: 3306 name: mysql readinessProbe: exec: command: - /path-in-container/readiness-probe.sh initialDelaySeconds: 15 timeoutSeconds: 5

preparación-sonda.sh:

 #!/bin/bash MYSQL_USER="readinessProbe" MYSQL_PASS="readinessProbe" MYSQL_HOST="127.0.0.1" mysql -u${MYSQL_USER} -p${MYSQL_PASS} -h${MYSQL_HOST} -e"SHOW DATABASES;" if [ $? -ne 0 ]; then exit 1 else exit 0 fi

Para leer más sobre el tema, consulte los documentos de k8s:

sondas de preparación

chequeo de salud

about 4 years ago · Santiago Trujillo Report

0

Si la aplicación no necesita ejecutarse durante el proceso de inicialización y puede hacer que el proceso de inicialización sea idempotente, los contenedores init pueden ayudarlo.

El es un buen ejemplo disponible.

about 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!