Kubernetes Pod 是什么?为什么需要Pod?为什么不直接管理容器containers?
K8s并不会直接管理容器,而是用pod作为一个新的资源单位,将容器纳入pod里面来管理。这听起来有一点抽象,让我们用下面这一张示意图来表示:
Kubernetes(k8s)是一款能够管理容器化(containerized)服务的自动化平台,帮助我们部署,管理,以及监测服务。通俗一点说,就是我们可以将写好的程序打包进容器(container)里面,接着k8s再将这些容器自动部署到指定的集群(cluster)。同时,k8s也会检测服务在集群上面的状态,如果服务崩溃了,k8s会自动在适合的集群上重新创建这个服务;如果服务过载,k8s可以根据事先做好的配置(configuration)来做scaling。
Pod
K8s并不会直接管理容器,而是用pod作为一个新的资源单位,将容器纳入pod里面来管理。这听起来有一点抽象,让我们用下面这一张示意图来表示:
此时很多同学都会有一个疑问:为什么k8s要使用pod的概念,而不直接管理containers呢?
这是一个很好的问题。我刚开始接触k8s的时候也曾经这样想过,为什么要使用pod这个概念来让事情变得更复杂呢?然而真实的情况则是,使用pod这个概念反而可以让事情变得更加简化。
从上图可以得知,一个Pod可以容纳一个到多个containers。k8s直接管理pod的生命周期,包括创建,更新,scaling以及删除。这样做的好处就是k8s每次都能对pod里的所有containers进行批量管理。有些同学会问为什么我们要对所有containers进行批量管理?为什么我们不想对单个container进行管理?
对于第一个问题,为什么我们要对所有containers进行批量管理,简单的答案是因为有一些服务(service)是需要一个以上的containers互相作用才能够运行的。当我们要对这个服务进行scaling的时候,通常我们希望将这些互相依赖的containers一起进行scaling。
对于第二个问题,为什么我们不想对单个container进行管理,简单的回答是我们在某些情况下也想只单独管理一个container的。比如有一些服务只需要一个container就可以运行了。在这种情况下,pod也可以只包含一个container,然后其他的操作都维持不变。
另外一个使用pod的好处就是可以方便我们使用与管理service mesh。
更多推荐
所有评论(0)