k8s集群架构组件
Write by lyc at 2021-3-2
kubernets 官网
kubernets 官方文档
K8S集群架构组件
Master node(主控节点)和 Wrok node(工作节点)
架构图1
架构图2:单Master集群
架构图3:多Master集群
Master node 组件
apiserver
集群统一入口,各组件协调者,以restful API
提供的接口服务,所有对象资源的增删改查和监听操作都交给apiserver
处理后再提交给etcd
存储。controller-manager
处理集群中常规后台任务,一个资源对应一个控制器,controller-manager
就是负责管理这些控制器的。scheduler
根据调度算法为新创建的Pod
选择一个 node节点,可以任意部署,节点调度。
etcd
分布式键值存储系统,用于保存集群状态数据。比如 Pod
, Service
等对象信息。
etcd
严格来说不是 Master组件。它的功能是保存集群中配置数据。只有apiserver
会对其进行持久化写入配置。只要确保其能被apiserver
访问到即可。
Work node 组件
kubelet
是Master在node节点上的 agent,管理本机运行容器的生命周期,比如创建容器、Pod
挂载数据卷、下载 secret、获取容器和节点状态等工作。kubernetes 将每个Pod
转换成一组容器。(接收apiserver
创建Pod
的请求,会在本地调用 docker的 API 去创建对应的容器。)kube-proxy
提供网络代理,四层负载均衡等操作
docker
容器引擎,运行容器。
K8S三个核心概念
Pod
k8s最小部署单元,是一组容器的集合,同一个Pod
中的容器是共享网络的,生命周期是短暂的Controller
确保预期的(创建)Pod
副本数量,无状态|有状态应用部署,确保所有的node
运行同一个Pod
,一次性任务和定时任务Service
定义一组Pod
的访问规则
搭建K8S集群部署方式
kubeadm
:基于客户端工具kubeadm
,是一个K8S部署工具,提供kubeadm init
和kubeadm join
用于快速部署 K8S 集群- 二进制:从
github
下载发行版的二进制包,手动部署每个组件,组成 K8S 集群。
kubeadm
降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署 Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。