今日鸡汤
我所向往的自律,是每天能够高效地完成工作,然后有充足的时间去享受生活,而不是完美而严苛的时间表。因为,自律本身并不诱人,自律背后的自由才诱人。
今天来看看Kubernetes的核心组件——API Server、
Kubernetes API Server
它的核心功能是提供Kubernetes各类资源对象的增删改查及Watch等HTTP Rest接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽。
Kubernetes API Server是如何运行的?
通过运行在master上的Kube-apiserver进程提供服务。我们可以通过kubectl命令与它交互。
如何保障Kubernetes API Server的安全性?
采用HTTPS安全传输通道与CA签名数字证书强制双向认证。
如何保障Kubernetes API Server的高性能?
- 拥有大量高性能的底层代码。在源码中使用协程+队列这种轻量级的高性能并发代码,使单进程的API Server具备多核处理能力。
- 普通List接口结合异步Watch接口。
- 高性能的etcd数据库。
Kubernetes API Server的架构是什么?
API Server从上到下有四层:
- API 层:以REST方式提供各种API接口
- 访问控制层:Authentication+Authorization+Admission Control
- 注册表层:Kubernetes所有的资源都在注册表中
- etcd数据库:持久化存储Kubernetes对象的KV数据库
Kubernetes API Server与其他模块通信的典型场景?
- 与kubelet进程通信:每个Node上的kubelet每隔一个时间周期,就会调用一次API Server的REST接口报告自身状态,API Server收到这些信息后将节点信息更新到etcd中。
- 与kube-controller-manager交互:kube-controller-manager中的 Node Controller通过API Server提供的Watch接口实时监控Node信息并处理。
- 与kube-schedule交互:Scheduler通过API Server的Watch接口监听到新建Pod副本的信息后,会执行Pod调度逻辑。
Controller Manager
Kubernetes各个模块的管理者,管理8种Controller。
Replication Controller的作用是什么?
副本控制器是为了确保在任何时候集群某个RC关联的Pod数量都保持预设值。
1) 重新调度:确保在当前cluster有且仅有N个Pod实例。
2)弹性伸缩:调整RC的spec.replicas实现系统的扩容和缩容。
3)滚动升级:改变RC的Pod模板实现系统的滚动升级。
Node Controller的作用是什么?
Node Controller 通过API Server实时获取Node相关信息,实现管理和监控集群中各个Node。
ResourceQuota Controller的作用是什么?
确保指定的资源对象在任何时候都不会超量占用系统物理资源,包括三个层次:
1) 容器级别:对CPU和Memory限制;
2)Pod级别:对Pod内所有容器的可用资源限制;
3)Namespace级别:为同一个Namespace级别的资源限制;
Namespace Controller的作用是什么?
定时通过API Server读取存储在etcd的namespace信息。
Endpoints Controller和Service Controller的作用是什么?
Endpoints Controller负责生成和维护所有Endpoints对象,监听Service和对应的Pod副本的变化,当Service被删除、新建、更改时,删除、新建、更改和该Service同名的Endpoints对象。
Service Controller 监听Service的变化。
Scheduler
Kubernetes Scheduler负责接收Controller Manager创建的新的Pod,将待调度的Pod按照特定调度算法和调度策略绑定到集群中某个合适的Node上,并将绑定信息写在etcd中。
kubelet
每个节点都会启动一个kubelet服务进程,用于处理Master下发到本节点的任务,管理Pod及Pod中的容器。它会在API Server上注册节点自身的信息,定期向Master汇报节点情况。
kube-proxy
在Kubernetes每个Node都会运行一个kube-proxy服务进程,用于将到某个Service的访问请求转发到后端多个Pod实例上。
网友评论