• 售前

  • 售后

热门帖子
入门百科

Kubernetes(k8s)基础先容

[复制链接]
华胥 显示全部楼层 发表于 2021-10-25 19:23:10 |阅读模式 打印 上一主题 下一主题
之前我不停想学习Kubernetes,由于它听起来很故意思(假如你是希腊人,你会觉得这个名字很有题目),但我从来没偶然机,由于我没有任何东西须要运行在集群中。而近来,我的工作中开始渐渐涉及Kubernetes相关的事变,所以这次我捉住时机,开始查资料,但后来我发现现在所有的资料(包罗官方教程)都过于冗长,结构也不公道,这让我一开始有点沮丧。

颠末几天的研究,我开始渐渐明白Kubernetes的核心理念,并且把他摆设到了生产环境中。由于我的简历现在说本身是个“Kubernetes专家”,一个想法立即诞生了:为什么不把我对这个系统的宽泛明白以及我已经耗费了几个小时的研究所网络的知识让更多人看到?固然我无法说服本身不应该再写另一篇漫无目的的文章,但是我很快就明确了:
这就是那篇文章。

我在现有文章中遇到的重要题目是,在深入研究具体细节之前,我找不到的任何内容总结了这些组件是什么以及它们怎样组合起来的高级概述。 而这种高屋建瓴的呈现方式是我学习最好的方式。我是以这种方式来写的,盼望它也适合你。假如你知道任何描述了Kubernetes怎样工作,而且让人容易明白的专家级的文章/教程,请不要告诉我,由于你在我须要你的时间你在哪里,现在我写了我的文章而你却没有及早把它拿出来。

另外请记住,我实际上只学习了Kubernetes一个星期左右,所以学得不会非常深入,有些大概是禁绝确的,盼望没有什么错误,这里的信息应该充足让你到达运行简朴集群的水平。

话虽云云,末了我发现Kubernetes中的概念还是非常简朴的,固然我确信有很多东西我还不知道。但是,我知道的事变就足以建立一个集群并让我们的应用在其上运行,而且我很确定它们足以让大多数人知道怎样开始。
根本概念
我们须要做的第一件事是具体先容Kubernetes的各个部门:

      
  • 控制平面(Control plane):顾名思义,这是控制其他统统的部门,这也是我一无所知的部门,由于我们只是向亚马逊付费,让亚马逊帮我们处理这部门。我的明白是,这是最好的决定,除非你是谷歌,否则你应该付费给一些公司,让他们为你管理。  
  • 节点(Nodes):节点本质上就是一台服务器,就像您付费的物理机worker一样。 这是所有代码摆设的地方,将裸服务器变成节点的方法是在其上安装Docker,kubelet,kube-proxy和其他一些东西。本文假设您的群集中已有一些worker。  
  • 容器集(Pod):Pod是容器聚集。 这是您的代码所在的位置,通常每个容器都有一个Pod,只管您大概盼望将一些密切相关的服务放在同一个Pod中。 Pod在单个节点上运行(但是一个节点可以运行很多Pod),这意味着Pod中的所有容器将具有雷同的IP地址,并且它们可以通过毗连到localhost上的彼此端口来相互通信。Pod在摆设后无法更新,只能删除或更换它们。  
  • 摆设(Deployments): Deployment是您将Pod实际摆设到群集的方式。 您可以在没有Deployment的环境下运行Pod,但假如没有Deployment,则无法轻松指定所需的副本数目,在失败时自动重新摆设Pod,回滚到早期状态等。Deployment使代码生命周期管理变得更容易,并且您可以使用它来使Docker镜像在Kubernetes上运行。  
  • 服务(Service):服务允许您从一个Pod打开端口到其他Pod,并指定一个Pod的DNS名称,以便可以大概查找并毗连到群集中的其他Pod。  
  • 入口(Ingress):Ingresses是你怎样告诉你的Ingress控制器(通常是像Traefik如许的web server)向外界暴露什么,以及在哪个路径或主机名上。 入口将映射到将实际应答该哀求的Pod。本教程也假设您已经配置了入口,固然设置Traefik来做到这一点不应该非常困难(在用他们的教程时请使用Deployment方法)。
所有这些都可以使用下令行的kubectl创建,大概更安全地通过YAML文件创建,该文件将包含您要摆设的内容的界说和具体信息(然后实行kubectl apply -f <yaml file>)。

概括地讲,您把容器放入pods中,这些pods将由deployment创建和摆设,其网络将由service处理,并添加ingress以便外部天下可以访问您的服务器。

让我们逐个先容这些部门,看看它们的YAML配置是什么样的。

The Pod
让我们看一下将在容器中运行Redis镜像的pod的YAML配置。 请记住,Pod并不是恒久性的,所以你险些不会直接使用它。 相反,您将使用deployment间接摆设Pod,我们将在下面先容。

以下配置示例仅供您举行修改。 你只须要看看它,然后继续阅读,不要停下来惊叹它的漂亮。


正如您所看到的,它非常简朴,您添加了一堆Kubernetes特定的东西,每个都只是复制粘贴,然后您声明此配置是为Pod,给它一个名称,指定在此中运行的容器和他们监听的端口,请删除整个文件吧,你已经预备好了!

Kubernetes官方文档中提供了更多关于Pod的信息。

The Deployment
以下是您实际运行上述Pod的方式,纵然用deployment。 请记住,您根本不须要关注上面的Pod配置,我们将在deployment里重新界说它。


您会留意到这重要是上面的Pod配置,但有一些额外的配置,如副本(replica)等。这些界说了deployment的名称以及我们要摆设的副本数目。 更改副本数目,将会摆设更多template部门中指定的Pod。

Kubernetes官方文档中提供了更多关于Deployments的信息。

The Service
现在我们已经摆设了一个Pod,我们须要将其端口暴露给集群的其余部门。 摆设中的containerPort指令暴露了Docker端口,但实际上并不转发主机上的端口,因此多个Pod(不是同一Pod中的容器)可以使用雷同的端口而不会发生辩论。

要将上面的端口实际暴露给集群上运行的其他Pod,我们须要为它创建一个Service。 这将创建转发端口所需的规则,并为我们提供DNS条目,我们可以使用该条目来解析该Pod的IP。


这会将Redis端口暴露给集群中的其他Pod,可以通过my-service:6379毗连它。

要摆设你的应用中更多部门,只需将另一个deployment和关联的Service添加到群集即可。 您可以使用与上面的Redis完全雷同的方式摆设主应用程序服务。

The Ingress
末了,我们可以使用Ingress将我们的服务暴露给互联网。 这里是使用Traefik的一个例子,固然您大概实际上并不想将Redis暴露给表面的天下,但同样的方法适用于您本身的应用程序。


这一节配置是告诉Traefik你盼望所有名为redis.yourdomain.com的主机上的流量都转发到我的服务端口6379。据我所知,这只是针对Traefik的配置。 在应用配置后,Pod将通过redis.yourdomain.com上的Traefik暴露到互联网。
我盼望这篇文章对初学者有用。这篇文章很简短,由于Kubernetes的底子很短,但我们想法涵盖了怎样以最小的麻烦来运行服务。

现在你应该懂Kubernetes是什么了!
总结
以上就是这篇文章的全部内容了,盼望本文的内容对各人的学习大概工作具有肯定的参考学习代价,谢谢各人对草根技术分享的支持。假如你想相识更多相关内容请检察下面相关链接

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作