首页 > 其他分享 >k8s——pod探针

k8s——pod探针

时间:2024-05-22 18:53:59浏览次数:25  
标签:容器 livenessProbe 初始化 重启 启动 探针 pod k8s

探针

简单理解: 容器内应用的检测机制,根据不同的探针来判断容器应用当前的状态

  • 为什么会需要探针
# 情况一
现在有一个商品的微服务,跑着跑着突然内存溢出,程序崩掉了,外面的pod虽然在,但是也相当于挂掉了。这个时候我们,就需要重启服务。
这个服务怎么启动,什么时候启动,什么状态启动。是由,我们指定的重启策略(配置文件里的一个参数‘restartPolicy’)来决定的。

但是,我们怎么知道这个服务挂掉了呢?是靠我们的探针。
当我们的容器创建成功之后,会创建一个探针,这个探针会一直监控容器。如果,这个容器挂掉了,他就会去找是否配置了相对应的重启策略,如果有,就按照重启策略重启这个容器(也决定是否重启)。

# 情况二
有一个商品服务,我启动了这个服务,但是还有一些初始化的配置,没有完成。所以,在我初始化没有完成的时候,我不希望有用户来访问我的端口。那么,我们怎么知道初始化什么时候完成呢?
我们就需要用到探针。

类型

startupProbe

当配置了startupProbe后,会先禁用其他探针,知道startupProbe成功后,其他探针才会继续。
作用:由于有时候不能准确预估应用一定是多长时间启动成功,因此配置另外两种探针。

livenessProbe

用于检查容器内的应用是否还在运行。如果应用因为某种原因挂起或崩溃,它将探测到这个情况,然后会重启该容器。
作用:主要目的是确保应用保持运行状态,而不是陷入死锁或无限循环等无法响应的状态。

readinessProbe

用于探测容器内的程序是否健康,他的返回值如果返回success,那么就认为该容器已经完成启动,并且该容器是可以接受外部流量的。
作用:方便一些需要启动时间来完成初始化或者加载数据的应用非常有用。在这些应用完全准备好之前,readinessProbe会返回失败,从而防止外部请求被发送到尚未完全启动的容器。

探测方式

  • ExecAction

在容器内部执行一个命令,如果返回值为0,则任务容器是健康的。

livenessProbe:
     exec:
       command:
         - cat
         - /health
  • TCPSocketAction

通过tcp连接检测容器内端口是否开房,如果开放则证明该容器健康。

livenessProbe:
       tcpSocket:
          port: 80
  • HTTPGetAction

生产环境用的较多的方式,发送http请求到容器内的应用程序,如果接口返回的状态码在200-400之间,则认为容器健康。

livenessProbe:
    failureThreshold: 5
    httpGet:
      path: /health
      port: 8080
      scheme: HTTP
      httpHeaders:
          - name: xxx
            value: xxx
  • 一些简单的参数
initialDelaySeconds: 5 # 初始化时间
timeoutSeconds: 1 # 超时时间
periodSeconds: 10 # 间隔时间
successThreshold: 1 # 检查一次成功就表示成功
failureThreshold: 3 # 检测失败两次就表示失败
readinessProbe:
    failureThreshold: 3 # 错误次数
    httpGet:
      path: /ready
      port: 8080
      scheme: HTTP
    periodSeconds: 10 # 间隔时间
    successThreshold: 1

标签:容器,livenessProbe,初始化,重启,启动,探针,pod,k8s
From: https://www.cnblogs.com/humlogs/p/18192268

相关文章

  • k8s——pod生命周期
    图解Pod生命周期Pod的退出流程Endpoint删除pod的ip地址Pod变成Terminating状态变为删除中的状态后,会给pod一个宽限期,让pod去执行一些清理或销毁操作配置参数:作用与pod中的所有容器terminationGracePeriodSeconds:30containers://注意terminationGracePerio......
  • k8s——pod的yaml文件
    理解什么是podpod基于deployment创建,删除deployment,pod也会被删除基础pod的yaml文件的资源清单点击查看列表|参数名|类型|字段说明||-----------------------|------|-----------------------......
  • k8s——kubctl命令基础
    语法kubevtl[command][type][name][flags]command:指定要对一个或多个资源执行的操作,例如,`create`,`get`,`describe`,`delete`.type:指定资源类型。资源类型不区分大小写,可以指定单数,复数或缩写形式。kubectlgetpodpod1kubectlgetpodspod1......
  • k8s——daemonset
    daemonset为每一个匹配的node都部署一个守护进程#daemonsetnode:type=logsdaemonset选择节点-nadeSelector:只调度到匹配指定的label的node上-nodeAffinity:功能更丰富的node选择器,比如支持集合操作-podAffinity:调度到满足条件的po所在的node上daemonset的实例......
  • 微服务实践k8s&dapr开发部署实验(1)服务调用
    前置条件安装docker与dapr:手把手教你学Dapr-3.使用Dapr运行第一个.Net程序安装k8sdapr自托管模式运行新建一个webapi无权限项目launchSettings.json中applicationUrl端口改成5001,如下:"applicationUrl":"http://localhost:5001"//WeatherForecastController.......
  • k8s——statefulset
    statefulset基础模版[root@masterstatefulset]#catweb.yaml---apiVersion:v1kind:Servicemetadata:name:nginxlabels:app:nginxspec:ports:-port:80name:webclusterIP:Noneselector:app:nginx---apiVersion:apps/v1ki......
  • minikube 搭建 k8s 单机环境
    准备linux环境uname-acat/etc/os-release查看linux环境查看linux发行版本,可以在/etc目录下找到以release结尾的文件,这个一般就是记录发行版本的文件准备docker环境需要有一个镜像打包的工具安装dockersudoyuminstalldocker如果提示没有找到软件,那么需要配置一下软......
  • 从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)
             你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手!    这里介绍一款平替工具PasteSpider,PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和自己用啥语言开发没关......
  • k8s——deployment
    创建deployment[root@masterdeploy]#kubectlcreatedeploynginx-deploy--image=nginx:1.7.9deployment.apps/nginx-deploycreated//kubectlcreate资源类型资源名称(deployment的名称)指定镜像//都是在动态的更新pod副本的数量deployment和replicaSet是嵌套关......
  • K8S多master节点更换证书
    以下命令master节点均需要执行1.备份cp-a/etc/kubernetes{,.bak}cp-a/var/lib/kubelet{,.bak}cp-a/var/lib/etcd/var/lib/etcd.bak2.生成kubeadm-configkubectl-nkube-systemgetcmkubeadm-config-oyaml>kubeadm-config-20240521.yaml3.刷新证书到期时间再......