一、通过文件创建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
05-02 10:54