加入收藏 | 设为首页 | 会员中心 | 我要投稿 广元站长网 (https://www.0839zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

简单说明一下Kubernetes,并搭建自己的集群

发布时间:2021-06-05 18:43:35 所属栏目:大数据 来源:互联网
导读:Kubernetes是什么 Kubernetes是由Google在2014年开源的生产级别的容器编排系统,或者说是微服务和云原生平台。虽说14年才开源,但实际上Kubernetes是Google内部的容器编排系统Borg的开源版本,在Google内部已经用了十多年了。下面是一个关于Kubernetes的Logo

Kubernetes是什么

Kubernetes是由Google在2014年开源的生产级别的容器编排系统,或者说是微服务和云原生平台。虽说14年才开源,但实际上Kubernetes是Google内部的容器编排系统Borg的开源版本,在Google内部已经用了十多年了。下面是一个关于Kubernetes的Logo来源的小插曲。

Kubernetes由谷歌在2014年首次对外宣布 。它的开发和设计都深受谷歌的Borg系统的影响,它的许多顶级贡献者之前也是Borg系统的开发者。在谷歌内部,Kubernetes的原始代号曾经是Seven,即星际迷航中友好的Borg(博格人)角色。Kubernetes标识中舵轮有七个轮辐就是对该项目代号的致意。

不过也有一个说法是,Docker的Logo是一个驮着集装箱的鲸鱼,也就是运输船,Kubernetes的Logo是一个船舵,旨在引领着Docker(或者说容器技术)走向远方。

简单了解Kubernetes

看了很多官方文章,是真官方。官方什么意思呢,就是有可能看完了约等于没有看,一样的啥都不知道。

所以我想写这样一篇文章,给那些看完文档仍然不太理解或者说完全没了解过Kubernetes的老铁一点小帮助。那么让我们回到最初对Kubernetes的定义,它是一个微服务框架。

说到微服务框架,我们就不得不提一下目前业界十分主流的微服务框架,与这些你十分熟悉的框架进行对比,你就会很清晰的知道Kubernetes能做什么了。目前很主流的微服务框架和平台有Spring Cloud、Dubbo和Kubernetes。

Spring Cloud来自Netflix,Dubbo来自阿里,而Kubernetes则来自Google。说的直观一点,这三个框架都是针对微服务的解决方案。可能有人会说,Kubernetes不是一个容器编排系统吗?怎么跟Spring Cloud这种软件层面上的微服务框架做起了对比呢?

老铁别慌,等我们慢慢深入这个概念。

我们都知道,如果我们需要使用微服务,那么肯定少不了一些底层的基础设施的支撑,例如服务注册与发现、负载均衡、日志监控、配置管理、集群自愈和容错、弹性伸缩……等等。我没有列举完,如其实这些组件都可以统称为微服务的公共关注点。那我们是不是可以说,只要能够提供的这些功能,它就算一个微服务框架呢?

以上的大多数功能,Kubernetes都是内置的。故我们可以说Kubernetes是一个与Docker Swarm相类似的容器编排系统,但是由于Kubernetes内置了微服务的解决方案,它同时也是一个功能完备的微服务框架。

Pod的概念

在Docker Swarm中,调度的最小单位是容器,而在Kubernetes中,调度的最小是Pod,那啥是Pod呢?

Pod是Kubernetes设计的一个全新的概念,在英文中的原意是表达一群鲸鱼或者是一个豌豆荚的意思。换句话说,一个Pod中可以运行一个或者多个容器。

在一个集群中,Kubernetes会为每个Pod都分配一个集群内唯一的IP地址。因为Kubernetes要求底层网络支持集群内的任意节点之间的两个Pod能够直接通信。这些容器共享当前Pod的文件系统和网络。而这些容器之所以能够共享,是因为Pod中有一个叫Pause的根容器,其余的用户业务容器都是共享这个根容器的IP和Volume。所以这些容器之间都可以通过localhost进行通信。

有人可能会问,为什么要引入根容器这个概念?那是因为如果没有根容器的话,当一个Pod中引入了多个容器的时候,我们应该用哪一个容器的状态来判断Pod的状态呢?所以才要引入与业务无关且不容易挂掉的Pause容器作为根容器,用根容器的状态来代表整个容器的状态。

熟悉Spring Cloud或者微服务的都知道,微服务中最忌讳的就是出现单点的情况。

所以针对同一个服务我们一般会部署2个或者更多个实例。在Kubernetes中,则是会部署多个Pod副本,组成一个Pod集群来对外提供服务。

而我们前面提过,Kubernetes会为每一个Pod提供一个唯一的IP地址,客户端就需要通过每个Pod的唯一IP+容器端口来访问到具体的Pod,这样一来,如果客户端把调用地址写死,服务器就没有办法做负载均衡,而且,Pod重启之后IP地址是会变的,难道每次重启都要通知客户端IP变更吗?

为了解决这个问题,就要引出Service的概念了。

(编辑:广元站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读