阿里云容器K8s入门训练营:阿里云容器服务K8s基础入门(二)
阿里云容器服务K8s基础入门(二)
三、K8S的核心架构
K8S的核心架构由两个部分组成,一个是master,一个是load。master 叫做主控节点,也就是管理节点。 load 也叫做worker 节点,是工作节点,我们可以看到 master 就像一个大佬,负责管理所有的节点,然后负责调度 Pod 在哪个节点上面去运行,然后我们的工作节点就只是怎么样去运行所有的容器,所以这个有点像我们的大脑跟手一样。
比如最简单的,你现在拿一个水杯来喝水,这个喝水的指令肯定是由你大脑去下发的,拿起水杯,然后将这个水杯送到你的嘴里面,这个动作肯定是由你的手来做的,这个肯定都是缺一不可的,我们的k8s它也是这样的一个架构。
K8S的 master 服务端由这四个组件所构成。第一个kube- apiServer 就相当于是一个集群的 API 接口。当用户通过比如这个命令两行工具 kube ct l 进行命令的创建,删除一个这个 K8S 的对象的时候,这个命令它会先发给这个Kube-apiServer,它会去验证用户的请求是否合法,然后再将这个请求放到 etcd 里面。
而 ETCD 它是一个分布式的存储系统,这个是被所有的组件所共享数据信息的,其他组件是不是也能够收到这个信息。
那么比如 kube controller manager,它在收到这个信息之后,它就会可以根据这上面的信息去创建或者删除相应的这个Pod。
当 Pod 创建好之后,我们是不是要将这个 Pod 调度到我们的工作节点上面,那么这个调度就用就由 kube -scheduler 这个组件去完成。
K8S的客户端有三个组件, kubelet 负责管理节点上容器的创建和删除,并且与 master 节点进行通信。 Kube-proxy 它是负责 K8S 服务的通信及负载均衡的服务的,也就相当于是我们这个工作节点上面的网络代理。还有这个 container runtime就是负责去运行容器的,并对容器做一个基础的管理。
四、K8S的工作和使用流程
在了解 K8S 的各个组件之后,我们再来看它的整个工作和使用流程。当我们的运维人员开始发出指令,这个时候kube API Server 就会去响应指令,然后去根据这个指令的内容去创建一个deployment,这样这个任务进行发布,存储在 etcd 里面,控制器会从这个 etcd 里面发现有这样的一个development,然后根据里面的一些数据去创建Pod,然后加入到工作队列,创建完之后,就会更新,我们的这个 Google sky 有了就会将创建好的 Pod 调度到相应的节点当中,结果也会存储在 etcd 里面。
当pod调到 kube这个工作节点之后,这个kubelet就会基于相关的情况去运行这个Pod或者增加Pod,然后kube proxy 作为这个网络组件会对 Pod 进行服务的发现和负载均衡,然后控制器会检测 Pod 的相应的状况做出相应的判断,比如删除或者重建。
五、K8S的使用场景
K8S的使用场景有很多,我们来看第一个场景就是调度这些各个颜色的小球,就是我们的Pod,不同的颜色代表着不同应用。我们的 K8S 可以根据调度算法和策略,将相应的 Pod 调度到它最优的工作节点上面,这是它的第一个场景调度。
K8S的第二个使用场景自动恢复,就是当有一个节点挂掉,然后上面的 Pod 容器应用岂不是就会出现问题,但是我们的 K8S 可以将这个 Pod 调到其他正常的节点上面,保证这个应用是不中断的,所以 K8S 可以提供服务零停机的保障,然后可以让系统自愈。
K8S的第三个使用场景就是弹性伸缩,我们可以看到在这个图中有一个节点,它上面运行了非常多的Pod,所以它是比较繁忙的。这个时候我们可以去增加相应的节点,然后将这些 Pod 调入到其他比较空闲的节点上面。
这个时候我们这个节点它的负载是不是就没那么高?也不会出现这种所谓的过度的忙碌,其实还可以做到怎么样的谈性伸缩,就是当一个 Pod 或者两个 Pod 没有办法去应对突发的流量,这个时候我们可以怎么样?可以去增加 Pod 的数量来去应对这些突发的流量。这是关于 K8S 使用场景的一个简单说明。
六、容器服务ACK介绍
相信通过刚刚的讲解,大家对于 K8S 应该有了一个基本的认识和了解。我们接下来就来带大家学习阿里云的容器服务Kubernetes板,阿里云的容器服务Kubernetes 板说起来比较长,所以我们一般简称为 ack。
阿里云的 ACK 和原生的 K8S 区别:阿里云的 K8S 它也是基于 K8S 二次开发和定制,因为 K8S 它是开源的,然后它主要是针对云上的这种应用场景和运行的环境进行了优化和改进。
虽然阿里云k8s是基于原生的 K8S 来开发,但是它是对原生的 K8S 是做了优化和改进的。
比如它具备更便捷的基础类的管理,在管理方面更便捷,然后服务能力也更加强大,而且它还深度的整合了阿里云的生态,像阿里云很多的产品,比如我们之前所讲过的容器进氧服务,还有一些比如ASM 服务网格,它都是可以直接去连接使用的,有了这些能力后,它就可以帮助用户快速的去构建发布。
还有去管理容器。在弹性伸缩方面,因为它的底层是谁?是阿里云,所以它的资源接近于无限,它具备有强大的自动化和弹性伸缩的能力。阿里云的 K8S 它是基于的是阿里云拥有像洛神云网络这样的组件系统,所以阿里云的 a c k,它具备有良好的安全性能和非常灵活的网络架构,不管你是在各种各样的云环境下,还是私有云的环境下面,都可以进行部署和这个管理,还是很方便的。所以阿里云的 a c k可以理解为是更强大的K8S,更适应于云环境的K8S。
我们在 阿里云上面使用 ack 时,有三种版本供我们选择,分别是专有版、托管版以及无服务器版。使用专有版我们需要在阿里云控制台上面创建 master 节点以及 worker 节点,这样创建之后有优势也有劣势,优势就是可以对集群基础设施进行更细粒度的控制,也就是它会更加的灵活。
但是缺点就是你需要自行的维护,因为这个是需要对技术团队有要求,所以在选择产品的时候一定要看自身团队的技术实力,如果有这个技术实力去维护,可以去选择专有版的K8S,而它的费用可能也会多一点,像托管版它是不需要承担 master 的节点的费用的,但是利用专用版的话是需要承担 master 的节点以及 worker 节点的资源费用的。