pod进阶:探针和容器钩子

探针*

容器钩子:

poststart

prestop

pod的生命周期开始

Q:docker和k8s的重启策略对比

A:

k8s的pod重启策略:

Always:正常退出和非正常退出都重启(deployment的yaml文件只能是Always。pod的yaml文件三种模式都可以)

Never:正常退出和非正常退出都不重启

OnFailure:只有状态码非0才会重启。正常退出不重启

容器退出了,pod才会重启

pod可以有多个容器,只要有一个容器,整个pod都会重启,pod内的所有容器都会重启

docker的重启策略:

docker的默认策略是Never

on-failure:非正常退出才会重启容器

always:只要容器退出,都会重启

unless-stopped:只要容器推出就会重启,docker守护进程时已经停止的容器不再重启

单机部署:docker足够

集群化部署:K8S

如何快捷生成yaml文件

root@master01 opt\]#****kubectl create deployment nginx --image=nginx:1.22 --replicas=3 --dry-run=client**** deployment.apps/nginx created (dry run) \[root@master01 opt\]# ****kubectl get deployment.apps**** NAME READY UP-TO-DATE AVAILABLE AGE centos1 0/1 1 0 20h \[root@master01 opt\]#****kubectl create deployment nginx --image=nginx:1.22 --replicas=3 --dry-run=client -o yaml \> /opt/test1.yml**** \[root@master01 opt\]# ls a.yml cni-plugins-linux-amd64-v0.8.6.tgz rh b.yml containerd test1.yml \[root@master01 opt\]#****kubectl run nginx1 --image=nginx:1.22 --dry-run=client -o yaml \> /opt/test-pod.yaml**** \[root@master01 opt\]# vim test-pod.yaml \[root@master01 opt\]#****kubectl expose deployment nginx2 --port=80 --target-port=80 --type=NodePort --dry-run=client -o yaml \> /opt/testl-service.yaml**** \[root@master01 opt\]# vim testl-service.yaml --dry-run=client: 只是调用api的对象不执行命令 pod内的容器使用节点资源的限制: 1、request: 需要的资源 2、limit:最高能占用系统多少资源 如果只设置request,没有limit,会占用所有 工作中一般就写一个limit limit:需要多少,最多也只能占用这么多 如果只有limit,没有request,会按照limit来 两个限制:内存 CPU CPU的限制格式: ****法一:**** 1 2 0.2 0.1 【最小单位】 可以占用1个cpu 可以占用2个cpu 可以占用0.2个cpu 可以占用0.1个cpu 要么是整数,要么就是小数点后只能跟一位,最小单位0.1 ****法二:**** ****m来表示CPU**** 1000m表示一个cpu CPU时间分片原理: CPU时间分片:通过周期性的轮流分配CPU时间给各个进程。多个进程可以在CPU上交替执行 在K8S中就是表示占用的CPU的比率 m:millicores 单位 内存:Ki/Mi/Gi/Ti #在创建pod时,一定要给容器做资源限制 k8s怎么设置拉取镜像的策略 默认策略: lfNotPresent:如果本地镜像有,则不再拉取。本地没有才会去镜像仓库拉取 Always:不论镜像是否存在,创建/重启时都会重新拉取镜像 Never:仅仅使用本地镜像。本地没有也不会主动拉取 都是本地部署,Never 如果涉及到外部部署,默认策略 (事前要把docker的镜像导入到目标主机) Always:一般不用 ****pod的容器健康检查:探针(probe)**** K8S对容器执行的定期检查、诊断 ****探针的三种规则:**** ****1、存活探针:livenessProbe**** ****探测容器是否正常运行**** ****如果发现探测失败,会杀掉容器,容器会根据重启策略决定是否重启。不是杀掉pod,只是对容器**** ****2、流量/就绪探针**** ****探测容器是否进入ready状态,并做好接受请求的状态**** ****探测失败,ready 0/1 没有进入ready状态。但是status依旧是running,实际不可用**** ****service会把资源对象的端点从当中剔除,service也不会把请求转发到pod**** ****3、启动探针**** ****只是在容器启动后开始检测,容器内的应用是否启动成功。在启动探测成功之前,所有其他的探针都处于禁用状态。一旦启动探针结束,后续的操作就不再受启动探针的影响**** ****在一个容器当中的可以有多个探针**** ****启动探针:只在容器启动时探测**** ****存活**** ****就绪**** ****probe的检查方法:**** ****1、exec探针: 在容器内部执行命令,如果命令的返回码是0,表示成功。**** ****适用于需要在容器内自定义命令来检查容器的健康状况**** ****2、httpGet:**** ****对指定ip**** ****+**** ****端口的容器发送一个httpget的请求。响应状态码大于等于200,小于400都是成功。**** ****200\<=x\<400**** ****适用于检查容器能否响应http的请求,web容器(nginx、tomcat)**** ****3、tcpSocket**** ****端口。对指定端口上的容器的IP地址进行tcp检查(三次握手),端口打开,认为探测成功,否则都是失败。**** ****适用于检查特定容器的端口监听状态**** ****类似于telnet 192.168.233.10 80**** ****诊断结果:**** ****1、成功**** ****容器通过了,正常运行**** ****2、失败**** ****只有存活探针会重启,就绪探针会,启动探针会**** ****3、未知**** ****诊断失败(少见)**** ****exec方式**** ![](https://file.jishuzhan.net/article/1743086639040696321/aa0f8fb5787ba40b5dfe0071c7c839f8.webp) ![](https://file.jishuzhan.net/article/1743086639040696321/598c0f9b66553c95719934794bbb5113.webp) successThreshold: 1 timeoutSeconds: 1 这两个可以不加,其他的三个都要加,是核心指标 总结: 探针: 存活探针: 检测失败之后,会杀死容器,然后重启 探针将伴随整个容器的生命周期 exec:相当于执行了一个shell命令: 容器里面执行 shell命令执行成功:返回码是0表示成功 成功一次即可。只要成功一次就是探测成功 httpGet:对web容器发起的一次Get请求,可以添加path,指定访问的资源。返回码在\[200,400)之间都算成功 tcpSocket:相当于telnet。指定的容器的监听端口是否打开。是否能和指定的容器监听端口进行通信

相关推荐
engchina3 小时前
WSL Ubuntu で Kubernetes v1.34.2 + Docker 環境を構築する
ubuntu·docker·kubernetes
Gold Steps.7 小时前
OpenEBS — 云原生 CNS 高性能存储
云原生·kubernetes·存储
广州中轴线14 小时前
OpenStack on Kubernetes 生产部署实战(十三)
容器·kubernetes·openstack
切糕师学AI15 小时前
Helm Chart 是什么?
云原生·kubernetes·helm chart
广州中轴线16 小时前
OpenStack on Kubernetes 生产部署实战(十七)
容器·kubernetes·openstack
研究司马懿18 小时前
【云原生】Gateway API高级功能
云原生·go·gateway·k8s·gateway api
Harvey9031 天前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
陈桴浮海1 天前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
张小凡vip1 天前
Kubernetes--k8s中部署redis数据库服务
redis·kubernetes
Hello.Reader1 天前
Flink Kubernetes HA(高可用)实战原理、前置条件、配置项与数据保留机制
贪心算法·flink·kubernetes