重启策略 (RestartPolicy )

Always:当容器终止退出后,总是重启容器,默认策略。
OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。
Never:当容器终止退出,从不重启容器。
 
probe有以下两种类型:
livenessProbe:如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。
readinessProbe: 如果检查失败,Kubernetes会把Pod从service endpoints中剔除
 
Probe支持以下三种检查方法:
httpGet:发送HTTP请求,返回200-400范围状态码为成功。
exec:执行Shell命令返回状态码是0为成功。
tcpSocket:发起TCP Socket建立成功。
 
 

方法一 httpGet

nginx使用httpGet健康检查的方法
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: nginx
  5. spec:
  6. replicas: 1
  7. selector:
  8. matchLabels:
  9. app: nginx
  10. minReadySeconds: 1
  11. progressDeadlineSeconds: 60
  12. revisionHistoryLimit: 2
  13. strategy:
  14. type: RollingUpdate
  15. rollingUpdate:
  16. maxSurge: 1
  17. maxUnavailable: 1
  18. template:
  19. metadata:
  20. name: nginx
  21. labels:
  22. app: nginx
  23. spec:
  24. containers:
  25. - name: nginx
  26. image: nginx:1.19
  27. ports:
  28. - containerPort: 80
  29. resources:
  30. requests:
  31. memory: "500Mi"
  32. cpu: "250m"
  33. limits:
  34. memory: "500Mi"
  35. cpu: "500m"
  36. livenessProbe:
  37. httpGet:
  38. path: /
  39. port: 80
  40. initialDelaySeconds: 10 #pod启动10秒执行第一次检查
  41. periodSeconds: 5 #第一次检查后每隔5秒检查一次
  42. volumeMounts:
  43. - name: html
  44. mountPath: /usr/share/nginx/html
  45. volumes:
  46. - name: html
  47. hostPath:
  48. path: /home/k8s/data/nginx
  49. ---
  50. apiVersion: v1
  51. kind: Service
  52. metadata:
  53. name: nginx
  54. spec:
  55. type: NodePort
  56. ports:
  57. - port: 8080
  58. nodePort: 30080
  59. selector:
  60. app: nginx
 

方法二:tcpSocket

nginx使用tcpSocket健康检查的方法
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: nginx
  5. spec:
  6. replicas: 1
  7. selector:
  8. matchLabels:
  9. app: nginx
  10. minReadySeconds: 1
  11. progressDeadlineSeconds: 60
  12. revisionHistoryLimit: 2
  13. strategy:
  14. type: RollingUpdate
  15. rollingUpdate:
  16. maxSurge: 1
  17. maxUnavailable: 1
  18. template:
  19. metadata:
  20. name: nginx
  21. labels:
  22. app: nginx
  23. spec:
  24. containers:
  25. - name: nginx
  26. image: nginx:1.19
  27. ports:
  28. - containerPort: 80
  29. resources:
  30. requests:
  31. memory: "500Mi"
  32. cpu: "250m"
  33. limits:
  34. memory: "500Mi"
  35. cpu: "500m"
  36. livenessProbe:
  37. tcpSocket:
  38. port: 80
  39. initialDelaySeconds: 10
  40. periodSeconds: 5
  41. volumeMounts:
  42. - name: html
  43. mountPath: /usr/share/nginx/html
  44. volumes:
  45. - name: html
  46. hostPath:
  47. path: /home/k8s/data/nginx
  48. ---
  49. apiVersion: v1
  50. kind: Service
  51. metadata:
  52. name: nginx
  53. spec:
  54. type: NodePort
  55. ports:
  56. - port: 8080
  57. nodePort: 30080
  58. selector:
  59. app: nginx
 

k8s 存活探针(健康检查)的更多相关文章

  1. k8s 存活探针,滚动更新

    文章原文 存活探针 Kubelet使用liveness probe(存活探针)来确定何时重启容器.例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于 ...

  2. K8s中Pod健康检查源代码分析

    了解k8s中的Liveness和Readiness Liveness: 表明是否容器正在运行.如果liveness探测为fail,则kubelet会kill掉容器,并且会触发restart设置的策略. ...

  3. linux运维、架构之路-K8s健康检查Health Check

    一.Health Check介绍         强大的自愈能力是k8s容器编排引擎一个重要特性,自愈能力的默认实现方式为自动重启发生故障的容器,另外还可以利用Liveness和Readiness探测 ...

  4. kubernets之存活探针

    一   存活探针存在的意义 1.1  kubernet通过存活探针(liveness probe)检查容器是否还在运行,可以为pod中的每个容器单独指定存活探针,如果探针执行失败,kubernets会 ...

  5. kubernetes的存活探针和就绪探针

    1.存活探针 使用Kubernetes的一个主要好处是,可以给Kubernetes-个容器列表来由其保持容器在集群中的运行.可以通过让Kubernetes创建pod资源,为其选择一个工作节点并在该节点 ...

  6. pod健康检查(liveness probe存活探针&&readiness probe 可读性探针)

    在Kubernetes集群当中,我们可以通过配置liveness probe(存活探针)和readiness probe(可读性探针)来影响容器的生存周期.参考文档:https://kubernete ...

  7. 2.k8s.Pod生命周期,健康检查

    #Pod生命周期,健康检查 pod创建过程 Init容器 就绪探测 存活探测 生命周期钩子 #Pod创建过程 master节点:kubectl -> kube-api -> kubenle ...

  8. idou老师教你学Istio 14:如何用K8S对Istio Service进行流量健康检查

    Istio利用k8s的探针对service进行流量健康检查,有两种探针可供选择,分别是liveness和readiness: liveness探针用来侦测什么时候需要重启容器.比如说当liveness ...

  9. k8s入坑之路(14)scheduler调度 kubelet管理及健康检查 更新策略

    kubelet 主要功能 Pod 管理 在 kubernetes 的设计中,最基本的管理单位是 pod,而不是 container.pod 是 kubernetes 在容器上的一层封装,由一组运行在同 ...

随机推荐

  1. IDEA web项目小坑

    1.明明依赖包都加进来了,为什么运行起来报java.lang.ClassNotFoundException? 依赖包的路径只能为{project}web/WEB-INF/lib,如果将lib改为lib ...

  2. vue 快速入门 系列 —— vue-cli 上

    其他章节请看: vue 快速入门 系列 Vue CLI 4.x 上 在 vue loader 一文中我们已经学会从零搭建一个简单的,用于单文件组件开发的脚手架:本篇,我们将全面学习 vue-cli 这 ...

  3. 普通类中获取spring容器中的javabean对象

    spring提供了一系列的*Aware 接口,用于获取相应的对象,进行一系列的对象设置操作,此处实现ApplicationContextAware来获取ApplicationContext. 其他Aw ...

  4. idea启动桌面出现三个日志文件解决办法

    idea一启动就出现上图三个日志文件,soapui是一个接口测试工具插件,在setting中搜索soapui,一般不需要,卸载掉就可以了.

  5. 【网络编程】TCPIP_1_快速入门

    目录 前言 1. 快速入门 1.1 服务端编程简要步骤 1.2 客户端编程简要步骤 1.3 参考 前言 说明: demo 基于 Linux. 1. 快速入门 以下步骤简略了很多细节,但是通过下面的几个 ...

  6. Solon 1.5.24 发布

    本次版本主要变化: 修复 solon.extend.sessionstate.jwt 在特定场景下会无限次解析的问题 优化 solon.extend.cors 对头信息的处理 插件 solon.boo ...

  7. Java的安装过程和开发环境

    首先需要安装jdk(Java Development Kit开发工具包) 下载地址:https://www.oracle.com/java/technologies/javase-downloads. ...

  8. Debian 11 “bullseye” 安装笔记

    作者:gc(at)sysin.org,主页:www.sysin.org Debian 版本:11 代号:bullseye 发布日期:2021.08.14 内核版本:5.10 $ uname -a Li ...

  9. Kali 2.0 安装教程

    本文适合KALI初学者,将详细介绍Kali Linux 2.0的安装过程. 首先我们到KALI的官网下载镜像,大家可以自己选择下载32或64位的KALI 2.0系统. KALI 官网:https:// ...

  10. SpringBoot获取请求的参数

    说明 SpringBoot 为我们封装了许多,简便的获取请求参数的方法! 1.获取无注解获取请求参数 请求地址:http://192.168.0.115:8080/myproject/test/noA ...