本文简单概括了 kubernetes 里有什么组件,以及它们是如何工作的。
一、kubernetes 的组件和架构
一个 kubernetes 集群包含两部分:master 节点和 node 节点。master 节点负责接收管理员对于 kubernetes 资源对象的修改,并根据这些修改,对 node 节点进行配置和调度。node 节点是 kubernetes 集群内的计算节点,负责给部署在上面的业务应用提供计算以及储存能力。
kubernetes 里有以下组件:Kubernetes API Server、Controll Manager、Scheduler、kubelet 和 kube-proxy。
其中,Kubernetes API Server、Controll Manager、Scheduler 运行在 master节点上。而 kubelet 和 kube-proxy 运行在 node 节点上。
这些组件分别负责 kubernetes 运行的不同职责:
-
Kubernetes API Server:kubernetes 集群的管理入口,它提供 HTTP REST 接口给 kubernetes 用户进行集群的配置,这些配置将会保存在 master 节点运行的 etcd 里面,供其他组件查阅。
-
Controll Manager:负责监听 etcd 变化并作出对应的动作。Controll Manager 是一系列 manager 的统称,其中有以下这些manager:
- Replication Manager:负责 node 节点的 pod 管理。
- Node Controller:负责 node 节点管理。
- Namespace Controller:负责管理集群内的命名空间。
- ResourceQuota Controller:负责针对 namespace、pod、容器这三个维度的资源限制管理。
- ServiceAccount Controller:负责管理集群内访问的账号。
- Token Controller:负责允许访问 kubernetes 集群的 token。
- Service Controller:负责管理集群内的 Service。
- Endpoint Controller:负责管理集群内的 Endpoint。
-
Scheduler:负责接收 Replication Controller 的指挥,对要部署在 node 上的 pod 进行调度。Scheduler 会根据调度算法以及调度策略,调度 pod 在哪个 node 上部署。
-
kubelet:node 节点上运行与 master 节点进行交互的进程。负责监控集群 etcd 内配置的变动,对本 node 上的 pod 进行管理。
-
kube-proxy:node 上的网络 sidecar,负责 node 上的容器的网络请求以及外部网络请求的代理。 kubernetes 的 service 概念以及负责均衡就是依靠 kube-proxy 实现的。
二、场景分析
根据一些 kubernetes 的使用场景,来说明各个组件的协作过程。
- 创建 namespace
- 创建 deploymentA
- 创建 serviceA
- 将 创建 serviceA 的 nodeport 配置,并从外部访问service
- 创建 serviceB 以及 deploymentB
- deploymentA 通过 service 名访问 deploymentB (未完待续)