Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

407
Visualizações
¿Cómo cambio las etiquetas de coincidencia de una implementación de k8s sin tiempo de inactividad?

La implementación de tipo Deployment no permite cambios de parches en spec.selector.matchLabels , por lo que cualquier implementación nueva (administrada por Helm o de otro modo) que desee cambiar las etiquetas no puede usar la función RollingUpdate dentro de una implementación. ¿Cuál es la mejor manera de lograr la implementación de una nueva implementación sin causar tiempo de inactividad?

Ejemplo mínimo:

 apiVersion: apps/v1 kind: Deployment metadata: name: foo namespace: default spec: replicas: 1 selector: matchLabels: app: foo template: metadata: labels: app: foo spec: containers: - name: foo image: ubuntu:latest command: ["/bin/bash", "-ec", "sleep infinity"]

Aplique esto, luego edite las etiquetas (tanto matchLabels como metadata.labels) a foo2 . Si intenta aplicar esta nueva implementación, k8s se quejará (por diseño) La Deployment "foo" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"foo2"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable .

La única forma que se me ocurre en este momento es usar un nuevo nombre de implementación para que la nueva implementación no intente parchear la anterior y luego eliminar la anterior, con los recursos de ingreso/equilibrador de carga manejando la transición. Luego, podemos volver a implementar con el nombre anterior y eliminar el nuevo nombre, completando la migración.

¿Hay alguna manera de hacerlo con menos pasos de CLI k8s? ¿Quizás pueda editar/eliminar algo que mantenga vivos los pods antiguos mientras los nuevos pods se implementan con el mismo nombre?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Desde mi experiencia, mientras uso helm cuando uso

 helm upgrade release -f values .

No tengo tiempo de inactividad. Además, al usar helm, noté que hasta que la nueva implementación esté lista para X/X, no finaliza la implementación anterior. Puedo sugerir usarlo. De esta manera puede ser tan indoloro como se pone.

También en la sección Actualización de la implementación desde los documentos de Kubernetes, se dice que la implementación de una implementación se activa si y solo si se cambia la plantilla del pod de la implementación (es decir, .spec.template).

Por lo tanto, puede usar cambios de etiquetas con helm.

Espero haber sido un poco de ayuda.

¡Tener cuidado! método no probado: kubectl tiene un subcomando de edición que me permitió actualizar ConfigMaps, PersistentVolumeClaims, etc. Tal vez pueda usarlo para actualizar su implementación. Sintaxis:

 kubectl edit [resource] [resource-name]

Pero antes de hacerlo, elija un editor de texto adecuado, ya que trabajará con archivos con formato yaml. Hazlo usando,

 export KUBE_EDITOR=/bin/{nano,vim,yourFavEditor}
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda