目标
- Kubernetes 的基本架构
- Kubernetes 容器调度的基本流程
接下来,推荐从 0 开始部署一个 Kubernetes 集群(不使用任何工具),来加深对各个组件的理解:解决部署中出现的各种问题,查看组件启动日志等等。如果时间有限,也可以尝试使用 kubeadm 等工具来部署集群。目前 Kubernetes 集群部署自动化已经做得比较完善,但出于学习目的,再次墙裂推荐手动安装。关于手动安装集群,可以参考文档 lab3-manual-installtion。
在本阶段修炼结束后,我们至少应该对以下问题了如指掌:Kubernetes 组件是如何交互,来启动容器,并对外提供服务的?
路径
短暂接触 Kubernetes 概念之后,我们需要知其然并且知其所以然,因此在第二阶段我们开始学习 Kubernetes 基本架构。学习 Kubernetes 基本架构至少需要了解以下内容:
Master & Node
知道什么是 Kubernetes Master,什么是 Node知道两者的关系,知道它们是如何通信的.
Kubernetes集群由:Kubernetes控制平面(Master)
和工作节点(Node)
组成。
控制平面:由etcd分布式持久化存储
、API服务器
、调度器
和控制管理器
;
Node运行节点组件:Kubelet
、Kubelet服务代理(kube-proxy)
和容器
运行时(Docker等)
其他组件:如Kubernetes DNS服务器、仪表盘、Ingress控制器、Heapster(容器集群监控)和容器网络接口插件。
(https://www.freesion.com/images/832/cd9697548fda5149441a36e9d19989c0.png#pic_center)]
Master 组件
API Service
API Server。Kubernetes 如何接收请求?
以RESTful API的形式提供可以查询、修改集群状态的CRUD接口,并将状态存储到etcd中。他不会去创建任何资源,也不会去管理服务节点,这些都是控制管理器
做的。
又是如何将结果返回至客户端。
客户端通过创建到API Service 的HTTP连接来监听变更。可以通过下面预计监听其资源变更。
kubectl get pods --watch
NAME READY STATUS RESTARTS AGE
details-v1-5974b67c8-rbgxq 0/2 Error 16 30d
frontend-5cb785b459-qtvnk 0/2 Error 2 47h
kubia-0 0/1 Error 9 31d
.....
details-v1-5974b67c8-rbgxq 1/2 Running 18 30d
details-v1-5974b67c8-rbgxq 2/2 Running 18 30d
reviews-v2-6cb6ccd848-vqvw6 1/2 Running 18 30d