Pod是kubernetes中应用程序执行的基本单元,它是kubernetes对象模型中创建或部署的最小和最简单的单元。一个Pod可以包括一个或多个容器,当一个Pod包含多个容器时,这些容器总是运行于同一个工作节点上,一个Pod绝不会跨越多个工作节点。

存活探针与就绪探针是检测应用是否存活及是否做好流量准备的重要手段。

https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

存活探针 livenessProbe

存活探针检测应用是否存活。当存活探针检测到容器非存活状态时,会重启容器。

探针主要分为三种,exec,httpGet,tcpSocket。

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5

httpGet

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/liveness
    args:
    - /server
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
        httpHeaders:
        - name: Custom-Header
          value: Awesome
      initialDelaySeconds: 3
      periodSeconds: 3

tcpSocket

apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  labels:
    app: goproxy
spec:
  containers:
  - name: goproxy
    image: k8s.gcr.io/goproxy:0.1
    ports:
    - containerPort: 8080
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20

就绪探针 readinessProbe

就绪探针检测应用是否就绪,即是否有能力开始接受请求流量。当就绪探针检测到容器非就绪状态时,会将容器标记为非ready状态,并从service的负载均衡器中移除。

存活探针和就绪探针可以混合使用。

使用以下yaml代码定义liveness-readiness-pod-test。

apiVersion: v1
kind: Pod
metadata: 
  name: liveness-readiness-pod-test
  namespace: default
spec:
  containers:
  - name: liveness-readiness-container
    image:  nginx:1.16.1
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    livenessProbe: 
      httpGet:
        port: http
        path: /index.html
      initialDelaySeconds: 1
      periodSeconds: 3
      timeoutSeconds: 10
    readinessProbe:
      httpGet:
        port: http
        path: /index1.html
      initialDelaySeconds: 1
      timeoutSeconds: 10

存活探针检测默认的index.html,就绪探针检测待添加的index1.html。启动yaml文件后,由于index1.html文件不存在,就绪探针不通过。

运行以下命令

kubectl exec liveness-readiness-pod-test -it -- /bin/bash
echo "123" >> /usr/share/nginx/html/index1.html

就绪探针通过,程序进入ready状态。

运行以下命令

kubectl exec liveness-readiness-pod-test -it -- /bin/bash
rm   /usr/share/nginx/html/index.html

等待几秒后,状态变为not ready

这是因为存活探针检测index.html是否存在,失败后会重启应用,导致就绪探针需要的index1.html文件被重置,无法进入ready状态。

以上状态的变化涵盖了探针在容器生命周期中的主要用途。

前言Pod是kubernetes中应用程序执行的基本单元,它是kubernetes对象模型中创建或部署的最小和最简单的单元。一个Pod可以包括一个或多个容器,当一个Pod包含多个容器时,这些容器总是运行于同一个工作节点上,一个Pod绝不会跨越多个工作节点。存活探针与就绪探针是检测应用是否存活及是否做好流量准备的重要手段。https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-sta 探针的作用 就绪探针:一个应用往往需要一段时间来预热和启动,比如一个后端项目的启动需要连接数据库执行数据库迁移等等,一个Spring项目的启动也需要依赖Java虚拟机。即使该过程已启动,您的服务在启动并运行之前也无法运行。应用在完全就绪之前不应接收流量,但默认情况下,Kubernetes会在容器内的进程启动后立即开始发送流量。通过就绪探针探测,直到应用程序完全启动,然后才允许将流量发送到新副本。 存活探针:让我们想象另一种情况,当我们的应用在成功启动以后因为 用于判断容器是否启动完成,即容器的Ready是否为True,可以接收请求,如果ReadinessProbe探测失败,则容器的Ready将为False,控制器将此Pod的Endpoint从对应的service的Endpoint列表中移除,从此不再将任何请求调度此Pod上,直到下次探测成功。通过使用Readiness探针,Kubernetes能够等待应用程序完全启动,然后才允许服务将流量发送到新副本。 比如使用tomcat的应用程序来说,并不是简单地说t...
两种健康检查机制 Liveness探测:用户自定义判断容器是否健康。如果判断失败,则重启容器,使用restart策略。 Readiness探测:Rolling update的判断条件 三种检查方式: httpGet: 发送HTTP请求,返回200-400范围状态码表示成功 exec: 执行Shell命令返回状态码为0表示成功 tcpSocket: 发起TCP Socket建立成功 使用exec命令方式做liveness检查 apiVersion: v1 kind: Pod metadata:
目录k8s 启动探针&存活探针&就绪探针存活就绪探针的区别探针处理程序和结果启动探针存活探针livenessProbe-execlivenessProbe-httpgetlivenessProbe-tcp就绪探针k8s 启动探针&存活探针&就绪探针 因为k8s中采用大量的异步机制、以及多种对象关系设计上的解耦,当应用实例数 增加/删除、或者应用版本发生变化触发滚...
Kubernetes提供了两种探针来检查容器的状态,Liveliness和Readiness,根据官方文档 Liveliness探针是为了查看容器是否正在运行,翻译为存活探针(livenessProbe) Readiness探针是为了查看容器是否准备好接受HTTP请求,翻译为就绪探针(readinessProbe) 存活探针(livenessProbe) Liveness探测器是让Kubernetes知道你的应用是否活着。如果你的应用还活着,那么Kubernetes就让它继续存在。如果你的应用程
一个新Pod创建后,Service就能立即选择到它,并会把请求转发给Pod,那问题就来了,通常一个Pod启动是需要时间的,如果Pod还没准备好(可能需要时间来加载配置或数据,或者可能需要执行一个预热程序之类),这时把请求转给Pod的话,Pod也无法处理,造成请求失败。 Kubernetes解决这个问题的方法就是给Pod加一个业务就绪探针Readiness Probe,当检测到Pod就绪后才允许Service将请求转给Pod。 Readiness Probe同样是周期性的检测Pod,然后根据响应来判断Pod是
LivenessProbe 用于判断容器是否存活(running状态),如果LivenessProbe探针探测到容器不健康,则kubelet杀掉该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,则kubelet认为该容器的LivenessProbe探针返回的值永远是“Success”。 ReadinessProbe 用于判断容器是否启动完成(ready状态),可以接收请求。如果ReadinessProbe探针检测到失败,则Pod的状态被修改。Endpoint
文章目录1.介绍2.Kubernetes探针3.就绪探针存活探针在Actuator3.1.就绪和活跃状态转换4. 管理应用程序可用性4.1. 更新可用性状态4.2.监听变化 本篇中将介绍 Spring Boot 2.3 如何与 Kubernetes 探针集成以创建更愉快的云原生体验。 首先,将从 Kubernetes 探针的一些背景开始。 然后,看看 Spring Boot 2.3 如何支持这些探针。 2.Kubernetes探针 当使用 Kubernetes 作为我编排平台时,每个节点中的 k
### 回答1: 《K8S学习指南PDF》是一本非常有用的指南,它为初学者提供了一份清晰明了的指南,帮助他们学习K8S的基本概念、架构和运作方式。这本指南对于那些希望学习Kubernetes技术并开始构建容器化应用程序的人来说非常重要。在这本指南中,读者可以了解到Kubernetes的主要特点,包括它如何管理和调度容器,并将这些容器部署到集群中。 此外,这本指南还介绍了Kubernetes的核心组件和它们的作用,例如etcd、kube-apiserver、kube-controller-manager、kube-scheduler和kubelet。阅读本指南后,读者将了解到这些组件如何协同工作,以及它们是如何创建、管理和监视容器化应用程序的。 除此之外,《K8S学习指南PDF》还讨论了Kubernetes的一些高级概念,例如自动伸缩、滚动更新和容器网络(CNI)。这些概念将有助于读者充分理解Kubernetes如何支持现代应用程序开发的需求,包括动态伸缩、A/B 测试和分布式应用程序。 总而言之,《K8S学习指南PDF》是一份非常有价值的指南,适合那些想要学习Kubernetes和容器化技术的人使用。它提供了深入浅出的介绍,为读者提供了一个良好的理解Kubernetes和容器化这一创新技术的基础。 ### 回答2: Kubernetes(k8s)是一种流行的容器编排系统,能够自动管理和部署容器化应用程序。而"k8s学习指南"是一本面向初学者的指南性书籍,旨在帮助读者了解Kubernetes技术。本书包含了Kubernetes的基础概念、架构、核心组件、资源对象等核心知识点,并通过多个实践、案例,帮助读者深入了解Kubernetes应用的实际操作过程。总之,该书的重点在于让读者系统地学习和理解Kubernetes的各个方面,为他们快速掌握这一技术打下坚实的基础。 以下是本书的主要内容简介: 第一章介绍了Kubernetes的核心概念及背景知识,以及容器化技术的概述。 第二章重点介绍了Kubernetes的架构、组件、工作原理等核心知识点; 第三章详细解析Kubernetes的核心概念和术语,如:pod、service、replication controller、deployment、statefulset、cronjob等。 第四章介绍了如何安装、配置和使用Kubernetes,包括使用Minikube和Kubernetes in Docker(KinD)进行本地测试等。 第五章介绍了Kubernetes的网络和存储,包括服务发现、负载均衡等不同方面的网络设置。 第六章介绍了Kubernetes的日志和监控,如何生成和收集日志、如何监控Kubernetes集群和应用程序等。 总的来说,这本书对于初学者来说非常友好,通过简单易懂的表述和大量实践案例的引入,能够帮助读者轻松地掌握Kubernetes技术。 ### 回答3: k8s学习指南PDF是一份帮助初学者了解Kubernetes的指南手册。需要指出的是,Kubernetes被广泛认为是容器编排中最好的开源平台,它允许在虚拟或物理机器集群中管理容器化应用程序。它提供了一个简单而可靠的平台,用于快速的容器化应用程序。在这个PDF指南中,使用者将学习到Kubernetes的基础知识,例如Kubernetes的核心构建块,如Pod,ReplicaSet,Deployment等。此外,学习者还将了解如何配置Kubernetes集群,并了解如何使用Kubernetes的持久化存储,例如ConfigMaps和Secrets来管理配置和敏感数据。它还将讨论如何使用Ingress控制器来公开Kubernetes中的服务。学习者可以理解rkt和Docker这两种容器运行时集成Kubernetes的方式以及如何将容器注册到Kubernetes中。除了这些基础知识,学习者还可以了解如何使用Kubernetes的一些应用程序开发和管理工具,例如Helm和Kubectl。总之,这个Kubernetes学习指南PDF为初学者提供了一个全面的指南,其中详细解释了Kubernetes的所有基础知识和工具。