一、libeness probe的三种检测机制
- HTTP GET:对容器的IP(指定的端口和路径)执行HTTP GET请求,收到响应并返回状态码不代表错误(2xx/3xx),成功
- TCP socket:与容器指定端口建立TCP链接,建立链接成功,表示检测成功
- Exec:在容器内执行自定义命令,退出状态码是0,检测成功
二、liveness probe探测机制
- kubernetes会在容器崩溃或健康检测失败时(默认连续3次检测都失败,则认为检测失败)通过重启容器保持运行
- 当容器被强制终止时,会创建一个新的容器(而不是重启原来的容器)
- 探测附加属性:
delay(延迟):容器启动后延迟多久开始监控检测(务必设置一个合理的延迟时间,否则在容器进程为完全运行前,检测已经失败,导致容器进入重启死循环)
timeout(超时):容器的响应时间,超过设定值则超时
period(周期):间隔多久进行下一次检测
failure(失败):连续失败多少次后判定检测失败 - 检测的准确行:仅检测容器自身进程,(web前段正常,后端故障,重启前段无法恢复问题)
- 检测的轻量:资源消耗低、运行时间短(保证容器的轻量的同时不影响容器的运行质量)
- 健康检测重启pod是通过节点kubectl完成的(若节点故障则无法恢复)
四、ReplicationController(简称:RC)
- RC是一种资源,确保他的pod始终运行在期望的状态(用户指定的pod数量,即:几副本状态)
- RC会持续监控正在运行的pod列表
- 当RC的pod无论因何种数量发生变化,RC会根据模板新建,或删除一定数量的pod,已确保pod运行在期望的状态
- 通过RC可以实现pod的手动/自动伸缩
- label selector:标签选择器,用于确定RC作用域中有哪些pod(yml文件可以不指定,默认会根据pod的模板读取)
- replica count:副本数量,指定运行的pod数量
- pod template:pod模板,用于创建新的pod副本
六、RC的作用域
- RC通过作用域管理对应标签的pod
- 修改pod的标签后,pod将脱离RC的管控,当pod故障时不会重新被调度
- 注意:当修改pod的标签后,对RC本身无影响,他会重新创建出新的pod,直至达到预期状态
七、使用ReplicaSet(简称RS)代替RC
- ReplicaSet与RC的行为完全相同
- ReplicaSet可以仅通过标签的key匹配pod(RC必须匹配完整的标签:keyvalue)
- 修改ReplicaSet对现有的pod无影响,若想更新RS,可以删除现有的pod,RS会更具模板创建新的pod
八、更具表达力的标签选择器
- key:标签的名称
- operator:运算符:多个运算符可以一起使用,但是必须所有表达式都为true
1)In:label的值必须与其中一个指定的values匹配
2)NotIn:Label的值与指定的所有values都不匹配
3)Exists:只匹配key部分,使用次运算符时不指定values字段
4)DoesNotExist:匹配除指定key以外的所有key ,使用次运算符时不指定values字段 - values:标签的值
九、DaemonSet在每个节点运行一个pod
- DaemonSet的目的是用来运行系统服务
- 确保每个节点上运行一个pod
- 若有人在某一节点删除了一个pod,那么DaemonSet会在该节点重建pod
- 当新节点加入集群时,DaemonSet会立刻部署一个新的pod
- DaemonSet也可以只在集群中指定节点部署pod(由pod模板指定)
- 注意:在集群中可以设置节点的属性为“不可调用”,但是DaemonSet还是会在这些节点部署pod,因为DaemonSet不通过调度器进行调度
所有评论(0)