Soy nuevo en Kubernete y estoy un poco confundido acerca del comando de apply e rollout . Si actualizo el archivo de configuración de Kubernete, ¿debo usar kubectl apply -f o kubectl rollout ?
si actualizo la configuración de Kubernete y ejecuto kubectl apply -f , finalizará el pod en ejecución y creará uno nuevo.
pero la rollout también tiene un comando de restart que se usa para reiniciar el módulo. Entonces, ¿cuándo debo usar rollout restart ?
Una diferencia importante que se me ocurre es que kubectl apply se puede usar para todos los objetos de Kubernetes ( Pod , Deployment , ConfigMaps , Secrets , etc.), mientras que el kubectl rollout se aplica específicamente a los objetos que se ocupan de algunos cálculos como Deployments , Statefulsets , etc.
Además, kubectl rollout restart es útil para reiniciar los pods sin requerir ningún cambio en los campos de spec , lo que no es posible con kubectl apply . Si ejecutamos kubectl apply sin cambios en los campos de spec , los pods no se actualizarán ya que no hay cambios para actualizar.
Considere el escenario en el que alguna configuración (por ejemplo, un certificado externo) se monta en los pods como ConfigMap y cualquier cambio en el ConfigMap no hace que los pods se actualicen automáticamente. kubectl rollout restart puede ser útil en tales escenarios para crear nuevos pods que luego pueden leer configuraciones actualizadas desde ConfigMap .
Además, una nota importante de los documentos :
Nota: El lanzamiento de una implementación se activa solo si se cambia la plantilla del pod de la implementación (es decir, .spec.template), por ejemplo, si se actualizan las etiquetas o las imágenes de contenedor de la plantilla. Otras actualizaciones, como escalar la implementación, no desencadenan una implementación.
El kubectl apply -f se usa para aplicar el archivo de configuración kubernetes (donde implementa la aplicación deseada).
Y el lanzamiento de kubectl rollout se usa para verificar la aplicación implementada anterior
Ejemplo
Suponga que su archivo de configuración de implementación se ve así y lo guardó en el archivo nginx.yaml. Ahora desea implementar la aplicación nginx desde el siguiente archivo yaml. por lo tanto, debe usar kubectl apply -f nginx.yaml , y ahora desea verificar si su aplicación se implementó correctamente o no usando kubectl rollout status nginx
apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 y si actualizó el yaml localmente y desea reemplazarlo con el existente, use kubectl replace -f nginx.yaml