Kubernetes是什么,为什么要用它

Kubernetes是什么

Kubernetes,简称k8s,2015年7月诞生于Google,是市面上基于容器技术最先进的分布式架构方案。它是一个开放平台,不局限于任何语言,没有任何编程接口,任何语言编写的服务都能够顺滑地映射为k8s的Service,而且k8s也不会对编程语言、框架、中间件进行任何侵入。

它的主要功能有:

基于容器的应用部署、维护和滚动升级负载均衡和服务发现跨机器和跨地区的集群调度自动伸缩无状态服务和有状态服务

使用k8s,最直观的感受就是我们可以轻松地开发复杂的分布式系统了,通过k8s部署和运维服务让程序员告别996。进一步说,使用k8s部署的服务更方便以后迁移上云。

说了这么多吹水的废话,Kubernetes本质上到底是什么玩意?

在我而言,k8s本质上就是一个容器管控系统,通过跟踪比对运维人员的期望配置与当前环境的实际资源状态,实现高度自动化的调控,达到最终一致。

基本概念

Pod

Pod是k8s最基本的概念,调度的基本单位。Pod直译过来是豆荚的意思,豆荚里有一粒粒的豆子,这个豆子就是容器。

如下图所示,Pod由多个容器组成,其中有一个叫”Pause“的根容器,其它都是用户业务容器。

Pause这个根容器很重要,它的状态代表了这个Pod整体的存亡状态,Pod中的用户业务容器共享Pause容器的IP和挂载的Volume,解决了Pod内容器间通信和文件共享的问题。

k8s为每个Pod分配了唯一的IP,记为Pod IP,Pod与Pod之间的通信就是通过Pod IP来做的。

k8s还可以为Pod内的每个user container分配容器端口(containerPort),Pod IP+Container Port就构成一个Endpoint,它代表着Pod里一个容器内的服务对外提供的通信地址。

Master

顾名思义,Master是k8s的集群控制节点,对集群的所有控制命令都是由它发出的。

而Master又是由三大核心组件构成:

API Server

财务部,负责对接资源的crud,集群控制的入口程序,提供了Rest API。

最终的数据存放于etcd中(一个基于Raft协议的分布式kv存储)。

Controller Manager

大总管,对集群所有资源对象的自动化调配管控。

Scheduler

后勤部,监听API Server,负责实际的资源调度。

Node

真正的打工人,被master支配,每个node都会被master分配一些Docker容器去跑。

同样的,Node也由三大组件构成:

kubelet

负责Pod下容器的生命周期管理

kube-proxy

负责Service通信与负载均衡。

docker engine

负责用户业务容器的创建和管理。

Pod,Master,Node三者之间的关系如下:

更具体一点来说,就像下面这样:

通过以上的三人传,k8s帮助我们掌控着容器的生死,也掌控了日后容器技术的制定标准。

总结

Kubernetes是分布式架构和自动化运维的必需品,它是一个容器管控系统,能够帮我们做容器部署、服务负载均衡发现、自动伸缩等运维操作。

显然,服务容器化俨然在全面吞噬传统框架搭建,而对容器的编排管控更是大势所趋,这会是一个影响业界十年的技术,IT打工人都应该重视它。

好了,今天的简介就到这里了。

    THE END
    喜欢就支持一下吧
    点赞15 分享
    评论 抢沙发
    头像
    欢迎您留下宝贵的见解!
    提交
    头像

    昵称

    取消
    昵称表情代码图片

      暂无评论内容