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 开发者 Docker
构建高效微服务架构:Docker与Kubernetes的协同应用
【5月更文挑战第30天】 在当今软件开发领域,微服务架构已成为实现系统模块化、提升可维护性及扩展性的关键策略。本文深入探讨了如何通过Docker容器化技术和Kubernetes集群管理,共同构建一个既高效又可靠的后端微服务环境。我们将剖析Docker和Kubernetes的核心功能,以及它们如何相辅相成,支撑起现代化的云原生应用程序部署和管理。文章还将提供具体实践案例,帮助开发者理解将理论应用于实际开发过程中的步骤和考虑因素。
|
5天前
|
Kubernetes Cloud Native 开发者
构建高效的云原生应用:Docker与Kubernetes的完美搭档
【5月更文挑战第29天】 在现代软件开发领域,"云原生"这一术语已经成为高效、可扩展和弹性的代名词。本文将深入探讨如何通过Docker容器化技术和Kubernetes集群管理工具实现云原生应用的构建和管理。我们将剖析Docker的核心原理,揭示其轻量级和易于部署的特点,并进一步探索Kubernetes如何为这些容器提供编排,保证应用的高可用性与自动扩缩容。文章不仅讨论了二者的技术细节,还提供了实践案例,帮助开发者理解并运用这些技术构建和维护自己的云原生应用。
|
3天前
|
Kubernetes 算法 调度
k8s群集调度之 pod亲和 node亲和 标签指定
k8s群集调度之 pod亲和 node亲和 标签指定
|
3天前
|
Kubernetes 应用服务中间件 数据安全/隐私保护
yaml文件格式详解 及 k8s实战演示
yaml文件格式详解 及 k8s实战演示
|
3天前
|
Kubernetes Cloud Native 开发者
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第31天】 在数字化转型和技术迭代的大潮中,企业对于敏捷、可扩展的IT基础设施需求日益增长。云原生技术以其独特的优势成为推动这一进程的关键力量。本文深入探讨了如何通过结合Kubernetes容器编排和微服务架构来构建和维护高效、可靠的云原生应用。我们将剖析这种技术整合的必要性,揭示其背后的原理,并讨论在实际部署过程中可能遇到的挑战及解决方案。通过案例分析和最佳实践的分享,旨在为开发者和架构师提供一套行之有效的云原生应用构建指南。
|
5天前
|
机器学习/深度学习 存储 监控
Kubernetes 集群的持续监控与性能优化策略深度学习在图像识别中的应用与挑战
【5月更文挑战第29天】 在当今微服务架构和容器化部署的大背景下,Kubernetes 已成为众多企业的首选平台。然而,随着集群规模的扩大和业务复杂性的增加,如何确保系统的高可用性和性能稳定性成为一个挑战。本文将探讨针对 Kubernetes 集群实施的持续监控方案以及针对性能瓶颈的优化策略,旨在帮助运维人员有效管理和提升其服务的质量。
|
6天前
|
Kubernetes Cloud Native PHP
构建高效云原生应用:基于Kubernetes的微服务治理实践深入理解PHP中的命名空间
【5月更文挑战第28天】 在当今数字化转型的浪潮中,云原生技术以其独特的弹性、可扩展性和敏捷性成为了企业IT架构的重要选择。本文深入探讨了如何在云平台之上,利用Kubernetes这一容器编排工具,实现微服务架构的有效治理。通过分析微服务设计原则与Kubernetes特性的融合,提出了一套系统的微服务部署、监控和管理策略。文章不仅阐述了关键技术点,还提供了具体实施步骤和最佳实践,以期帮助企业构建出既高效又稳定的云原生应用。 【5月更文挑战第28天】在PHP的编程世界中,命名空间是管理代码和避免名称冲突的强大工具。本文将探讨PHP命名空间的核心概念、实现方式及其在现代PHP开发中的应用。通过深
|
6天前
|
弹性计算 Kubernetes 监控
【阿里云弹性计算】阿里云 ECS 与 Kubernetes 集成:轻松管理容器化应用
【5月更文挑战第28天】阿里云ECS与Kubernetes集成,打造强大容器管理平台,简化应用部署,实现弹性扩展和高效资源管理。通过Kubernetes声明式配置在ECS上快速部署,适用于微服务和大规模Web应用。结合监控服务确保安全与性能,未来将深化集成,满足更多业务需求,引领容器化应用管理新趋势。
22 2
|
7天前
|
运维 监控 Kubernetes
构建高效稳定的云基础设施:自动化运维在企业级应用中的关键实践Kubernetes集群监控与性能优化策略
【5月更文挑战第27天】 随着云计算技术的不断成熟和企业数字化转型的深入,构建一个高效、稳定且可扩展的云基础设施已成为众多组织的核心诉求。本文将重点探讨自动化运维在实现这一目标中的重要作用,通过案例分析展示自动化工具和策略如何优化资源管理、提升服务响应速度以及降低运营成本。文章还将讨论自动化过程中面临的挑战,如安全性、复杂性管理和人员技能提升,并提供针对性的解决方案。
|
6天前
|
存储 运维 监控
Kubernetes 集群监控与日志管理实践
【5月更文挑战第28天】在微服务架构日益普及的当下,容器编排工具如 Kubernetes 已成为运维工作的核心。有效的集群监控和日志管理是确保系统稳定性和服务可靠性的关键。本文将深入探讨 Kubernetes 集群的监控策略,以及如何利用现有的工具进行日志收集、存储和分析,以实现对集群健康状况的实时掌握和问题快速定位。