12. Deployments

Show nginx deployment definition

$ tee files/nginx-deployment.yaml << EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
EOF

Create nginx deployment

$ kubectl create -f files/nginx-deployment.yaml

List deployments

$ kubectl get deployments -o wide

Get deployment details

$ kubectl describe deployment nginx-deployment

Show deployment YAML file (look for: ‘nginx:1.7.9’)

$ kubectl get deployment nginx-deployment -o wide

Change deployment image (version 1.7.9 -> 1.8) - you can do the change by running ‘kubectl edit deployment nginx-deployment’ too…

$ kubectl set image deployment nginx-deployment nginx=nginx:1.8

See what is happening during the deployment change

$ kubectl rollout status deployment nginx-deployment

Get deployment details (see: ‘nginx:1.8’)

$ kubectl get deployment nginx-deployment -o wide

Show details for deployment

$ kubectl describe deployment nginx-deployment

See the deployment history (first there was version nginx:1.7.9, then nginx:1.8)

$ kubectl rollout history deployment nginx-deployment --revision=1
$ kubectl rollout history deployment nginx-deployment --revision=2

Rollback the deployment to previous version (1.7.9)

$ kubectl rollout undo deployment nginx-deployment
$ kubectl rollout status deployment nginx-deployment

Get deployment details - see the image is now again ‘nginx:1.7.9’

$ kubectl get deployment nginx-deployment -o wide

Rollback the deployment back to version (1.8)

$ kubectl rollout undo deployment nginx-deployment --to-revision=2
$ kubectl rollout status deployment nginx-deployment

Get deployment details - see the image is now again ‘nginx:1.8’

$ kubectl get deployment nginx-deployment -o wide

Check the utilization of pods

$ kubectl top pod --heapster-namespace=myns --all-namespaces --containers