一起养成写作习惯!这是我参与「掘金日新计划 · 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
)
本月将陆续推出相关系列文章,
篇篇精彩,尽请关注。