自主式pod对象由调度器绑定至目标工作节点后即由相应节点上的kubelet负责监控其容器的存活性,容器主进程崩溃后,kubelet能够自动重启相应的容器。不过,kubelet对非主进程崩溃类的容器错误却无感知,这依赖于用户为pod资源对象自定义的存活性探测机制,以便kubelet能够探知到此类故障。然而,在pod对象遭到意外删除,或者工作节点自身发生故障时,又该如何处理呢。

kubelet时k8s集群节点代理程序,它在每个工作节点上都运行着一个实例。因而,集群中的某工作几点发生故障时,其kubelet也必将不再可用,于是,节点上的pod资源的健康状态将无法得到保障,也无法再由kubelet重启。此种场景中的pod存活性一般要由工作节点之外的pod控制器来保证。事实上,遇到意外删除的pod资源的恢复也依赖于其控制器。

pod控制器由master的kube-controller-manager组件提供,常见的此类别的控制器有ReplicationController、ReplicaSet、Deployment、DaemonSet、StatefulSet、Job和ConJob等,它们分别以不同的方式管理pod资源对象。

一、pod控制器概述

master的各组件中,apiserver仅负责将资源存储于etcd中,并将其变动通知给各相关的客户端程序,如kubelet、kube-scheduler、kube-porxy和kube-controller-manager等,kube-scheduler监控到处于未绑定状态的pod对象出现时遂启动调度器为其挑选适配的工作节点,然而,k8s的核心功能之一还在于要确保各资源对象的当前状态以匹配用户期望状态,使当前状态不断地向期望状态和解来完成容器应用管理,而这些则是kube-controller-manager的任务。kube-controller-manager是一个独立的单体守护进程,然而它包含了众多功能不同的控制器类型分别用于各类和解任务。

创建为具体的控制器对象后,每个控制器均通过apiserver提供的接口持续监控相关资源对象的当前状态,并在因故障、更新或其他原因导致系统状态发生变化时,尝试让资源的当前状态向期望状态迁移和逼近。简单来说,每个控制器对象运行一个和解循环负责状态和解,并将目标资源对象的当前状态写入到其status字段中。

List-Watch时k8s实现的核心机制之一,在资源对象的状态发生变动时,由api server负责写入etcd并通过水平触发机制主动通知给相关的客户端程序以确保其不会错过任何一个事件。控制器通过api server的watch接口实时监控目标资源对象的变动并执行和解操作,但并不会与其他控制器进行任何交互,甚至彼此之间根本就意识不到对方的存在。

工作负载一类的控制器资源类型包括ReplicationController、ReplicaSet、Deployment、DaemonSet、Job和ConJob等,它们分别代表了一种类型的pod控制器资源。

二、控制器与pod对象

pod控制器资源通过持续性地监控集群中运行着的pod资源对象来确保受其管控的资源严格符合用户期望的状态,例如资源副本的数量要精确符合期望等。通常一个pod控制器资源至少应该包含三个基本的组成部分。

标签选择器:匹配并关联pod资源对象,并根据此完成受其管控的pod资源计数

期望的副本数:期望在集群中精确运行着的pod资源的对象数量

pod模板:用于新建pod资源对象的pod模板资源。

三、pod模板资源

PodTemplate是k8s api的常用资源类型,常用于为控制器指定自动创建pod资源对象时所需的配置信息。因为要内嵌于控制器中使用,所以pod模板的配置信息中不需要apiVersion和kind字段,但除此之外的其他内容与自定义自主式pod对象所支持的字段几乎完全相同,这包括metadata和spec及其内嵌的其他各个字段。pod控制器类资源的spec字段通常都要内嵌replicas、selector和template字段,其中template即为pod模板的定义。如下:

apiVersion: apps/v1
kind: ReplicaSet
matadata:name: rs-example
spec:replicas: 2selector:matchLabels:app: rs-demotemplate:matadata:labels:app: rs-demospec:containers:- name: myappimage: ikubernetes/myapp:v1ports:- name: httpcontainerPort: 80

转载于:https://www.cnblogs.com/caibao666/p/11200129.html

k8spod控制器概述相关推荐

  1. PID控制器概述及python实现PID控制算法

    PID控制器简要分析 PID控制器概述 PID控制器的分类 位置式PID 增量式PID 代码实现 参数整定 PID控制器概述 PID控制器是自动控制领域一种常见的控制器,其简单易设计的结构和良好的鲁棒 ...

  2. (计算机组成原理)第一章计算机系统概述-第二节:计算机硬件组成(存储器、运算器和控制器概述及计算机工作过程详解)

    文章目录 一:计算机层次结构 (1)早期的冯诺依曼机 (2)现代计算机的组织结构 二:计算机硬件概述 (1)存储器 A:存储元.存储单元.存储体.存储字和存储字长 B:存储器的基本结构 (2)运算器 ...

  3. (王道计算机组成原理)第一章计算机系统概述-第二节:计算机硬件组成(存储器、运算器和控制器概述及计算机工作过程详解)

    王道考研复习指导获取:密码7281 专栏目录首页:[专栏必读]王道考研408计算机组成原理万字笔记.题目题型总结.注意事项.目录导航和思维导图 文章目录 本节思维导图 一:计算机层次结构 (1)冯诺依 ...

  4. LPC1768/1769之CAN控制器概述(附库函数下载地址)

    一.背景:使用LPC1769来做CAN的收发,在此对使用LPC1769的CAN控制器进行收发做个总结和记录,以备下次开发快速上手使用.附:LPC1768/1769除了支持最高频率不同以外,其它基本上一 ...

  5. 光脚丫学ASP.NET MVC(0005):控制器概述

    光脚丫思考 QQ:524130780 邮箱:524130780@QQ.COM 博客:http://blog.csdn.net/GJYSK 视频演示:http://u.115.com/file/aqa2 ...

  6. K8s--Pod控制器详解

    一.Pod控制器介绍 Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类:自主式pod:kubernetes直接创建出来的Pod,这种pod删除 ...

  7. 【云原生】kubernetes学习之资源(对象)控制器概述---概念和实战(五)

    一,kubernetes内的资源(或者称之为对象) 首先,应该是思考一个问题,为什么kubernetes里要引入资源(对象)这个概念? Kubernetes 中的所有内容都被抽象为"资源&q ...

  8. ROS Gazebo(二):概述

    gazebo_ ros_pkgs 功能包实现了ROS和Gazebo集成.它提供了消息.服务.动态参数配置等功能接口,可以用来在Gazebo 中进行机器人的仿真. 支持独立的系统,本身并不是ROS系统组 ...

  9. 【嵌入式】非操作系统下GPIO口控制器及LED灯编程

    非操作系统下GPIO口控制器及LED灯编程 GPIO控制器 概述 内部架构 端口寄存器 GPIO控制寄存器 GPIO数据寄存器 GPIO上拉寄存器 非操作系统LED灯闪烁 开发步骤 开发板上二极管 读 ...

最新文章

  1. 012_Java操作FastDFS
  2. C语言之连接Mysql数据篇
  3. 一个关于导出excel模板的实例
  4. .NET Core 3.0 中的数据库驱动框架 System.Data
  5. [mybatis]全局配置文件标签顺序
  6. 基于STM32和W5500的Modbus TCP通讯
  7. jdbc连接云数据库mysql数据库_使用jdbc连接mysql数据库
  8. 深度学习(六十二)SqueezeNet网络设计思想笔记
  9. IE10 访问 ASP.NET 站点的问题
  10. maven 内存不足_如何修复Maven内存不足问题
  11. 每日算法系列【LeetCode 992】K个不同整数的子数组
  12. javascript调试
  13. AMI与HDB3的matlab实现
  14. 如何找python 包的位置
  15. c语言传送send 函数解析,C语言sendto()函数:经socket传送数据
  16. 手机word如何转换html,如何把Word转换为网页html格式
  17. Django1.9重写用户模型报错has no attribute 'USERNAME_FIELD'
  18. deepin,真好用-09-deepin真垃圾
  19. Windows资源管理器已停止工作的两种解决方法
  20. 机器学习实战(基于scikit-learn和TensorFlow)学习心得(5)--stratified sampling

热门文章

  1. 深度学习框架——学习入门
  2. POI读取word里面的表格并处理数据
  3. “常量中有换行符”的解决方法
  4. 联想—拯救者—R9000P触控板无反应
  5. html5 放风筝,萧山5个放风筝绝佳地
  6. mac latex与texstudio安装
  7. 在安卓手机安装Linux
  8. python安装jupyterlab_jupyter及jupyterlab安装使用
  9. 生产者消费者模型【新版】
  10. 便利贴--25{uniapp移动端滑动模块-因为uniapp打包后没有window,所以要另外去做监听和触控事件的传递}