pod进阶版(2)

news2024/11/19 13:26:08

startupProbe启动探针

如果探测失败,pod的状态是notready,启动探针会重启容器

启动探针没有成功之前,后续的探针都不会执行。启动探针成功之后,在pod的后续生命周期不会用启动探针

exec方式

正确示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    startupProbe:
      exec:
        command: ["/usr/bin/test","-e","/etc/passwd"]
      initialDelaySeconds: 4
      periodSeconds: 2

故障模拟

httpGet方式

正确示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    startupProbe:
      httpGet:
        port: 8080
        path: /index.jsp
      initialDelaySeconds: 4
      periodSeconds: 2

错误示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    startupProbe:
      httpGet:
        port: 8080
        path: /index.html
      initialDelaySeconds: 4
      periodSeconds: 2

tcpSocket方式

正确示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    startupProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 4
      periodSeconds: 2

故障示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    startupProbe:
      tcpSocket:
        port: 8081
      initialDelaySeconds: 4
      periodSeconds: 2

存活容器 livenessProbe

探测失败,杀死容器重启。

exec方式

正确示范

故障示范

httpGet方式

正确示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    startupProbe:
      httpGet:
        port: 8080
        path: /index.html
      initialDelaySeconds: 4
      periodSeconds: 2

故障示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    livenessProbe:
      httpGet:
        port: 8080
        path: /index.html
      initialDelaySeconds: 4
      periodSeconds: 2

tcpSocket方式

正常示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 4
      periodSeconds: 2

故障模拟

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    livenessProbe:
      tcpSocket:
        port: 8081
      initialDelaySeconds: 4
      periodSeconds: 2

readinessProbe就绪探针

pod的状态是running ready状态是notready,容器不可以提供正常的务访问,就绪探针不会重启容器。

tcpSocket只是监听容器上的业务端口能否正常通信。Tomcat 8081没有,8080还在,也就是正常的端口还是可以访问。


为什么要指定端口检测??????更改了服务端口,探测需要指定端口检测。

注意点:

存活探针和就绪探针会伴随整个pod的生命周期。
就绪探针不重启容器

exec方式

正确示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    readinessProbe:
      exec:
        command: ["/usr/bin/test","-e","/etc/passwd"]
      initialDelaySeconds: 4
      periodSeconds: 2

故障示范

kubectl exec -it tomcat3 -- rm -rf /etc/passwd

httpGet方式

正确示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    readinessProbe:
      httpGet:
        port: 8080
        path: /index.jsp
      initialDelaySeconds: 4
      periodSeconds: 2

故障示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    readinessProbe:
      httpGet:
        port: 8080
        path: /index.html
      initialDelaySeconds: 4
      periodSeconds: 2

tcpSocket方式

 正确示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 4
      periodSeconds: 2

故障示范

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: tomcat3
  name: tomcat3
spec:
  containers:
  - image: tomcat:8.0.52
    name: tomcat3
    readinessProbe:
      tcpSocket:
        port: 8081
      initialDelaySeconds: 4
      periodSeconds: 2

容器启动和退出时的动作:

postStart:容器启动的钩子,容器启动之后触发的条件
preStop: 容器退出的钩子,容器退出之后触发的条件

总结

1、在一个yaml文件当中可以有多个探针,启动 存活 就绪都针对一个容器。
2、启动探针优先级最高,只有启动探针"成功",后续的探针才会执行
3、启动探针成功之后,后续除非重启pod,否则不会再触发启动探针。
4、在生命周期中,一直存在的探针只有:存活探针和就绪探针。
5、在pod的生命周期当中,后续的条件是满足哪个探针的条件,触发哪个探针的条件。
6、就绪探针如果不影响容器运行,状态是running,此时不会重启。容器退出的话,就绪探针也会重启。

挂载卷

容器内部挂载

      volumeMounts:
      - name: test1
        mountPath: /opt
        readOnly: false

声明容器内部的挂载目录
要给这个挂载卷取名,不同挂在卷的名字不能重复
readOnly: false 可读写

节点上挂载

  volumes:
  - name: test1
    hostPath:
      path: /opt/test
      type: DirectoryOrCreate

声明的是node节点上和容器内的/opt的挂载目录
挂载卷的名称和要挂载的容器内挂载卷名称要一一对应
hostPath:指定和容器的挂载目录
type: DirectoryOrCreate: 如果节点上的目录不存在,自动创建该目录。
pod会经常被重启,销毁,一旦容器和node节点做了挂载卷,数据不会丢失。

poststart和prestop

启动和退出的作用:
1、启动可以自定义配置容器的内的环境变量
2、通知机制,告诉用户容器启动完毕
3、退出时,可以执行自定义命令,删除或者生成一些必要的程序,自定义销毁方式以及自定义资源回收的方式以及容器退出的等待时间。

apiVersion: v1
kind: Pod
metadata:
  name: nginx2
spec:
  containers:
    - name: nginx2
      image: centos:7
      command: ["/bin/bash","-c","sleep 3600"]
#容器内挂载卷
      volumeMounts:
      - name: test1
        mountPath: /opt
        readOnly: false
      lifecycle:
#poststart
        postStart:
           exec:
             command: ["/bin/bash","-c","echo lyw from start >> /opt/123.txt ; sleep 10"]
#prestop
        preStop:
           exec:
             command: ["/bin/bash","-c","echo hello from stop >> /opt/123.txt"]
#node节点挂在卷
  volumes:
  - name: test1
    hostPath:
      path: /opt/test
      type: DirectoryOrCreate

在这个pod的生命周期事件当中,把启动探针,存活探针和就绪探针加入到yaml文件当中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1358698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux 使用log4cpp记录项目日志

为什么要用log4cpp记录项目日志 在通常情况下,Linux/UNIX 每个程序在开始运行的时刻,都会打开 3 个已经打开的 stream. 分别用来输入,输出,打印错误信息。通常他们会被连接到用户终端。这 3 个句柄的类型为指向 FILE 的指针。可以…

MobaXterm SSH 免密登录配置

文章目录 1.简介2.SSH 免密登录配置第一步:点击 Session第二步:选择 SSH第三步:输入服务器地址与用户名第四步:设置会话名称第五步:点击 OK 并输入密码 3.密码管理4.小结参考文献 1.简介 MobaXterm 是一个功能强大的终…

shell,对输出的结果去掉空格和换行符号,grep忽略特定字符

对原始的执行命令,直接后面加 |tr -d \n | tr -d |tr -d \n 用来去除换行符 |tr -d 用来出去空格 grep去除特定的字符的行,直接 -v,后接字符。比如: 现在设法去掉含有"ini"的行,执行: …

对象克隆学习

假如说你想复制一个简单变量。很简单: int apples 5; int pears apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。 但是如果你复制的是一个对象,情况就有些复杂了。 …

美洽获评2023年度“最佳数字化服务商”,产品优势赋能企业智能转型

日前,由知名学习交流平台人人都是产品经理举办的“2023年度评选”活动圆满落幕,美洽凭借在企业服务领域的技术实力与优秀实践成果脱颖而出,入围年度产品评选榜单,获评2023年度“最佳数字化服务商”。 人人都是产品经理成立于2010年…

邮件营销发件人名称设置指南:提升邮件信誉度与点击率的技巧

正如品牌名称之于产品,发件人名称之于电子邮件。它有助于提高识别度、熟悉度和清晰度。一封邮件的发件人名称可以是话题的开端,也可以是邮件内容的破坏者。 关于电子邮件的发件人名称,你可能经常不得不思考两件事。 我应该用什么名字&#…

怎么分解一张二维码图片?二维码解码在线处理技巧

相信对于制作二维码很多小伙伴还知道怎么操作,那么分解二维码图片的方法有知道的吗?二维码解码也是在日常生活中经常会需要使用的一个功能,当我们需要将一张图片上的二维码分解使用时,那么最方便快捷的方法就是使用二维码解码器工…

【S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(1)

前言 大联大世平集团推出了一款基于 NXP 车规级 MCU S32K344 的开发板——花名“Cavalry”,它使用 BGA257 封装的 32 位 ArmCortex-M7 S32K344 作为主控芯片,在69.6*130mm 的小体积开发板上搭载了 SBC 电源管理芯片、CAN 收发器、LIN 收发器、FLASH 存储…

Rhinoceros 8.2(犀牛8.2)安装教程

Rhinoceros 8.2下载链接:https://docs.qq.com/doc/DUmhMYmNyUGl6ZVpU 1.选中下载的压缩包,右键解压到“Rhinoceros 8.2”文件夹 2.选中“rhino_en-us_8.2.23346.13001.exe”右键以管理员身份运行 3.点击“小齿轮“ 4.选择安装路径,取消勾选“…

计算机视觉与美颜SDK:详解人脸美型功能的实现过程

众所周知。人脸美型功能作为美颜技术的一项关键特性,对于用户塑造理想形象具有重要意义。本文将深入探讨计算机视觉与美颜SDK中人脸美型功能的实现过程。 一、关键点定位 关键点定位是人脸美型的关键步骤之一。深度学习方法在关键点定位方面取得了巨大的成功&…

已知输入图像大小为n、卷积核大小为f、卷积步长s,填充大小为p,求解输出图像大小。

问题描述:已知输入图像大小为n、卷积核大小为f、卷积步长s,填充大小为p,求解输出图像大小。 问题解答: 输出图像的大小可以使用以下的计算公式确定: 为了举例说明,假设有以下参数: 输入图像大…

【前端】[vue3] vue-router使用

提示:我这边用的是typeScript语法,所以js文件的后缀都是ts。 安装vue-router: (注意:vue2引用vue-router3 vue3才引用vue-router4) npm install vue-router4src文件夹下面创建 router/index.ts(…

如何在CentOS7部署宝塔面板并通过内网穿透实现远程登录面板

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔,内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具,适合新手,简单好用。当我们在家里/公司搭建了宝塔,没有公网IP,但是想要在外也可以访问内…

园区网典型组网架构

知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! 当您在校园学习,单位工作,商场购物时,您可能会注意到,这些场所都被网络覆盖。通过网络,您可…

pip install skopt安装显示没有对应版本问题及解决

一、问题描述以及分析 (一)问题描述 ModuleNotFoundError: No module named skopt pip install skopt Note: you may need to restart the kernel to use updated packages.ERROR: Could not find a version that satisfies the requirement skopt (fro…

数据分析求职-岗位介绍

这是咱们干货开始的第一篇文章,后续我尽量会保持日更的节奏和大家做分享~ 在未来所有分享的内容展开之前,咱们有必要先彻底、深入地了解下数据分析这个岗位。如果你还在犹豫是否要走数据分析的路,或者你已经拿了数据分析的offer想了解下将来…

SSM建材商城网站----计算机毕业设计

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,注册用户管理,新闻公告管理,建材类型管理,配货点管理,建材商品管理,建材订单管理,建材评价管理等功能。 用…

如何保证幂等性

什么是幂等性? 调用方对系统进行重复的调用,不管调用多少次,调用对系统的影响都是相同的。系统默认认为外部系统调用失败是常态,失败之后会有重试。 什么情况下会导致幂等性问题? 网络波动,可能引起重复…

揭开高速应用最佳光耦合器选择的秘密

在快节奏的电子领域,光耦合器的重要性再怎么强调都不为过。这些关键组件在确保电子电路不同部分之间的无缝通信方面发挥着关键作用。本文深入探讨了光耦合器的主要参数,并指导您选择理想的高速光耦合器。 了解光耦合器的基础知识 光耦合器通常称为光隔…

龙芯loongarch64服务器编译安装clang

前言 Clang 是一款开源的 C、C++、Objective-C 和 Objective-C++ 编程语言的编译器前端。它是 LLVM 编译器基础设施项目的一部分,具有优秀的性能、可扩展性和模块化设计。 Clang 提供了一系列主要功能,包括但不限于: 作为编译器前端,负责将源代码转换为中间表示形式(IR)…