【5】K8S_Deployment

news2025/1/19 3:25:14

目录

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   <none>           <none>
mynginx-5b686ccd46-cxtjn   1/1     Running   0          36s   192.168.196.144   node01   <none>           <none>
mynginx-5b686ccd46-j5xpq   1/1     Running   0          36s   192.168.196.145   node01   <none>           <none>
[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-dep
  name: my-dep
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-dep
  template:
    metadata:
      labels:
        app: my-dep
    spec:
      containers:
      - image: nginx
        name: 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   <none>           <none>
my-dep-5b7868d854-dgrt4   1/1     Terminating   1          27m     192.168.196.154   node01   <none>           <none>
my-dep-5b7868d854-lq6mz   1/1     Running       0          38m     192.168.140.80    node02   <none>           <none>
my-dep-5b7868d854-pgp9n   1/1     Running       0          38m     192.168.140.79    node02   <none>           <none>

6、滚动更新

以yaml的方式查看pod

[root@master ~]# kubectl get deploy my-dep -o yaml
...
    spec:
      containers:
      - image: nginx
        imagePullPolicy: Always
        name: 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   <none>           <none>
my-dep-6b48cbf4f9-x25jn   1/1     Running   0          3m31s   192.168.196.157   node01   <none>           <none>
my-dep-6b48cbf4f9-ztzzw   1/1     Running   0          2m39s   192.168.196.159   node01   <none>           <none>
[root@master ~]# 
[root@master ~]# kubectl get deploy -o yaml

...
  spec:
        containers:
        - image: nginx:1.16.1
          imagePullPolicy: Always
          name: nginx
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File

7、版本回退

查看历史命令

[root@master ~]# kubectl rollout history deployment/my-dep
deployment.apps/my-dep 
REVISION  CHANGE-CAUSE
1         <none>
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: nginx
        imagePullPolicy: Always

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【正点原子FPGA连载】第十五章开发环境搭建 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十五章开发环境…

uniapp 窗口小工具、桌面小部件、微件(日历、时间) Ba-AwCalendarS

简介&#xff08;下载地址&#xff09; Ba-AwCalendarS 是一款窗口小工具&#xff08;桌面小部件、微件&#xff09;插件&#xff0c;默认为简单的时间样式&#xff0c;有其他界面需要&#xff0c;可联系作者定制。 支持定时更新&#xff08;本插件为每分钟&#xff09;支持点…

基于springboot,vue二手交易平台

开发工具&#xff1a;IDEA服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8项目构建&#xff1a;maven数据库&#xff1a;mysql5.7系统用户前台和管理后台两部分&#xff0c;项目采用前后端分离前端技术&#xff1a;vue elementUI服务端技术&#xff1a;springbootmybatis项目功…

【数据结构】开端序幕

写在前面&#xff0c;感同身受初学数据结构&#xff0c;是不是一脸懵&#xff0c;下面你中招了几条&#xff1f;&#x1f62d;怎么全是指针&#xff01;指针都不会啊&#xff01;怎么变量名那么长&#xff0c;好难理解啊!什么p&#xff0c;什么next&#xff0c;pp->next究竟…

LeetCode[1753]移除石头的最大得分

难度&#xff1a;中等题目&#xff1a;你正在玩一个单人游戏&#xff0c;面前放置着大小分别为 a、b和 c的 三堆 石子。每回合你都要从两个 不同的非空堆 中取出一颗石子&#xff0c;并在得分上加 1分。当存在 两个或更多 的空堆时&#xff0c;游戏停止。给你三个整数 a、b和 c…

动手深度学习-多层感知机

目录感知机多层感知机激活函数sigmoid函数tanh函数ReLU函数多层感知机的简洁实现参考教程&#xff1a;https://courses.d2l.ai/zh-v2/ 感知机 模型&#xff1a; 感知机模型就是一个简单的人工神经网络。 感知机是二分类的线性模型&#xff0c;其输入是实例的特征向量&#x…

智慧管廊智能化运维管理平台详情

运维管理平台 ​ 平台主界面完成各分系统情况的全局性展现&#xff0c;用图形界面的方法提升视觉效果感染力&#xff0c;根据图色区分正常、异常情况。 1、自然环境及设备监控 ​ 选用全景分层三维可视化地理信息系统及其多元化的二维在线地图从温度、风速、电力、排水、安防…

windows检测远程主机是否连通或者某个端口是否开启

文章目录一、检测主机是否连通步骤二、测试端口是否打开步骤telnet安装一、检测主机是否连通 ping命令是个使用频率极高的网络诊断工具&#xff0c;在Windows、Unix和Linux系统下均适用。它是TCP/IP协议的一部分&#xff0c;用于确定本地主机是否能与另一台主机交换数据报。根…

2022年度总结 EXI-小洲

文章目录一、第一次自我介绍二、2022我都干了些什么(我的收获)1.大专顺利毕业2.后端开发辞职3.第二次代表学校参加江西省职业院校大数据技能大赛4.专升本考试5.参加泰迪杯第五届"数据分析技能赛"6.在csdn开始写博文7.在本科阶段&#xff0c;我又认识了几个会喝点酒的…

【2022年度总结】总结过去,展望未来

文章目录前言回顾过去一、刷题道路两眼黑二、助人为乐本身便是一种快乐展望未来兔年Flag博客文章竞赛目标学习目标志同道合前言 注册CSDN一年了&#xff0c;新年伊始&#xff0c;正好趁着这个时间复盘一下逝去的2022&#xff01; 很幸运&#xff0c;在对计算机知识懵懂无知的时…

分布式调度XXL-JOB急速入门

文章目录1.业界分布式定时任务框架简介2.分布式调度XXL-JOB核心特性3.Docker部署MySQL8.04.XXL-JOB数据库脚本介绍5.Docker部署XXL-JOB服务端6.XXL-JOB UI菜单模块介绍7.SpringBoot整合XXL-JOB8.分布式调度参数传递9.分布式调度日志埋点10.自定义返回执行成功或失败11.XXL-Job高…

C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)

C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 2019 在上次的分享中,我们了解了TIA博途一侧的具体组态配置,具体内容可参考以下链接中的内容: C#上位机基础学习_基于SOCKET实现与PLC服务…

【ROS】—— 机器人系统仿真 —URDF优化_xacro (十四)

文章目录前言1. URDF优化_xacro2. Xacro_快速体验3. Xacro_语法详解3.1 属性与算数运算3.2 宏3.3 文件包含4. Xacro_完整使用流程示例4.1 编写 Xacro 文件4.2 集成launch文件5. Xacro_实操前言 &#x1f4e2;本系列将依托赵虚左老师的ROS课程&#xff0c;写下自己的一些心得与笔…

SpringBoot自动配置原理

1、自动配置原理 1、我们编写的SpringBoot启动类上有一个SpringBootApplication注解&#xff0c;表示当前类是springboot的启动类(入口类)。 package com.baidou;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBo…

微信小程序2.9.0基础库canvas2D新API,生成海报保存到手机功能实现

canvasToTempFilePath的官方文档写着在 draw()回调里调用该方法才能保证图片导出成功。文档地址&#xff1a;wx.canvasToTempFilePath(Object object, Object this) | 微信开放文档 我在这里面使用的canva 获取canvas实例&#xff0c;使用的官方的代码。用一个变量canvas保存实…

聊聊 AI 平台存储方案和选型

最近火爆全网的 ChatGPT 再次带来一股 AI 热潮。 过去的五年&#xff0c;AI 快速发展并应用到很多领域中。作为一家存储企业&#xff0c;我们也感受到了 AI 行业的活力&#xff0c;和我们交流团队中&#xff0c;AI 企业越来越多&#xff0c;有自动驾驶、蛋白质结构预测、量化投…

【HTML】【消失的花木兰】花木兰:三兔蹦迪走,安能辨我是兔子?

前言 &#xff08;改编&#xff09;  某日&#xff0c;参军后的花木兰刚回到家乡&#xff0c;却不料遇上抓拿自己的官兵… 因此&#xff0c;花木兰变成兔子躲了起来&#xff0c;你能否找到躲起来的花木兰呢&#xff1f;一起来拭目以待… 一、游戏名称与游戏规则&#xff08…

joinquant量化数据精准吗?

在股票量化投资中&#xff0c;joinquant量化数据起到很大的作用&#xff0c;因为joinquant量化平台的数据能够从众多只股票数据中&#xff0c;能够一一罗列出来&#xff0c;也就是说&#xff0c;joinquant量化数据可以在计算和分析数据模型中&#xff0c;能够帮助投资者找到他们…

【SpringBoot1】创建第一个SpringBoot项目

创建SpringBoot项目可以通过两种方式&#xff1a; 1、通过访问&#xff1a;https://start.spring.io/&#xff0c;SpringBoot的官方网站进行创建SpringBoot项目&#xff1b; 2、通过工具&#xff08;例如&#xff1a;Idea&#xff09;创建SpringBoot项目。本次使用IDEA创建第一…

数据结构进阶 红黑树

作者&#xff1a;小萌新 专栏&#xff1a;数据结构进阶 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍高阶数据结构: 红黑树 红黑树红黑树的概念红黑树的性质红黑树节点的定义红黑树的插入情况一情况二情况三红黑树的验证红黑…