pod进阶版(2)

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文件当中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【React系列】react-router

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识react-router 1.2. 前端路由原理 前端路由是如何做到URL和内容进行映射呢?监听URL的改变。 UR…

【优选算法】专题三:二分查找 --- 34. 在排序数组中查找元素的第一个和最后一个位置

从今天开始,xxxflower 带着小伙伴们一起学习算法 ~ 今天我们要写的题目是: 34. 在排序数组中查找元素的第一个和最后一个位置 以下是题目的详细解析: class Solution {public int[] searchRange(int[] nums, int target) {// 判断数组为空的情况下返回-1,-1int[] ret new in…

在centos上安装WordPress 及创建配置文件无反应的解决方案

一、安装Apache服务 1.直接在命令行中输入以下命令即可,顺便安装编译组件: yum install -y httpd yum install -y httpd-devel2.启动Apache服务和设置Apache自启: 1 systemctl start httpd 2 systemctl enable httpd 3.添加一个测试页面,…

4《数据结构》

文章目录 绪论逻辑结构存储结构【物理结构】顺序和链式存储区别顺序表和数组区别数组和链表的区别链表结点概念链表为空条件链表文章http://t.csdnimg.cn/dssVK二叉树B树B树【MYSQL索引默认数据结构】B树和B树区别冒泡排序插排选排快排 绪论 数据结构:研究非数值计…

Html5实用个人博客留言板模板源码

文章目录 1.设计来源1.1 主界面1.2 认识我界面1.3 我的日记界面1.4 我的文章列表界面和文章内容界面1.5 我的留言板界面 2.演示效果和结构及源码2.1 效果演示2.2 目录结构2.3 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151…

关于MySQL Cluster

目录 1.MySQL Cluster2.MySQL Cluster架构3.MySQL Cluster 与 MySQL 主从架构有什么区别4.参考 MySQL Cluster是MySQL的一个高可用性,高性能的分布式数据库解决方案。它结合了内存数据库和共享无状态架构的技术,提供了99.999%的可用性,满足严…

经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构

经典目标检测YOLO系列(一)实现YOLOV1网络(1)总体架构 实现原版的YOLOv1并没有多大的意义,因此,根据《YOLO目标检测》(ISBN:9787115627094)一书,在不脱离YOLOv1的大部分核心理念的前提下,重构一款较新的YOLOv1检测器,来…

【EI会议征稿通知】第十届先进制造技术与应用材料国际学术会议(ICAMMT 2024)

第十届先进制造技术与应用材料国际学术会议(ICAMMT 2024) The 10th International Conference on Applied Materials and Manufacturing Technology 至今ICAMMT已连续举办九届,会议先后在三亚、杭州、清远等城市成功召开。每一届最终征集收…

K8S--部署SpringBoot项目实战

原文网址:K8S--部署SpringBoot项目实战-CSDN博客 简介 本文介绍K8S如何部署SpringBoot项目。 1.生成应用的docker镜像 把SpringBoot项目的jar包打包为docker镜像,见:Docker Compose--部署SpringBoot项目--实战-CSDN博客 创建后的镜像名称…

Django和Vue项目运行过程中遇到的问题及解决办法

这是我从CSDN上边买来的一个系统的资源,准备在此基础上改成自己的系统,但是在运行项目这一步上都把自己难为了好几天,经过不断的摸索,终于完成了第一步!!! 如果大家也遇到同样的问题&#xff0…

Docker基础学习(配置、命令)

镜像加速 登录阿里云 docker run hello-world分析命令: 开始–>docker在本机中寻找镜像–>有–>以该镜像为模版生产容器实例运行; 开始–>docker在本机中寻找镜像–>无–>去远端下载镜像并运行,若远端无此镜像则返回错误…

【教育会议征稿】第五届教育、知识和信息管理国际学术会议(ICEKIM 2024)

第五届教育、知识和信息管理国际学术会议(ICEKIM 2024) 2024 5th International Conference on Education, Knowledge and Information Management 第五届教育、知识和信息管理国际学术会议(ICEKIM 2024)定于4月19至21日在中国成…

Vue-3、模板语法

1、插值语法 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>模板语法</title><!--引入vue--><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2…

Java程序设计——GUI设计

一、目的 通过用户图形界面设计&#xff0c;掌握JavaSwing开发的基本方法。 二、实验内容与设计思想 实验内容&#xff1a; 课本验证实验&#xff1a; Example10_6 图 1 Example10_7 图 2 图 3 Example10_15 图 4 设计思想&#xff1a; ①学生信息管理系统&#xff1a…

JS 手写 new 函数

工作中我们经常会用到 new 关键字&#xff0c;new 一个构造函数生成一个实例对象&#xff0c;那么new的过程中发生了什么呢&#xff0c;我们今天梳理下 创建一个对象对象原型继承绑定函数this返回对象 先创建一个构造函数&#xff0c;原型上添加一个方法 let Foo function (n…

Struts2 远程代码执行漏洞S2-001分析

自 Struts2 在 2007 年爆出第一个远程代码执行漏洞 S2-001 以来&#xff0c;在其后续的发展过程中不断爆出更多而且危害更大的远程代码执行漏洞&#xff0c;而造成 Struts2 这么多 RCE 漏洞的主要原因就是 OGNL 表达式。这里以 Struts2 的第一个漏洞 S2-001 为例来对 Struts2 远…

UE相关杂项笔记

1.PAK包解析 UE4如何反向查找Pak里面包含哪些文件 - 哔哩哔哩 CMD控制台命令输入 D:&quot;Epic Games&quot;\UE_5.1\Engine\Binaries\Win64\UnrealPak.exe 包路径 -list *文件夹带空格时 添加“ ”包裹住文件夹名 解包工具路径 UE引擎安装路径\UE_5.1\Engine\Binarie…

HarmoryOS Ability页面的生命周期

接入穿山甲SDK app示例&#xff1a; android 数独小游戏 经典数独休闲益智 广告接入示例: Android 个人开发者如何接入广告SDK&#xff0c;实现app流量变现 Ability页面的生命周期 学习前端&#xff0c;第一步最重要的是要理解&#xff0c;页面启动和不同场景下的生命周期的…

unity中0GC优化方案《zstring》

文章目录 序言简介GC带来的问题性能瓶颈玩家体验受损 使用方式 序言 游戏开发秉承遇到好东西要分享&#xff0c;下面介绍zstring&#xff0c;感谢作者开源无私奉献 源码地址&#xff1a;https://github.com/871041532/zstring 简介 GC带来的问题 性能瓶颈 GC暂停主线程执行…

c# 学习笔记 - 委托(Delegate)

文章目录 1. 委托1.1 委托概述1.2 委托使用1.3 委托的传播 2. 匿名方法2.1 匿名方法概述2.2 匿名方法 1. 委托 1.1 委托概述 委托简介 委托就是对方法的引用&#xff0c;可以理解为例如整型变量的容器可以存储整形数据&#xff0c;委托就是某种方法的容器&#xff0c;可以用来…