第 1 章 Kubernetes 架构 1.1 总体架构
概念:
-
(1) Cluster: 架构的集合,国家机构。
-
(2) Master: 集群的大脑,调度发号施令,高可用可以多个 Master,中央政府。
-
(3) Node: 运行容器应用,地方政府。
-
(4) Pod: K8s 最小单元,每个 pod 包含一个或多个容器,地方官。
-
(5) Controller: 控制 pod,中央领导。
-
(6) Service: 提供外部访问 IP,统一出口,省长。
-
(7) Namespace: 把 Controller 和 pod 资源分开,一个 cluster 划分多个虚拟 cluster,每个
cluster 就是一个 Namespace,不同 Namespace 的资源完全隔离,K8s 默认创建两个 Namespace。相当于一个国家多个党派,每个党派都是独立的,这些独立的党就是 虚拟 cluster,一个民主国家默认是两个党,那么这个 Namespace 就是各个党。
1.2 架构解剖
(1) 主要成分有那些?
Cluster:1 个 master 和多个 node
(2) 主节点和工作节点是如何通信的呢?
Apiserver 负责通信,具体原理如下:
Master 启动会运行一个 kube-apiserver 进程,提供集群管理的 API 接口,中央枢纽。 Node 节点每个 Node 都运行一个 kubelet 进程,它负责向 Master 汇报。
(3) Master 是如何将 Pod 调度到指定的 Node 上的?
kube-scheduler 来完成,整个调度过执行算法最终为每个 Pod 计算出一个最佳的目标 Node, 该过程由 kube-scheduler 进程自动完成。常见的有轮询调度(RR)
(4) 各节点、Pod 的信息都是统一维护在哪里的,由谁来维护?
etcd 组件高可用强一致性的存储仓库。
(5) 外部用户如何访问集群内运行的 Pod ?
Service 对外提供服务,将多个相同的 Pod 加入 Service, 每个节点上会启动一个 kube-proxy 进程,由它来负责服务地址到 Pod 地址的代理以及负载均衡等工作。
(6) Pod 如何动态扩容和缩放?
Replication 多副本提供扩容和缩放,将 Pod 复制多份,不需要后,将 Pod 缩减至指定份数
(7) 各个组件之间是如何相互协作的?
kube-controller-manager 进程负责统筹管理,包含Node 节点控制器(NodeController)、 资源配额管控制器(ResourceQuota Controller)、命名空间控制器(Namespace Controller)
第 2 章 K8s Cluster 部署