一、通过文件创建deployment
1、创建deployment文件
[root@k8s-master ~]# cat nginx_deploy.yml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: 10.0.128.0:5000/nginx:1.13 ports: - containerPort: 80
2、启动deployment
[root@k8s-master ~]# kubectl create -f nginx_deploy.yml deployment "nginx-deployment" created
3、查看deployment状态
[root@k8s-master ~]# kubectl get all NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/nginx-deployment 3 3 3 3 17s NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE svc/kubernetes 10.254.0.1 <none> 443/TCP 1d svc/nginx 10.254.145.15 <nodes> 80:30027/TCP 21h NAME DESIRED CURRENT READY AGE rs/nginx-deployment-2950479891 3 3 3 17s NAME READY STATUS RESTARTS AGE po/nginx-deployment-2950479891-3zzdf 1/1 Running 0 17s po/nginx-deployment-2950479891-6nqn3 1/1 Running 0 17s po/nginx-deployment-2950479891-wxxr5 1/1 Running 0 17s
二、通过命令行创建deployment
1、删除方式1创建的deployment
[root@k8s-master ~]# kubectl delete -f nginx_deploy.yml deployment "nginx-deployment" deleted [root@k8s-master ~]# kubectl get all NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 1d nginx 10.254.145.15 <nodes> 80:30027/TCP 21h
2、命令创建
[root@k8s-master ~]# kubectl run nginx --image=10.0.128.0:5000/nginx:1.13 --replicas=5 --record deployment "nginx" created
3、查看
[root@k8s-master ~]# kubectl get all -o wide NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/nginx 5 5 5 0 3s NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR svc/kubernetes 10.254.0.1 <none> 443/TCP 1d <none> svc/nginx 10.254.145.15 <nodes> 80:30027/TCP 22h app=myweb NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR rs/nginx-835034785 5 5 0 3s nginx 10.0.128.0:5000/nginx:1.13 pod-template-hash=835034785,run=nginx NAME READY STATUS RESTARTS AGE IP NODE po/nginx-835034785-b9mnp 0/1 ContainerCreating 0 3s <none> k8s-node2 po/nginx-835034785-gp2m5 0/1 ContainerCreating 0 3s <none> k8s-node1 po/nginx-835034785-hhz0b 0/1 ContainerCreating 0 3s <none> k8s-node1 po/nginx-835034785-mvv4p 0/1 ContainerCreating 0 3s <none> k8s-node2 po/nginx-835034785-x6mjp 0/1 ContainerCreating 0 3s <none> k8s-node1
4、升级镜像版本
[root@k8s-master ~]# kubectl set image deploy nginx nginx=10.0.128.0:5000/nginx:1.15 deployment "nginx" image updated [root@k8s-master ~]# kubectl get all -o wide NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/nginx 5 5 5 5 32s NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR svc/kubernetes 10.254.0.1 <none> 443/TCP 1d <none> svc/nginx 10.254.145.15 <nodes> 80:30027/TCP 22h app=myweb NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR rs/nginx-835034785 0 0 0 32s nginx 10.0.128.0:5000/nginx:1.13 pod-template-hash=835034785,run=nginx rs/nginx-984850083 5 5 5 14s nginx 10.0.128.0:5000/nginx:1.15 pod-template-hash=984850083,run=nginx NAME READY STATUS RESTARTS AGE IP NODE po/nginx-984850083-4xt4s 1/1 Running 0 5s 172.16.50.4 k8s-node1 po/nginx-984850083-gk5fq 1/1 Running 0 7s 172.16.50.2 k8s-node1 po/nginx-984850083-mhp7h 1/1 Running 0 13s 172.16.50.3 k8s-node1 po/nginx-984850083-vs93g 1/1 Running 0 14s 172.16.19.4 k8s-node2 po/nginx-984850083-z5px0 1/1 Running 0 11s 172.16.19.5 k8s-node2
四、秒级回滚
1、查看历史版本
[root@k8s-master ~]# kubectl rollout history deployment nginx deployments "nginx" REVISION CHANGE-CAUSE 1 kubectl run nginx --image=10.0.128.0:5000/nginx:1.13 --replicas=5 --record 2 kubectl set image deploy nginx nginx=10.0.128.0:5000/nginx:1.15
2、执行回滚
[root@k8s-master ~]# kubectl rollout undo deployment nginx --to-revision=1 deployment "nginx" rolled back
3、回滚结果
[root@k8s-master ~]# kubectl get all -o wide NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deploy/nginx 5 5 5 5 1m NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR svc/kubernetes 10.254.0.1 <none> 443/TCP 1d <none> svc/nginx 10.254.145.15 <nodes> 80:30027/TCP 22h app=myweb NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR rs/nginx-835034785 5 5 5 1m nginx 10.0.128.0:5000/nginx:1.13 pod-template-hash=835034785,run=nginx rs/nginx-984850083 0 0 0 1m nginx 10.0.128.0:5000/nginx:1.15 pod-template-hash=984850083,run=nginx NAME READY STATUS RESTARTS AGE IP NODE po/nginx-835034785-1j1pp 1/1 Running 0 11s 172.16.19.2 k8s-node2 po/nginx-835034785-8jvd0 1/1 Running 0 11s 172.16.50.4 k8s-node1 po/nginx-835034785-9cn2z 1/1 Running 0 6s 172.16.19.3 k8s-node2 po/nginx-835034785-9v5q6 1/1 Running 0 7s 172.16.50.2 k8s-node1 po/nginx-835034785-wwqx7 1/1 Running 0 5s 172.16.50.5 k8s-node1
4、版本测试
[root@k8s-master ~]# curl -I 172.16.50.4 HTTP/1.1 200 OK Server: nginx/1.13.12 Date: Mon, 21 Jan 2019 11:45:08 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Mon, 09 Apr 2018 16:01:09 GMT Connection: keep-alive ETag: "5acb8e45-264" Accept-Ranges: bytes