介绍
kubernetes是具有中心节点的分布式架构,存在master节点、node节点
各个组件的基本功能:
- API Server:作为K8s通讯的核心组件,K8s内部交互以及接收发送指令的组件。
- controller-manager:作为K8s的核心组件,主要做资源调度,根据集群情况分配资源
- etcd:一个key-value的数据库,存储存储集群的状态信息
- scheduler:负责调度每个工作节点
- cloud-controller-manager:负责调度其他云服务产品
- kubelet:管理Pods上面的容器。
- kube-proxy:负责处理其他Slave或客户端的请求。
- Pod:可以理解为就是运行的容器
master是集群管理中心,它的组件可以集群内任意节点上运行,但是为了方便管理,一般是在某一台主机上运行所有的master组件,并且不在该主机是上运行用户容器
组件
master组件
- kube-apiserver:用于暴露kubernests API,任何的资源请求/调用都是通过kube-apiserver提供的接口进行
- kube-controller-manager:控制器管理器,用于对控制器进行管理,是集群中处理常规任务的后台线程
- kube-scheduler:监视新创建没有分配到node的pod,为pod选择一个node运行
- etcd:是k8s提供的默认存储系统,保存所有集群数据
node组件
用于运行以及维护pod,管理volume(CVI)和网络(CNI),维护pod及service等信息
- kubelet:负责维护容器的生命周期(创建pod,销毁pod),同时也负责volume(CVI)和网络(CNI)管理
- kube-proxy
- 通过在主机上维护网络规则并执行连续转发来实现service(iptables/ipvs)
- 随时与apiserver通信,把service或pod改变提交给apiserver,保存至etcd中,负责service实现从内部pod到service、从外部node到service的访问
- container-runtime
- 容器运行时(container runtime)
- 负责镜像管理以及pod和容器的真正运行
- 支持docker、container、Rkt、pouch、kata等多种运行时
Add-ons附件
Add-ons(附件)使功能更加丰富,没有它也不影响实际使用,可以与主体程序很好结合起来使用
- coredns/kube-dns:负责为整个集群提供DNS服务
- Ingress Controller:为服务提供集群外部访问
- Heapster/Metries-server:提供集群资源监控(监控容器可以使用prometheus)
- Dashboard:提供集群GUI
- Federation:提供跨可用区的集群
- Fluentd-elastisearch:提供集群日志采集、存储与查询