首页 > 系统相关 >linux系统kubernetes容器检查和恢复机制

linux系统kubernetes容器检查和恢复机制

时间:2024-03-20 17:58:41浏览次数:17  
标签:检查和 容器 name kubernetes exec liveness 探针 linux tmp

容器检查和恢复机制

容器检查和恢复机制

在kubernetes中,可以为容器定义一个健康探针,kubelet 就会根据这个 Probe 的返回值决定这个容器的状态,而不是直接以容器是否运行(来自 Docker 返回的信息)作为依据。这种机制,是生产环境中保证应用健康存活的重要手段。

存活检查(启动时候)和就绪检查(启动后)

三种探针方式,命令行,http发送请求,探测端口

命令模式探针

vim test-liveness-exec.yaml
---
apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: test-liveness-exec
spec:
  containers:
  - name: liveness
    image: daocloud.io/library/nginx
    args:
    - /bin/sh
    - -c  
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 50
    livenessProbe:    #探针,健康检查
      exec:    #类型
        command:  #命令
        - cat 
        - /tmp/healthy
      initialDelaySeconds: 5   #健康检查,在容器启动5s后开始执行
      periodSeconds: 5   #每5s执行一次
      
      
      
它在启动之后做的第一件事是在/tmp目录下创建了一个healthy文件,以此作为自己已经正常运行的标志。而30s过后,它会把这个文件删除掉。
与此同时,定义了一个这样的 livenessProbe(健康检查)。它的类型是 exec,它会在容器启动后,在容器里面执行一句我们指定的命令,比如:"cat /tmp/healthy"。这时,如果这个文件存在,这条命令的返回值就是 0,Pod就会认为这个容器不仅已经启动,而且是健康的。这个健康检查,在容器启动5s后开始执行(initialDelaySeconds: 5),每5s执行一次(periodSeconds: 5)。
kubectl apply -f test-liveness-exec.yaml   //创建pod

http get方式探针

vim liveness-httpget.yaml
---
apiVersion: v1
kind: Pod
metadata:
  name: liveness-httpget-pod
  namespace: default
spec:
  containers:
    - name: liveness-exec-container
      image: daocloud.io/library/nginx
      imagePullPolicy: IfNotPresent
      ports:
        - name: http
          containerPort: 80
      livenessProbe:  #探针,健康检查
        httpGet:
          port: http
          path: /index.html
        initialDelaySeconds: 1
        periodSeconds: 3
kubectl create -f liveness-httpget.yaml     //创建pod

POD 的恢复策略

Pod恢复策略:
可以通过设置restartPolicy,改变 Pod 的恢复策略。一共有3种:
    1. Always:      在任何情况下,只要容器不在运行状态,就自动重启容器;
    2. OnFailure:    只在容器 异常时才自动重启容器;
    3. Never:         从来不重启容器。
实际使用时,需要根据应用运行的特性,合理设置这三种恢复策略。

标签:检查和,容器,name,kubernetes,exec,liveness,探针,linux,tmp
From: https://blog.csdn.net/qq_59207739/article/details/136884395

相关文章

  • Linux进程控制
    1.进程创建fork函数#include<unistd.h>pid_tfork(void);返回值:自进程中返回0,父进程返回子进程id,出错返回-1进程调用fork,当控制转移到内核中的fork代码后,内核做:1.分配新的内存块和内核数据结构给子进程2.将父进程部分数据结构内容拷贝至子......
  • 1、戴尔R630本地服务器搭建Linux系统软件硬件环境配置
    目录1.1、服务器配置1.1.1、选择服务器配置方案1.1.2、服务器硬件配置1.1.3、服务器配置检测1.2、网络配置1.2.1、外网配置1.2.2、内网配置1.3、Linux系统Centos镜像下载......
  • linux 中shell脚本中遇到 Runtime error (func=(main), adr=22): Divide by zero
    在Linux中编写Shell脚本时,遇到“Runtimeerror(func=(main),adr=22):Dividebyzero”这样的错误通常是因为在脚本中进行了除以零的操作,类似于编程语言中的除零错误。要解决这个问题,您需要检查Shell脚本中涉及到除法运算的地方,确保分母不为零。下面是一个示例S......
  • linux下InetAddress.getLocalHost()很慢10s
    问题原因:执行InetAddress.getLocalHost()方法的时候,根据系统名称去hosts文件里找匹配的ip发现找不到合适的IP,一直处于等待状态。解决办法:1、查看本机系统名称 2、编辑hosts文件,在其后补充“cenos1”     参考链接:https://blog.csdn.net/lijun169/article/detail......
  • Linux安装字体库
    Linux安装字体下载需要安装的字体①在Windows/Fonts路径下找到需要的字体,上传到需要安装字体的linux服务器查看linux有什么字体命令:fc-list 安装字体库命令:yum-yinstallfontconfig这时在/usr/share/目录就可以看到fonts和fontconfig目录了,本来就有说明已经安......
  • Linux系统的目录及重要文件
    [root@test/]#tree-L1>/home/text1.txt├──bin->usr/bin#所有二进制命令所在的目录(用户)├──boot#内核及引导系统程序所在的目录├──dev#所有设备文件的目录(如磁盘、光驱)├──etc#二进制安......
  • linux通过docker部署sock5的代理
    参考链接:https://appscross.com/2023/06/quickly-install-and-deploy-socks5-service/昨日研究单位的内网机器,如果通过家里的服务器能够ssh访问内网的服务器。无疑查到ssh的软件功能强大,后无聊转到了如何自己在服务器开启socks5代理。 这里我使用的是网上查的使用docker容器......
  • Linux环境运行python项目提示No module named '_ssl'
    版本python3.11.4控制台错误提醒File"/usr/local/python3/lib/python3.11/ssl.py",line100,in<module> import_ssl#ifwecan'timportit,lettheerrorpropagate ^^^^^^^^^^^ModuleNotFoundError:Nomodulenamed'_ssl'错误原因:ce......
  • MySQL - 使用navicate连接虚拟机中linux的mysql
    1、首先在命令行中使用ifconfig命令查看虚拟机IP地址,这个地址是输入到navicat主机名中的。 2、查看window本地Telnet有没有选上;没有的话就勾选上。 3、虚拟机Linux防火墙设置 使用systemctlstopfirewalld命令关闭防火墙#检查Linux防火墙设置状态systemctlstat......
  • 09Linux基础命令
    Linux命令相关介绍1.目录结构Linux的目录结构是一个树型结构Windows系统可以拥有多个盘符,如C盘、D盘、E盘Linux没有盘符这个概念,只有一个根目录/,所有文件都在它下面winsows系统目录结构:Linux系统目录结构2.Linux路径的描述方式在Linux系统中,路径之间的层级关......