k8s 深入篇———— k8s 的本质[四]
前言
简单整理一下k8s的本质。
正文
首先,Kubernetes 项目要解决的问题是什么?
编排?调度?容器云?还是集群管理?
实际上,这个问题到目前为止都没有固定的答案。因为在不同的发展阶段,Kubernetes 需
要着重解决的问题是不同的。
但是,对于大多数用户来说,他们希望 Kubernetes 项目带来的体验是确定的:现在我有
了应用的容器镜像,请帮我在一个给定的集群上把这个应用运行起来。
更进一步地说,我还希望 Kubernetes 能给我提供路由网关、水平扩展、监控、备份、灾
难恢复等一系列运维能力。
我们可以看到,Kubernetes 项目的架构,跟它的原型项目 Borg 非常类似,都由 Master
和 Node 两种节点组成,而这两种角色分别对应着控制节点和计算节点。
其中,控制节点,即 Master 节点,由三个紧密协作的独立组件组合而成,它们分别是负责
API 服务的 kube-apiserver、负责调度的 kube-scheduler,以及负责容器编排的 kubecontroller-manager。整个集群的持久化数据,则由 kube-apiserver 处理后保存在 Etcd
中。
而计算节点上最核心的部分,则是一个叫作 kubelet 的组件。
在 Kubernetes 项目中,kubelet 主要负责同容器运行时(比如 Docker 项目)打交道。
而这个交互所依赖的,是一个称作 CRI(Container Runtime Interface)的远程调用接
口,这个接口定义了容器运行时的各项核心操作,比如:启动一个容器需要的所有参数。
结
暂时只整理一下功能,其他的后面补充。