当前位置:网站首页>Deployment应用生命周期与Pod健康检查
Deployment应用生命周期与Pod健康检查
2022-07-31 15:09:00 【GottdesKrieges】
通过Deployment部署的应用生命周期的一般过程为:
Deployment应用生命周期
部署
通过yaml文件部署项目:
kubectl apply -f web.yaml
或者命令行临时部署(不推荐,一般只用于测试):
kubectl create deployment web --image=nginx:1.16 --replicas=3
升级
应用部署后通常会经历版本升级。
#方法一:通过配置文件升级
kubectl apply -f xxx.yaml
#方法二:直接升级应用镜像版本
kubectl set image deployment/web nginx=nginx:1.17
#方法三:修改原来部署使用的yaml文件
kubectl edit deployment/web
K8S通过滚动发布的方式升级。滚动发布是指每次只升级一个或多个服务,升级完成后依次加入生产环境。不断执行这个过程,直到集群中的全部旧版本升级到新版本。
查看滚动升级过程:
kubectl describe deployment xxx
kubectl rollout status deployment/xxx
K8S通过ReplicaSet控制器(RS)维护Pod的副本数量。RS会不断对比当前Pod的数量与期望的Pod数量。Deployment每次发布都会创建一个RS作为记录,用于实现滚动升级和版本回退。
如果我们直接删除Deployment中的一个Pod,RS会生成一个新的Pod,以达到期望的Pod数量。
kubectl delete pod xxx
kubectl get pods
查看RS记录:
kubectl get rs [-n default]
查看版本对应RS记录:
kubectl rollout history deployment xxx
回退
应用升级失败后,通常要回退应用版本。
查看历史版本:
kubectl rollout history deployment/web
回退到上一个版本:
kubectl rollout undo deployment/web
回滚到指定历史版本:
kubectl rollout undo deployment/web --to-revision=2
查看镜像对应的版本号:
kubectl describe rs | grep -E "revision|Image"
kubectl describe rs xxx | grep -E "revision|Image"
kubectl describe $(kubectl get rs -o name | grep "web1-") | grep -E "revision|Image"
扩容
随着业务量的变化,通常需要对应用进行水平扩容(或者缩容)。
方法一:修改yaml配置文件里的replicas
值,再重新apply。
kubectl edit deployment/web
kubectl apply -f xxx.yaml
方法二:使用scale
命令直接扩缩容。
kubectl scale deployment web --raplicas=10
下线
项目下线后,需要删除不再使用的Deployment和Service。
kubectl delete deploy/web
kubectl delete svc/web
或者
kubectl delete -f xxx.yaml
Pod健康检查
Pod是K8S创建和管理的最小单元,由一个或多个容器组成。Pod中的容器共享网络和存储资源。Pod中的容器始终位于同一个Node上,不会跨Node。
可以单独运行一个Pod:
kubectl apply -f pod.yaml
kubectl run nginx --image=nginx
此时的Pod不属于任何一个Deployment,也没有对应的ReplicaSet,因此被删除后不会再自动生成一个新的。
Sidecar模式
一个Pod中可以运行多个容器。通过在Pod中定义专门容器,来执行主业务容器需要的辅助工作,这种部署Pod的方法被称为边车模式(Sidecar)。其好处是将辅助功能(如日志收集、应用监控)同主业务容器解耦,实现独立发布和能力重用。
重启策略
可以为Pod定义重启策略restartPolicy
,一般可选以下三种模式:
Always
:当容器终止退出后,总是重启容器,为默认策略;OnFailure
:当容器异常退出(退出状态码非0)时,才重启容器;Never
:当容器终止退出时,从不重启容器。
健康检查
可以为Pod定义健康检查,一般可选以下三种检查探针:
livenessProbe
(存活检查):如果检查失败,将kill容器,并根据重启策略进行操作。readinessProbe
(就绪检查):如果检查失败,会把Pod从Service endpoints中剔除。startupProbe
(启动检查):启动检查成功才由存活检查接手,用于保护慢启动容器。
健康检查一般可以通过以下三种检查方式实现:
httpGet
:发送HTTP请求,返回200-400范围状态码为成功;exec
:执行shell命令返回状态码是0为成功;tcpSocket
:发起TCP Socket建立成功。
边栏推荐
- Prometheus之node_exporter性能监控信息采集含义
- 大健云仓冲刺美股:增营收反减利润 京东与DCM是股东
- Jmeter常用的十大组件
- R语言ggplot2可视化:使用ggpubr包的ggmaplot函数可视化MA图(MA-plot)、font.legend参数和font.main参数设置标题和图例字体加粗
- Spark学习(2)-Spark环境搭建-Local
- R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化箱图、使用font函数自定义图例标题文本(legend.title)字体的大小、颜色、样式(粗体、斜体)
- OpenShift 4 - 定制 RHACS 安全策略,阻断生产集群使用高风险 Registry
- 看交互设计如何集成到Scrum敏捷流程中
- Nuget package and upload tutorial
- thread_local 变量的析构顺序
猜你喜欢
随机推荐
为什么黑客领域几乎一片男生?
学习笔记12--路径-速度分解法之局部路径搜索
Spark学习(3)-Spark环境搭建-Standalone
R language ggplot2 visualization: use the ggboxplot function of the ggpubr package to visualize the grouped box plot, use the ggpar function to change the graphical parameters (caption, add, modify th
网线RJ45接口针脚[通俗易懂]
Nuget package and upload tutorial
LeetCode二叉树系列——110.平衡二叉树
/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 文件的作用
Emmet 语法
安装Xshell并使用其进行Ymodem协议的串口传输
The paper manual becomes 3D animation in seconds, the latest research of Wu Jiajun of Stanford University, selected for ECCV 2022
RecyclerView的高效使用第一节
7、常见面试口语提问问题汇总
sentinel与nacos持久化
RecyclerView高效使用第三节
分成两栏后文字顺序混乱的问题解决【写期刊论文时】
Ubantu project 4: xshell, XFTP connected the virtual machine and set xshell copy and paste the shortcut
The role of /etc/profile, /etc/bashrc, ~/.bash_profile, ~/.bashrc files
OpenShift 4 - 定制 RHACS 安全策略,阻断生产集群使用高风险 Registry
435. 无重叠区间