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三个核心概念
- Podk8s最小部署单元,是一组容器的集合,同一个- Pod中的容器是共享网络的,生命周期是短暂的
- Controller确保预期的(创建)- Pod副本数量,无状态|有状态应用部署,确保所有的- node运行同一个- Pod,一次性任务和定时任务
- Service定义一组- Pod的访问规则
搭建K8S集群部署方式
- kubeadm:基于客户端工具- kubeadm,是一个K8S部署工具,提供- kubeadm init和- kubeadm join用于快速部署 K8S 集群
- 二进制:从 github下载发行版的二进制包,手动部署每个组件,组成 K8S 集群。
kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署 Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。

