第三章 试验部署集群架构详解
一、核心组件
1.1 配置存储中心
etcd服务:用于存储集群的元数据信息(集群的状态,资源,健康检查,各节点信息)相当于整个K8s集群的数据库
1.2 中控节点(master)
-
Kube-apiserver服务:
提供了集群管理的REST API接口(包括鉴权、数据校验及集群状态变更);
负责其他模块之间的数据交互,承担通信枢纽功能;
是资源配额控制的入口;
提供完备的集群安全机制。 -
Kube-controller-manager服务:
由一系列控制器组成,通过apiserver监控整个集群的状态,并确保集群处于预期的工作状态;
相当于控制器的管理器,可以管理以下的控制器:
Node Controller
Deployment Controller
Service Controller
Volume Controller
Endpoint Controller
Garbage Controller
Namespace Controller
Job Controller
Resource quta Controller -
Kube-scheduler服务:
主要功能是接收调度pod到适合的运算节点上;
预算策略;
优选策略。
1.3 运算节点(node)
-
Kube-kubelet:
简单地说,kubelet的主要功能就是定时从某个地方获取节点上的pod的期望状态(运行什么容器、运行的副本数、网络或者存储如何配置等等)。并调用对应的容器平台接口达到这个状态;
定时汇报当前节点的状态给apiserver,以供调度的术后使用;
镜像和容器的清理工作,保证节点上镜像不会占满磁盘空间,退出的容器不会占用太多资源。 -
Kube-proxy:
是K8s在每个节点上运行网络的代理,service资源的载体;
建立了pod网络和集群网络的关系(clusterip-->podip);
常用的三种流量调度方式:Userspace(废弃)、IPtables(濒临废弃)、IPvs(推荐);
负责建立和删除包括更新调度规则、通知apiserver自己的更新,或者从apiserver那里获取其他kube-proxy的调度规则变化来更新自己。
二、Cli客户端
kubectl
三、核心插件:
-
CNI网络插件-->flannel/calico
-
服务发现用插件-->coredns
-
服务暴露用插件-->traefik
-
GUI管理插件-->Dasbord
四、架构图解
4.1 集群逻辑架构
4.2 测试环境架构
4.3 集群网络架构
五、常见的K8s安装部署方式
5.1 Minikube单节点微型K8s
(仅供学习、预览使用)
登录官网即可在线部署
查看起了哪些服务
5.2 二进制安装部署
(生产首选,新手推荐)
对于一个熟练的工程师来说,也需要一天的时间才能部署好一个k8S集群(关键是需要自签各种证书,证书默认的过期时间是一年,二进制安装可以设置证书国企时间)
本例使用二进制部署方式
5.3 使用kubeadmin进行部署
K8s的部署工具,放在K8s里(相对简单,熟手推荐)