一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
第一节 K8s是什么?
K8s是kubernetes的简称,是Google于2014年创建管理的开源容器集群管理系统,一个大规模容器应用编排系统。如果把Docker比作为出租车,那么K8s就是就是出租车的调度系统。Kubernetes的名字来自希腊语,意思是“舵手”或 “领航员”。K8s是将8个字母“ubernete”替换为“8”的缩写,固简称为“K8s”。
第二节 K8s实现了什么?
K8s是一个编排容器的工具,也是一个管理应用的全生命周期的工具,(在K8s进行管理应用的时候,基本步骤是:创建集群,部署应用,发布应用,扩展应用,更新应用。)从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器宕机了,K8s可以自动将这个服务器上的服务调度到另外一个主机上进行运行。
具体来说,K8s实现的内容主要包括以下几点:
- 服务发现与调度;
- 负载均衡;
- 服务自愈;
- 服务弹性扩容;
- 横向扩容;
- 存储卷挂载;
总而言之,K8s的目标是让部署容器化应用更加简单高效。
第三节 K8s的特点有哪些?
-
可移植: 支持公有云,私有云,混合云,多重云(
multi-cloud) -
可扩展: 模块化, 插件化, 可挂载, 可组合
-
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
第四节 K8s可以帮助哪些人?
-
运维工程师;
-
运维开发工程师;
-
开发工程师;
-
虚拟化工程师等。
第五节 K8s的组件有哪些?
Kubernetes采用主从分布式架构,包括Master(主节点)、Worker(从节点或工作节点),以及客户端命令行工具kubectl和其它附加项。
K8s中的组件如上图所示,图为K8s的集群架构与其在基本工作流程中所涉及的组件,
从kubectl开始,我们来看一下K8s的基本工作流程,以及各组件之间的联系作用:
-
kubectl客户端首先将CLI命令转化为RESTful的API调用,然后发送部署请求到kube-apiserver; -
kube-apiserver在验证这些API调用后,通过一系列认证授权,把请求存储到etcd,并通知Controller-manager,Controller-manager会通过API server读取etcd,然后按照所预设的模板去创建Pod,并将Pod数据写入etcd; -
Controller-manager会通过API Server去找kube-scheduler为新创建的Pod选择最适合的Node节点。kube-scheduler会通过预算策略在所有Node节点中挑选最优的。 -
一旦
kube-scheduler返回一个适合调度的目标节点后,kube-apiserver就把任务的节点信息存入etcd,并创建任务; -
此时目标节点中的
kubelet正监听apiserver,当监听到有新任务需要调度到本节点后,kubelet通过本地runtime创建任务容器,执行作业; -
接着
kubelet将任务状态等信息返回给apiserver存储到etcd; -
这样任务就已经在运行了,此时
control-manager发挥作用保证任务稳定进行。
未来展望
在之后的文章学习中,我们将逐一介绍K8s集群架构图中所涉及的组件。
-
控制平面组件(
kube-apiserver、etcd、kube-scheduler、kube-controller-manager、cloud-controller-manager); -
Node中组件(kubelet、kube-proxy) -
容器运行时(
Container Runtime)
本月将陆续推出相关系列文章,
篇篇精彩,尽请关注。