Corre una aplicación stateless usando un Deployment
Ésta página enseña como correr una aplicación stateless usando un deployment de Kubernetes.
- Objetivos
- Antes de empezar
- Creando y explorando un nginx deployment
- Actualizando el deployment
- Escalando la aplicación aumentado el número de replicas
- Eliminando un deployment
- ReplicationControllers
- Siguientes pasos
Objetivos
- Crear un
deploymentde nginx. - Usar kubectl para obtener información acerca del
deployment. - Actualizar el
deployment.
Antes de empezar
Debes tener un cluster Kubernetes a tu dispocición, y la herramienta de línea de comandos kubectl debe estar configurada. Si no tienes un cluster, puedes crear uno utilizando Minikube,
o puedes utilizar una de las siguientes herramientas en línea:
Su versión de Kubernetes debe ser como mínimo v1.9.
Para comprobar la versión, introduzca kubectl version.
Creando y explorando un nginx deployment
Puedes correr una aplicación creando un deployment de Kubernetes, y puedes describir el deployment en un fichero YAML. Por ejemplo, el siguiente fichero YAML describe un deployment que corre la imágen Docker nginx:1.7.9:
application/deployment.yaml
|
|---|
|
Crea un
deploymentbasado en el fichero YAML:kubectl apply -f https://k8s.io/examples/application/deployment.yamlObtén información acerca del
deployment:kubectl describe deployment nginx-deploymentEl resultado es similar a esto:
user@computer:~/website$ kubectl describe deployment nginx-deployment Name: nginx-deployment Namespace: default CreationTimestamp: Tue, 30 Aug 2016 18:11:37 -0700 Labels: app=nginx Annotations: deployment.kubernetes.io/revision=1 Selector: app=nginx Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 1 max unavailable, 1 max surge Pod Template: Labels: app=nginx Containers: nginx: Image: nginx:1.7.9 Port: 80/TCP Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Available True MinimumReplicasAvailable Progressing True NewReplicaSetAvailable OldReplicaSets: <none> NewReplicaSet: nginx-deployment-1771418926 (2/2 replicas created) No events.Lista los pods creados por el
deployment:kubectl get pods -l app=nginxEl resultado es similar a esto:
NAME READY STATUS RESTARTS AGE nginx-deployment-1771418926-7o5ns 1/1 Running 0 16h nginx-deployment-1771418926-r18az 1/1 Running 0 16hMuestra información acerca del pod:
kubectl describe pod <pod-name>donde
<pod-name>es el nombre de uno de los pods.
Actualizando el deployment
Puedes actualizar el deployment aplicando un nuevo fichero YAML. El siguiente fichero YAML
especifica que el deployment debería ser actualizado para usar nginx 1.8.
application/deployment-update.yaml
|
|---|
|
Aplica el nuevo fichero YAML:
kubectl apply -f https://k8s.io/examples/application/deployment-update.yamlComprueba como el
deploymentcrea nuevos pods con la nueva imagen mientras va eliminando los pods con la especificación antigua:kubectl get pods -l app=nginx
Escalando la aplicación aumentado el número de replicas
Puedes aumentar el número de pods en tu deployment aplicando un nuevo fichero YAML.
El siguiente fichero YAML especifica un total de 4 replicas, lo que significa que el deployment debería tener cuatro pods:
application/deployment-scale.yaml
|
|---|
|
Aplica el nuevo fichero YAML:
kubectl apply -f https://k8s.io/examples/application/deployment-scale.yamlVerifica que el
deploymenttiene cuatro pods:kubectl get pods -l app=nginxEl resultado es similar a esto:
NAME READY STATUS RESTARTS AGE nginx-deployment-148880595-4zdqq 1/1 Running 0 25s nginx-deployment-148880595-6zgi1 1/1 Running 0 25s nginx-deployment-148880595-fxcez 1/1 Running 0 2m nginx-deployment-148880595-rwovn 1/1 Running 0 2m
Eliminando un deployment
Elimina el deployment por el nombre:
kubectl delete deployment nginx-deployment
ReplicationControllers
La manera preferida de crear una aplicación con múltiples instancias es usando un Deployment, el cual usa un ReplicaSet. Antes de que Deployment y ReplicaSet fueran introducidos en Kubernetes, aplicaciones con múltiples instancias eran configuradas usando un ReplicationController.
Siguientes pasos
- Aprende más acerca de Deployments.
Comentarios
¿Esta página le ha sido de ayuda?
Muchas gracias por el feedback. Si tienes alguna pregunta específica sobre como usar Kubernetes, puedes preguntar en Stack Overflow. Abre un issue en el repositorio de GitHub si quieres reportar un problema o sugerir alguna mejora.