【5】K8S_Deployment
创始人
2024-05-11 12:18:03
0

目录

1、Deployment作用

2、deployment的冗余能力 

3、deployment的多副本部署

4、deployment的扩缩容

5、deployment的自愈能力

6、滚动更新

7、版本回退


1、Deployment作用

控制Pod,使Pod拥有多副本,自愈,扩缩容等能力

2、deployment的冗余能力 

创建一个deployment的pod用delete删除不了,下面案例两种创建pod的不通 

[root@master ~]# kubectl run nginx --image=nginx
pod/nginx created
[root@master ~]# kubectl create deployment myginx01 --image=nginx
deployment.apps/myginx01 created[root@master ~]# kubectl delete  pod nginx
pod "nginx" deleted[root@master ~]# kubectl delete pod myginx01-5c9d6dbf77-k75d5
pod "myginx01-5c9d6dbf77-k75d5" deleted
[root@master ~]# kubectl get pod 
NAME                        READY   STATUS    RESTARTS   AGE
myginx01-5c9d6dbf77-k8f8x   1/1     Running   0          2m45s

#也可以在开一个窗口看一下效果 

[root@master ~]# watch  -n 1  kubectl get pod 

 只有把delopment删除以后才可以删除pod

[root@master ~]# kubectl delete deploy myginx01
deployment.apps "myginx01" deleted
[root@master ~]# kubectl get pod
No resources found in default namespace.

3、deployment的多副本部署

案例走起:

[root@master ~]# kubectl create deploy mynginx --image=nginx --replicas=3
deployment.apps/mynginx created[root@master ~]# kubectl get pod -owide
NAME                       READY   STATUS    RESTARTS   AGE   IP                NODE     NOMINATED NODE   READINESS GATES
mynginx-5b686ccd46-4w2nm   1/1     Running   0          36s   192.168.196.146   node01              
mynginx-5b686ccd46-cxtjn   1/1     Running   0          36s   192.168.196.144   node01              
mynginx-5b686ccd46-j5xpq   1/1     Running   0          36s   192.168.196.145   node01              
[root@master ~]# kubectl get deploy
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
mynginx   3/3     3            3           92s

也可以在bashboard上部署

 

用yaml部署

先创建一个yaml

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: my-depname: my-dep
spec:replicas: 3selector:matchLabels:app: my-deptemplate:metadata:labels:app: my-depspec:containers:- image: nginxname: nginx
[root@master ~]# kubectl apply -f pod.yaml 
deployment.apps/my-dep created
[root@master ~]# kubectl get deploy
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
my-dep    2/3     3            2           30s
mynginx   5/5     5            5           16m
[root@master ~]# kubectl get deploy
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
my-dep    3/3     3            3           35s
mynginx   5/5     5            5           16m
[root@master ~]# 

4、deployment的扩缩容

kubectl scale --replicas=5 deployment/my-dep

kubectl edit deploy my-dep

 案例走起:

[root@master ~]# kubectl get deploy
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   3/3     3            3           7m17s
[root@master ~]# kubectl scale deploy/my-dep --replicas=5
deployment.apps/my-dep scaled
[root@master ~]# kubectl get deploy
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   5/5     5            5           8m10s
[root@master ~]# kubectl scale deploy/my-dep --replicas=2
deployment.apps/my-dep scaled
[root@master ~]# kubectl get deploy
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           8m42s
[root@master ~]# kubectl edit deploy my-dep
deployment.apps/my-dep edited
[root@master ~]# kubectl get deploy
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/3     3            2           11m

5、deployment的自愈能力

案例走起:

在node01节点上停止一个容器看效果

[root@node01 ~]# docker ps |grep my-dep-5b7868d854-dgrt4
14744aac665a   nginx                                               "/docker-entrypoint.…"   13 minut8s_nginx_my-dep-5b7868d854-dgrt4_default_bc8be424-2226-44f3-8dc5-49b08d1ef3fe_0
96beef3e2dba   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                 13 minut8s_POD_my-dep-5b7868d854-dgrt4_default_bc8be424-2226-44f3-8dc5-49b08d1ef3fe_0
[root@node01 ~]# docker ps |grep my-dep-5b7868d854-dgrt4
14744aac665a   nginx                                               "/docker-entrypoint.…"   14 minutdgrt4_default_bc8be424-2226-44f3-8dc5-49b08d1ef3fe_0
96beef3e2dba   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                 14 minutrt4_default_bc8be424-2226-44f3-8dc5-49b08d1ef3fe_0
[root@node01 ~]# docker stop 14744aac665a
14744aac665a
[root@node01 ~]# 

 发现node01节点的容器重启了一次

[root@master ~]# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-5b7868d854-dgrt4   1/1     Running   1          16m
my-dep-5b7868d854-lq6mz   1/1     Running   0          27m
my-dep-5b7868d854-pgp9n   1/1     Running   0          27m

现在我们把node01服务器关机看效果 

[root@master ~]# kubectl get pod -w
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-5b7868d854-dgrt4   1/1     Running   1          20m
my-dep-5b7868d854-lq6mz   1/1     Running   0          31m
my-dep-5b7868d854-pgp9n   1/1     Running   0          31m
my-dep-5b7868d854-dgrt4   1/1     Terminating   1          25m
my-dep-5b7868d854-6qzt6   0/1     Pending       0          0s
my-dep-5b7868d854-6qzt6   0/1     Pending       0          0s
my-dep-5b7868d854-6qzt6   0/1     ContainerCreating   0          0s
my-dep-5b7868d854-6qzt6   0/1     ContainerCreating   0          1s
my-dep-5b7868d854-6qzt6   1/1     Running             0          2s
[root@master ~]# kubectl get pod -owide
NAME                      READY   STATUS        RESTARTS   AGE     IP                NODE     NOMINATED NODE   READINESS GATES
my-dep-5b7868d854-6qzt6   1/1     Running       0          2m18s   192.168.140.81    node02              
my-dep-5b7868d854-dgrt4   1/1     Terminating   1          27m     192.168.196.154   node01              
my-dep-5b7868d854-lq6mz   1/1     Running       0          38m     192.168.140.80    node02              
my-dep-5b7868d854-pgp9n   1/1     Running       0          38m     192.168.140.79    node02              

6、滚动更新

以yaml的方式查看pod

[root@master ~]# kubectl get deploy my-dep -o yaml
...spec:containers:- image: nginximagePullPolicy: Alwaysname: nginx
...

现在我们要变更镜像的版本

[root@master ~]# kubectl set image deploy/my-dep nginx=nginx:1.16.1  --record
deployment.apps/my-dep image updated

查看效果:

[root@master ~]# kubectl get pod -w
NAME                      READY   STATUS              RESTARTS   AGE
my-dep-5b7868d854-6qzt6   1/1     Running             0          10m
my-dep-5b7868d854-lq6mz   1/1     Running             0          46m
my-dep-5b7868d854-pgp9n   1/1     Running             0          46m
my-dep-6b48cbf4f9-x25jn   0/1     ContainerCreating   0          23s
my-dep-6b48cbf4f9-x25jn   1/1     Running             0          50s
my-dep-5b7868d854-6qzt6   1/1     Terminating         0          10m
my-dep-6b48cbf4f9-gfhnf   0/1     Pending             0          0s
my-dep-6b48cbf4f9-gfhnf   0/1     Pending             0          0s
my-dep-6b48cbf4f9-gfhnf   0/1     ContainerCreating   0          0s
my-dep-5b7868d854-6qzt6   1/1     Terminating         0          10m
my-dep-6b48cbf4f9-gfhnf   0/1     ContainerCreating   0          1s
my-dep-5b7868d854-6qzt6   0/1     Terminating         0          10m
my-dep-6b48cbf4f9-gfhnf   1/1     Running             0          2s
my-dep-5b7868d854-lq6mz   1/1     Terminating         0          46m
my-dep-6b48cbf4f9-ztzzw   0/1     Pending             0          0s
my-dep-6b48cbf4f9-ztzzw   0/1     Pending             0          0s
my-dep-6b48cbf4f9-ztzzw   0/1     ContainerCreating   0          0s
my-dep-5b7868d854-lq6mz   1/1     Terminating         0          46m
my-dep-6b48cbf4f9-ztzzw   0/1     ContainerCreating   0          1s
my-dep-5b7868d854-lq6mz   0/1     Terminating         0          46m
my-dep-5b7868d854-6qzt6   0/1     Terminating         0          10m
my-dep-5b7868d854-6qzt6   0/1     Terminating         0          10m
my-dep-5b7868d854-lq6mz   0/1     Terminating         0          46m
my-dep-5b7868d854-lq6mz   0/1     Terminating         0          46m
my-dep-6b48cbf4f9-ztzzw   1/1     Running             0          17s
my-dep-5b7868d854-pgp9n   1/1     Terminating         0          46m
my-dep-5b7868d854-pgp9n   1/1     Terminating         0          46m
my-dep-5b7868d854-pgp9n   0/1     Terminating         0          46m
my-dep-5b7868d854-pgp9n   0/1     Terminating         0          47m
my-dep-5b7868d854-pgp9n   0/1     Terminating         0          47m
[root@master ~]# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE     IP                NODE     NOMINATED NODE   READINESS GATES
my-dep-6b48cbf4f9-gfhnf   1/1     Running   0          2m41s   192.168.196.158   node01              
my-dep-6b48cbf4f9-x25jn   1/1     Running   0          3m31s   192.168.196.157   node01              
my-dep-6b48cbf4f9-ztzzw   1/1     Running   0          2m39s   192.168.196.159   node01              
[root@master ~]# 
[root@master ~]# kubectl get deploy -o yaml...spec:containers:- image: nginx:1.16.1imagePullPolicy: Alwaysname: nginxresources: {}terminationMessagePath: /dev/termination-logterminationMessagePolicy: File

7、版本回退

查看历史命令

[root@master ~]# kubectl rollout history deployment/my-dep
deployment.apps/my-dep 
REVISION  CHANGE-CAUSE
1         
2         kubectl set image deploy/my-dep nginx=nginx:1.16.1 --record=true

设置回退到1的时候:

[root@master ~]# kubectl rollout undo deploy/my-dep --to-revision=1
deployment.apps/my-dep rolled back

参考一下镜像版本:

[root@master ~]# kubectl get deploy/my-dep -o yaml |grep image{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"my-dep"},"name":"my-dep","namespace":"default"},"spec":{"replicas":3,"selector":{"matchLabels":{"app":"my-dep"}},"template":{"metadata":{"labels":{"app":"my-dep"}},"spec":{"containers":[{"image":"nginx","name":"nginx"}]}}}}f:imagePullPolicy: {}f:image: {}- image: nginximagePullPolicy: Always

Kubernetes-核心概念-其他工作负载

Deployment: 无状态应用部署,比如微服务,提供多副本等功能

StatefulSet:有状态应用部署,比如redis,提供稳定的存储、网络等功能

DaemonSet:守护型应用部署,比如日志收集组件,在每个机器都运行一份

Job/CronJob:定时任务部署,比如垃圾清理组件,可以在指定时间运行

上一篇:TCP协议

下一篇:黑马学ElasticSearch(九)

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...