一 介绍就绪探针

  1.1  开始介绍就绪探针之前,让我们来提问几个问题?第一,在sevice这章我们了解到, 当流量从Ingress被转发到服务,然后服务从其维护当Endponits

里面列表查找到任一pod之后,就开始将该pod作为服务的后端来处理请求,如果是该pod需要提前预热,或者需要一段时间后才能提供服务,如此servcie也无从知晓?

第二 就是前面我已经介绍过存活探针,回顾一下其作用,存活探针的作用是,感知pod是否正常运行并定时反馈给管控器(RC等),当pod检测出异常之后,就会立马删除该pod

并且重启从镜像仓库里面拉起一摸一样的pod来代替这个异常pod,而就绪探针应该是什么样子的呢?下面对着这些疑问,让我们一起来认识就绪探针,并且分别解答这些问题

  1.2  第一个问题,就是我们要讲的就绪探针,在pod中加入就绪探针,如果pod准备就绪,kubernets就会探测到就绪探针已经ready,可以作为后端的服务器来进行提供服务

反之,服务则会临时就pod剔除Endpoint的列表,等到pod准备就绪才开始将pod作为后端应用提供者加入,并且还可以给就绪探针添加一个延时,pod创建之后到这个时间

点才开始进行对就绪探针的探测

  1.3  就绪探针的类型

  • HTTP探针   对pod探针的内部发起http请求,通过相应的返回码判断是否达到就绪状态
  • Exec探针    在pod内部执行命令,当命令执行结果返回为0则表示达到就绪
  • Tcp socker探针  在pod内部尝试建立tcp连接,若创建成功则表示达到就绪状态

二  向pod中添加就绪探针

  2.1  RC的文件定义

apiVersion: v1
kind: ReplicationController
...
spec:
...
template:
...
spec:
containers:
- name: kubia
image: luksa/kubia
readinessProbe:
exec:
command:
- ls
- /var/ready
  • 如此会向RC中的每个pod都会添加一个就绪探针
  • 对于之前创建的pod显示的状态仍然是ready,因为后面RC的修改对已经创建的pod没影响
  • 如果删除了所有pod,然后在让RC重新根据模板来创建pod,此时pod里面又都没有这个文件,则这些pod都显示为not ready,并且不会作为服务的后端处理请求

三 就绪探针的一些注意事项

  3.1  就绪探针应该是必须的,而不是可选的

    对于微服务而言,都有很多的pod组合而成,当服务和pod被创建成功之后,就预示着就可能会有请求落到pod里面去,但是如果pod应用还没准备好,则客户端会反馈拒绝连接,这意味着

错误的异常发生,很容易给系统管理员或者k8s集群的研发人员造成困惑

  3.2 如果想要从服务中添加pod只需要在pod上面添加标签和服务的标签选择器里面添加enabled=true,同理删除的时候可以将标签删除

  3.3  不需要将容器终于程序添加到就绪探针的逻辑里面,因为只要容器关机,kubernets会从所有的服务中移除这个pod,所有不需要多此一举的去实现这个从服务移除逻辑

kubernets之就绪探针的更多相关文章

  1. Kubernetes 存活、就绪探针

    在设计关键任务.高可用应用程序时,弹性是要考虑的最重要因素之一. 当应用程序可以快速从故障中恢复时,它便具有弹性. 云原生应用程序通常设计为使用微服务架构,其中每个组件都位于容器中.为了确保Kuber ...

  2. 【七】Kubernetes 探针介绍 - 存活、就绪探针案例测试

    一.探针概述 探针是有 kubelet 对容器执行的定期诊断,并不是由 Master 节点发起的探测,而是由每一个 Node 所在的 kubelet 进行探测,这样可以减轻 Master 节点系统负载 ...

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

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

  4. kubernets之存活探针

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

  5. kubernets之Deployment资源

    一  声明式的升级应用 1.1  回顾一下kubernets集群里面部署一个应用的形态应该是什么样子的,通过一副简单的图来描述一下 通过RC或者RS里面的模板创建了三个pod,之后通过一个servci ...

  6. Pod——状态和生命周期管理及探针和资源限制

    一.什么是Podkubernetes中的一切都可以理解为是一种资源对象,pod,rc,service,都可以理解是 一种资源对象.pod的组成示意图如下,由一个叫”pause“的根容器,加上一个或多个 ...

  7. Kubernetes---容器探针

    ⒈含义 探针是由各个节点的kubelet对容器执行的定期诊断.要执行诊断,kubelet 调用由容器实现的Handler[处理程序].有三种类型的处理程序: >ExecAction:在容器内执行 ...

  8. K8S容器探针

    容器探针 探针是由 kubelet对容器执行的定期诊断.要执行诊断, kubelet 调用由容器实现的    Handler .有三种类型的处理程序:   ExecAction :在容器内执行指定命令 ...

  9. kubernets全套笔记

    Master/node Master核心组件: API server,Scheduler,Controller-Manager  etcd(存储组件) Node核心组件:  kubelet(核心组件) ...

随机推荐

  1. 深度图解Redis Cluster原理

    不想谈好吉他的撸铁狗,不是好的程序员,欢迎微信关注「SH的全栈笔记」 前言 上文我们聊了基于Sentinel的Redis高可用架构,了解了Redis基于读写分离的主从架构,同时也知道当Redis的ma ...

  2. mybatis-plus逻辑删除

    MP(mybatis plus)已经大大简化了我们好多的开发操作,基本的增删改查都有了,包括代码生成等等,今天想说的是它的逻辑删除功能.我们都在数据库设计时候经常会有is字段,表示是否删除,为了留下员 ...

  3. 每天学一点ES6(一)开始

    最近学习vue,发现很多用法都不会了,虽然照猫画虎可以跑起来,但是总感觉很朦胧,是是而非的感觉不太好. 听说这些都是ES6的用法,所以决定要学习一下ES6 ES6 全称:ECMASctipt 6 简称 ...

  4. NET 5 原子操作、接口限流Semaphore以及性能测试JMeter

    一.Semaphore 限流也可使用令牌桶算法+redis 1.Semaphore定义 类似互斥锁,但它可以允许多个线程同时访问一个共享资源 通过使用一个计数器来控制对共享资源的访问,如果计数器大于0 ...

  5. python序列(五)切片操作

    功能:截取列表中的任何部分. 切片适用于列表.元组.字符串.range对象等类型.. 格式:[::]切片使用两个冒号分隔的3个数字来完成. 第一个数字表示切片开始位置(默认为0). 第二个数字表示切片 ...

  6. 解决CentOS 8 Docker容器无法上网的问题

    发布于:2020-11-28  Docker  2条评论  3,051 views  如需VPS代购.PHP开发.服务器运维等服务,请联系博主QQ:337003006 CentOS 8已经发行好长一段 ...

  7. JDBC(六)—— 数据库事务

    数据库事务 事务 一组逻辑操作单元,使数据从一种状态变换到另一种状态 事务处理 保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式. 当在一个事务中执行多个操作时,要么所有事 ...

  8. Access-Control-Allow-Headers等基础常识

    跨源资源共享 (CORS) (或通俗地译为跨域资源共享)是一种机制,该机制使用附加的 HTTP 头来告诉浏览器,准许运行在一个源上的Web应用访问位于另一不同源选定的资源. 当一个Web应用发起一个与 ...

  9. android基本组件 Button

    android中提供了普通按钮Buttton和图片按钮ImageButton两种按钮组件,ImageButton按钮中主要有一个android:src属性,用于设置按钮的背景图片.可以在Button的 ...

  10. Nginx解决前端访问资源跨域问题

    被前端跨域问题折磨快2天后,终于用ngnx的方式解决了,所以在此总结下. 该篇只探讨如何用Ngnx解决跨域问题,对于原理不作讨论. 1.首先介绍Windows环境下Nignx的相关命令操作 nginx ...