k8s-RC副本机制

一、libeness probe的三种检测机制

  1. HTTP GET:对容器的IP(指定的端口和路径)执行HTTP GET请求,收到响应并返回状态码不代表错误(2xx/3xx),成功
  2. TCP socket:与容器指定端口建立TCP链接,建立链接成功,表示检测成功
  3. Exec:在容器内执行自定义命令,退出状态码是0,检测成功 

 

二、liveness probe探测机制

  1. kubernetes会在容器崩溃或健康检测失败时(默认连续3次检测都失败,则认为检测失败)通过重启容器保持运行 
  2. 当容器被强制终止时,会创建一个新的容器(而不是重启原来的容器)
  3. 探测附加属性:
    delay(延迟):容器启动后延迟多久开始监控检测(务必设置一个合理的延迟时间,否则在容器进程为完全运行前,检测已经失败,导致容器进入重启死循环)
    timeout(超时):容器的响应时间,超过设定值则超时
    period(周期):间隔多久进行下一次检测
    failure(失败):连续失败多少次后判定检测失败
  4. 检测的准确行:仅检测容器自身进程,(web前段正常,后端故障,重启前段无法恢复问题)
  5. 检测的轻量:资源消耗低、运行时间短(保证容器的轻量的同时不影响容器的运行质量)
  6. 健康检测重启pod是通过节点kubectl完成的(若节点故障则无法恢复)

 

 


四、ReplicationController(简称:RC)

  1. RC是一种资源,确保他的pod始终运行在期望的状态(用户指定的pod数量,即:几副本状态)
  2. RC会持续监控正在运行的pod列表
  3. 当RC的pod无论因何种数量发生变化,RC会根据模板新建,或删除一定数量的pod,已确保pod运行在期望的状态
  4. 通过RC可以实现pod的手动/自动伸缩
五、RC的组成
  1. label selector:标签选择器,用于确定RC作用域中有哪些pod(yml文件可以不指定,默认会根据pod的模板读取)
  2. replica count:副本数量,指定运行的pod数量 
  3. pod template:pod模板,用于创建新的pod副本

 

 

六、RC的作用域 

  1. RC通过作用域管理对应标签的pod
  2. 修改pod的标签后,pod将脱离RC的管控,当pod故障时不会重新被调度
  3. 注意:当修改pod的标签后,对RC本身无影响,他会重新创建出新的pod,直至达到预期状态 

 

七、使用ReplicaSet(简称RS)代替RC

  1. ReplicaSet与RC的行为完全相同
  2. ReplicaSet可以仅通过标签的key匹配pod(RC必须匹配完整的标签:keyvalue)
  3. 修改ReplicaSet对现有的pod无影响,若想更新RS,可以删除现有的pod,RS会更具模板创建新的pod 

 

八、更具表达力的标签选择器

 

  1. key:标签的名称
  2. operator:运算符:多个运算符可以一起使用,但是必须所有表达式都为true
    1)In:label的值必须与其中一个指定的values匹配
    2)NotIn:Label的值与指定的所有values都不匹配
    3)Exists:只匹配key部分,使用次运算符时不指定values字段
    4)DoesNotExist:匹配除指定key以外的所有key ,使用次运算符时不指定values字段
  3. values:标签的值

 

 九、DaemonSet在每个节点运行一个pod

 

  1. DaemonSet的目的是用来运行系统服务
  2. 确保每个节点上运行一个pod
  3. 若有人在某一节点删除了一个pod,那么DaemonSet会在该节点重建pod
  4. 当新节点加入集群时,DaemonSet会立刻部署一个新的pod
  5. DaemonSet也可以只在集群中指定节点部署pod(由pod模板指定) 
  6. 注意:在集群中可以设置节点的属性为“不可调用”,但是DaemonSet还是会在这些节点部署pod,因为DaemonSet不通过调度器进行调度

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-03-28 17:11  jayce9102  阅读(3315)  评论(0编辑  收藏  举报