Kubernetes (K8s) 作为现在最热的微服务框架,掌握它的架构原理是我们学习、部署和诊断 K8s 的基础。K8s 整体上分为两个部分,第一个部分是 Master,这是 K8s 的大脑。第二个部分是 Node,这个是工作集,一般来说就是一台台虚机。一个最小的完整 K8s 安装包括 两个 Master 和 3 个 Node。
K8s Master
K8s Master 至少包括 4 个进程,它们分别是:
- API Server
- Scheduler
- Controller Manager
- etcd
API Server
通过提供RESTful API 来控制整个 K8s。通常我们使用 kubectl 来和 API Server 交互以达到控制 K8s 的目的。
etcd
这是 K8s 的数据库。 etcd 是一个高可靠、高可扩展的键值数据库,保存了集群中所有节点的数据。
Scheduler
Scheduler 监控所有节点 (Node),为新创建的、还没有分配到节点 (Node) 的 Pod, 选择合适的节点。选择节点考虑的因素有资源需求,软硬件约束条件,本地的数据资源等。
Controller Manager
控制器管理器包括,节点管理器、副本控制器,端点控制器,以及服务账号和令牌控制器。
这里的重点是节点管理器和副本控制器。节点管理器负责通知和响应节点的故障,而副本控制器负责为系统中的每个副本控制器对象维护正确数量的 Pod。
K8s Node
K8s Node 通常包括 3 个进程:
- 容器
- Kube-proxy
- Kubelet
容器管理进程可以是 Docker, containerd, 或者CRI-O等,一般我们会使用 Docker。
Kube-proxy 负责 K8s Service 对外和对内通信,把服务请求路由到 Pod 上,proxy 优化了网络访问路径,比如 Pod 要访问数据库服务,Proxy 会优先访问 pod 自身所在的 Node 中的数据库 pod,而不会路由到其他的 Node 上的数据库,这样就可以提升网络性能。
Kubelet 负责管理 Pod 中的容器,执行 api server 发来的指令,并返回结果。
Minikube
Minikube 是 K8s 提供的集成开发环境,它允许我们在一台机器上安装整套 K8s。根据上面的介绍,我们可以知道,Minikube 会上文提到的包括 7 个进程。
总结
本文介绍了 K8s 的架构。K8s 通常包括 Master 服务器和 Node 服务器。Master 服务器通常包括 4 个管理用的进程,它们是 API Server,etcd,Scheduler 和 Controller Manager。而 Node 服务器包括 3 个进程,它们是容器管理,比如 Docker,Kube-proxy,以及 Kubelet。
参考链接
Kubernetes 的 9 个核心组件
Kubernetes: 如何安装 kubectl
Kubernetes: 几个常用的 kubectl 命令