当前位置:网站首页>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建立成功。
边栏推荐
猜你喜欢

leetcode303场周赛复盘

AVH部署实践 (一) | 在Arm虚拟硬件上部署飞桨模型

2021 OWASP TOP 10 漏洞指南

消息队列消息数据存储MySQL表设计

Ubantu project 4: xshell, XFTP connected the virtual machine and set xshell copy and paste the shortcut
![[CUDA study notes] First acquaintance with CUDA](/img/a2/f322ebe9dc483028f68882ee2c866b.png)
[CUDA study notes] First acquaintance with CUDA

WeChat chat record search in a red envelope

深入浅出边缘云 | 4. 生命周期管理

Ubantu专题4:xshell、xftp连接接虚拟机以及设置xshell复制粘贴快捷键

The meaning of node_exporter performance monitoring information collection in Prometheus
随机推荐
AVH Deployment Practice (1) | Deploying the Flying Paddle Model on Arm Virtual Hardware
Message queue data storage MySQL table design
MANIFEST.MF文件(PDB文件)
R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化分组箱图、使用ggpar函数改变图形化参数(caption、添加、修改可视化图像的题注、脚注内容)
基于极限学习机(ELM)进行多变量用电量预测(Matlab代码实现)
Female service community product design
小试牛刀:Go 反射帮我把 Excel 转成 Struct
STM32(十)------- SPI通信
自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统
[CUDA study notes] First acquaintance with CUDA
ASP.NET Core 产生连续 Guid
Essential Learning for Getting Started with Unity Shader - Transparency Effect
R语言ggplot2可视化:使用ggpubr包的ggmaplot函数可视化MA图(MA-plot)、font.legend参数和font.main参数设置标题和图例字体加粗
Matlab矩阵基本操作(定义,运算)
7、常见面试口语提问问题汇总
NPM淘宝镜像(最新版本)于2021-11-21 16:53:52发布新版本npm镜像[通俗易懂]
网银被盗?这篇文章告诉你如何安全使用网银
TRACE32 - C source code association
乡村基冲刺港交所:5个月期内亏2224万 SIG与红杉中国是股东
vb中如何连接mysql_vb怎么连接数据库「建议收藏」