Kubernetes详解(十七)——Pod存活性探针应用实战

简介: Kubernetes详解(十七)——Pod存活性探针应用实战

今天继续给大家介绍Linux运维相关知识,本文主要内容是Pod存活性探针应用实战。
在上文Kubernetes详解(十六)——Pod容器探测中,我们讲解了Pod容器的探针。今天,我们就来进行以下Pod容器的探针实战。

一、EXEC探针实战
首先,我们进行EXEC的探针实战,创建liveness-probe.yaml的资源配置清单,并写入如下内容:

apiVersion: v1
kind: Pod
metadata:
name: liveness-probe
namespace: default
labels:
probe: liveness
spec:
containers:

  • name: liveness-probe-container
    image: busybox
    imagePullPolicy: IfNotPresent
    command: ["/bin/sh","-c","touch /tmp/healthy;sleep 30;rm -rf /tmp/healthy","sleep 600"]
    livenessProbe:
    exec:
    command: ["test","-e","/tmp/healthy"]
    
    initialDelaySeconds: 2
    periodSeconds: 5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
完成后的资源配置清单文件如下所示:

在上述配置中,我们使用了命令的存活性探针,该探针会不断探测/tmp/healthy文件的存在性,如果该文件不存在,探针就会探测处异常。根据我们镜像的command的配置,容器在启动后,运行30秒就会删除该文件,因此该Pod的运行必然会引发探针异常。我们只需要观察探针异常后是否有Pod容器的重启,就可以判定探针是否工作正常。
然后,我们运行该资源清单配置文件,创建Pod容器,执行命令:

kubectl create -f liveness-probe.yaml
1
Pod容器运行后如下所示:

从上图中可以看出,我们的Pod容器运行成功。接下来,我们等待一段时间,来测试一下探针的作用。
等待一段时间后,Pod容器结果如下:

在上图中可以看出,在pod容器的运行中,随着command命令的作用,探针探测到容器异常,因此Kubernetes会杀死容器并重启。我们的命令探针配置成功!

二、HTTP探针实战
接下来,我们进行HTTP的探针实战,创建http-probe.yaml的资源配置清单,并写入如下内容:

apiVersion: v1
kind: Pod
metadata:
name: http-probe
namespace: default
labels:
probe: http
spec:
containers:

  • name: http-probe
    image: nginx:1.12
    imagePullPolicy: IfNotPresent
    ports:
    • name: http
      containerPort: 80
      lifecycle:
      postStart:
      exec:
      command: ["/bin/bash","-c","echo Http-Probe > /usr/share/nginx/html/ishealth.html"]
      
      livenessProbe:
      httpGet:
      path: /ishealth.html
      port: http
      scheme: HTTP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
完成后的资源配置清单文件如下所示:

在上述配置中,我们定义了一个HTTP的探针,该探针会不断探测网站根目录下/ishealth.html文件(该文件由容器中的command命令创建)的存在性,如果该文件不存在,探针就会探测到异常。
我们运行该资源清单配置文件,创建Pod容器,执行命令:

kubectl create -f http-probe.yaml
1
该容器运行后,我们进入该容器,删除ishealth.html的文件,观察容器状态,结果如下所示:

可以看出,当我们删除容器后,由于探针探测到异常,引发容器的重启。我们的HTTP探针成功!

三、TCP探针实战
最后,我们进行TCP的探针实战,创建tcp-probe.yaml的资源配置清单,并写入如下内容:

apiVersion: v1
kind: Pod
metadata:
name: tcp-probe
namespace: default
labels:
probe: tcp
spec:
containers:

  • name: tcp-rpobe
    image: nginx:1.12
    ports:
    • name: http
      containerPort: 80
      livenessProbe:
      tcpSocket:
      port: http

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
完成后的资源配置清单文件如下所示:

在上述配置中,我们的探针会不断探测容器的80端口,如果80端口不通,则探针会探测到异常。
我们运行该资源清单配置文件,创建Pod容器,执行命令:

kubectl create -f tcp-probe.yaml
1
启动容器。
容器启动后,我们可以执行命令:

kubectl describe pods/tcp-probe
1
来查看该Pod的TCP探针设置,结果如下所示:

从上图中,也可以看出我们配置的TCP探针的内容。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/124286729

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
4天前
|
Kubernetes API 调度
Pod无法调度到可用的节点上(K8s)
完成k8s单节点部署后,创建了一个pod进行测试,后续该pod出现以下报错: Warning FailedScheduling 3h7m (x3 over 3h18m) default-scheduler 0/1 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling..
27 0
|
6天前
|
SQL Kubernetes 数据处理
实时计算 Flink版产品使用问题之在 flink-conf.yaml 中定义的配置在某些情况下未被正确应用到 K8s 上运行的任务管理器(JobManager)和任务管理节点(TaskManager),是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
11天前
|
Kubernetes 前端开发 Serverless
Serverless 应用引擎产品使用合集之如何调用Kubernetes集群内服务
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
19天前
|
容器 Perl Kubernetes
深入 Kubernetes 网络:实战K8s网络故障排查与诊断策略
本文介绍了Kubernetes网络的基础知识和故障排查经验,重点讨论了私有化环境中Kubernetes网络的挑战。首先,文章阐述了Kubernetes网络模型的三大核心要素:Pod网络、Service网络和CNI,并强调了其在容器通信和服务发现中的作用。接着,通过三个具体的故障案例,展示了网络冲突、主节点DNS配置更改导致的服务中断以及容器网络抖动问题的解决过程,强调了网络规划、配置管理和人员培训的重要性。最后,提到了KubeSkoop exporter工具在监控和定位网络抖动问题中的应用。通过这些案例,读者可以深入了解Kubernetes网络的复杂性,并学习到实用的故障排查方法。
146223 18
|
22天前
|
Kubernetes 算法 调度
k8s群集调度之 pod亲和 node亲和 标签指定
k8s群集调度之 pod亲和 node亲和 标签指定
|
22天前
|
Kubernetes 应用服务中间件 数据安全/隐私保护
yaml文件格式详解 及 k8s实战演示
yaml文件格式详解 及 k8s实战演示
|
22天前
|
Kubernetes Cloud Native 开发者
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第31天】 在数字化转型和技术迭代的大潮中,企业对于敏捷、可扩展的IT基础设施需求日益增长。云原生技术以其独特的优势成为推动这一进程的关键力量。本文深入探讨了如何通过结合Kubernetes容器编排和微服务架构来构建和维护高效、可靠的云原生应用。我们将剖析这种技术整合的必要性,揭示其背后的原理,并讨论在实际部署过程中可能遇到的挑战及解决方案。通过案例分析和最佳实践的分享,旨在为开发者和架构师提供一套行之有效的云原生应用构建指南。
|
23天前
|
Kubernetes 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同应用
【5月更文挑战第30天】 在当今软件开发领域,微服务架构已成为实现系统模块化、提升可维护性及扩展性的关键策略。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理,共同构建一个既高效又可靠的后端微服务环境。我们将剖析Docker和Kubernetes的核心功能,以及它们如何相辅相成,支撑起现代化的云原生应用程序部署和管理。文章还将提供具体实践案例,帮助开发者理解将理论应用于实际开发过程中的步骤和考虑因素。
|
13小时前
|
Kubernetes 算法 API
K8S 集群认证管理
【6月更文挑战第22天】Kubernetes API Server通过REST API管理集群资源,关键在于客户端身份认证和授权。
|
2天前
|
Kubernetes 前端开发 微服务
实操教程丨如何在K8S集群中部署Traefik Ingress Controller
实操教程丨如何在K8S集群中部署Traefik Ingress Controller