Kubernetes 常见组件
Kubernetes 本身也是个系统,我们以看一个 Go 应用的眼光看:包括程序、配置以及实现程序间通讯。官网提供的集群图示:
一个 Kubernetes 集群应当包括如下几个组件:Etcd、Apiserver、controller-manager、scheduler、kubelet 等。尽管还有些组件在上图中没提及,但是我相信了解了这些基础的组件,再看其他的也会很快速的理解。接下来,我对以上组件分开介绍。
1-1 Etcd
非 Kubernetes 环境下也值得使用
Etcd 是一个 k-v 数据库,主要用于服务发现。这个工具可以对比 zookeeper 学习。Kubernetes 集群中的程序用于交互的配置内容、资源信息都是存储在 etcd 集群中的。Kubernetes 的 etcd 集群使用的 https 双向认证,提供 watch 机制用于资源变更时的通知。
etcd 详细参考官方文档:etcd.io ,建议直接使用 v3 版本。
1-2 API Server
集群管理的 rest API 入口。API Server 是 Kubernetes 的核心组件,是各个组件通信的渠道。我们如果要创建资源对象比如 Deployment、Service、RC、ConfigMap 等,都是要通过 API Server 的。可以理解为,通过 rest api 接口往 etcd 中写入集群的各种数据。
举个例子,我们使用 Node 相关接口(不同版本集群 API 接口会有差异):
另外,集群其他的组件如果需要获取和操作这些数据时,通过 API Server 提供的 REST 接口(GET\LIST\WATCH 方法)来实现,从而实现各模块之间的信息交互。比如每个 Node 节点上的 kubelet 定期就会调用 API Server 的 REST 接口报告自身状态。总之 API Server 是我们管理集群的入口,我们写自己的 Kubernetes UI 也是通过这个进行交互的。
1-3 Scheduler
Kubernetes 的调度器。运行在 kube-system 命名空间里的程序,Scheduler 监听(etcd-watch 方法)API Server,当需要创建新的 Pod 时,Scheduler 通过调度的算法负责选择该 Pod 与哪个 Node 进行绑定。将此绑定信息通过 API Server 写入到 Etcd 中。
Kubernetes 调度算法简单的来说就是为待调度的 POD 绑定合适的 Node。调度算法里,从队列里拿到待调度的 pod 后会根据要求对 Node 进行筛选和打分,从而选出满足的 Node 运行。
1-4 Controller Manager
Kubernetes 集群的控制器,主要功能就是保证集群运行达到我们预期的状态。比如我们某个 deployment 配置的副本是 3,那副本控制器(Replication Controller)就是保证副本数达到 3。其他如 Node Controller,会得到一些节点信息如健康状态、名称、节点地址信息等;如果节点出现了故障,则删除节点与节点相关的 Pod 等资源的信息。ResourceQuota Controller 将期望的资源配额信息通过 API Server 写入到 Etcd 中。Namespace Controller 则把创建 namespace 通过 APIserver 写入到 etcd 中等。
1-5 Kubelet
Kubelet 是运行在 Node 节点上的守护进程,通过指定的命令和 token 加入到集群中。主要负责 Master 下发到该节点的具体任务,管理该节点上的 Pod 和容器。也会定期汇报节点的信息,监控容器和节点的资源。
1-6 Kube-proxy
负责接收并转发请求。网络代理,将 Service 请求转发到后端具体的 Pod 中。
1-7 coreDNS
非 Kubernetes 环境下也值得使用
开源 DNS 工具。参考 CoreDNS: DNS and Service Discovery
Kubernetes 使用这个 DNS 插件主要是有一些内部的 service 调用可能使用到了内部 dns 域名,仅仅是集群内的。
小结:除了以上组件,还有很多第三方的插件,都是基于 Kubernetes API 封装的一些接口实现的,比如网络、存储、监控。当 Kubernetes 成为日常应用上线的标准,自然就对这些插件有自己的取舍或者二次开发。LNMP 是 WEB 应用的标准,希望 Kubernetes 也可以成为下一代的标准。
版权声明: 本文为 InfoQ 作者【Rayzh】的原创文章。
原文链接:【http://xie.infoq.cn/article/d00884f6c7115a7a229296e3d】。文章转载请联系作者。
评论