前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes中的探针使用

kubernetes中的探针使用

原创
作者头像
堕落飞鸟
发布2023-03-29 12:57:56
4790
发布2023-03-29 12:57:56
举报
文章被收录于专栏:飞鸟的专栏

在Kubernetes中,探针(Probe)是一种用于检查容器是否正常运行的机制。探针分为两种类型:Liveness探针和Readiness探针。Liveness探针用于检查容器是否仍在运行,而Readiness探针用于检查容器是否准备好接收流量。

探针可以使用以下三种方式之一定义在Pod中:

HTTP GET

使用HTTP GET探测器时,Kubernetes会向Pod的容器发送HTTP GET请求,并等待容器返回200状态码。如果容器返回200状态码,则Kubernetes认为容器正在运行,并继续向容器发送流量。如果容器未返回200状态码,则Kubernetes认为容器已停止,并开始重启容器。

下面是一个使用HTTP GET探测器的示例yaml文件:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: myapp-image
    ports:
    - containerPort: 80
    readinessProbe:
      httpGet:
        path: /healthz
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10
      failureThreshold: 3

在上面的示例中,Readiness探针被定义为一个HTTP GET请求,发送到容器的端口80上。如果容器返回200状态码,则Kubernetes认为容器已准备好接收流量。探针的初始化延迟为5秒,间隔为10秒,失败阈值为3。

TCP

使用TCP探针时,Kubernetes会尝试连接Pod的容器的指定端口,并等待成功的连接。如果连接成功,则Kubernetes认为容器正在运行,并继续向容器发送流量。如果连接失败,则Kubernetes认为容器已停止,并开始重启容器。

下面是一个使用TCP探针的示例yaml文件:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: myapp-image
    ports:
    - containerPort: 80
    readinessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10
      failureThreshold: 3

在上面的示例中,Readiness探针被定义为一个TCP连接,连接到容器的端口80。如果连接成功,则Kubernetes认为容器已准备好接收流量。探针的初始化延迟为5秒,间隔为10秒,失败阈值为3。

Exec

使用Exec探针时,Kubernetes会在Pod的容器中执行指定的命令,并等待命令成功执行。如果命令成功执行,则Kubernetes认为容器正在运行,并继续向容器发送流量。如果命令未成功执行,则Kubernetes认为容器已停止,并开始重启容器。

下面是一个使用Exec探针的示例yaml文件:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: myapp-image
    ports:
    - containerPort: 80
    readinessProbe:
      exec:
        command:
        - /bin/sh
        - -c
        - ps aux | grep myapp
      initialDelaySeconds: 5
      periodSeconds: 10
      failureThreshold: 3

在上面的示例中,Readiness探针被定义为一个执行命令,检查容器中是否存在名为"myapp"的进程。如果命令成功执行,则Kubernetes认为容器已准备好接收流量。探针的初始化延迟为5秒,间隔为10秒,失败阈值为3。

需要注意的是,Exec探针需要在容器中安装支持执行命令的工具,例如bash或sh。

除了Readiness探针,Liveness探针也可以使用上述三种方式之一进行定义。唯一的区别是Liveness探针用于检测容器是否仍在运行,而不是检测容器是否准备好接收流量。例如,以下是一个使用Exec探针的Liveness探针示例yaml文件:

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
  - name: myapp-container
    image: myapp-image
    ports:
    - containerPort: 80
    livenessProbe:
      exec:
        command:
        - /bin/sh
        - -c
        - ps aux | grep myapp
      initialDelaySeconds: 5
      periodSeconds: 10
      failureThreshold: 3

在上面的示例中,Liveness探针被定义为一个执行命令,检查容器中是否存在名为"myapp"的进程。如果命令成功执行,则Kubernetes认为容器正在运行。探针的初始化延迟为5秒,间隔为10秒,失败阈值为3。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在Kubernetes中,探针(Probe)是一种用于检查容器是否正常运行的机制。探针分为两种类型:Liveness探针和Readiness探针。Liveness探针用于检查容器是否仍在运行,而Readiness探针用于检查容器是否准备好接收流量。
  • HTTP GET
  • TCP
  • Exec
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档