Kubernetes(k8s)基础介绍

2020-06-17 06:48:14易采站长站整理

之前我一直想学习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在部署后无法更新,只能删除或替换它们。