【为什么要有pod】
pod,直译为豌豆荚,形象地描述了它的功能,它内部包含很多豆子,这一颗颗豆子,就是每个组件、成员。既然pod也是为了运行容器,为什么不直接用docker运行呢?因为docker运行的容器,每个容器是完全隔离的,当拥有不同服务的容器互相之间要频繁进行通信,甚至有依赖关系,要根据需要灵活做好调度,容器之间毕竟是完全隔离的,就不是非常方便了。那么干脆把需要的服务都放在一个容器是不是可以呢?是的,但是这就不是容器存在的意义了,容器就是为了对每个应用独立封装,好管理。
那么,又需要联合运行,又要不破坏容器的隔离,就需要在容器外面,做一个大的豌豆荚,包裹为了某种服务,组织起来的一个系列的容器,每个容器,就像一颗颗豌豆。它们既可以相对独立,又能小范围共享网络、存储等资源,而且一个豌豆荚可以是一个用途的“应用”,逻辑上也非常清晰。在YAML文件里,我们看到spec.containers,这是一个数组,这意味着,一个Pod是可以定义很多容器的。
【Pod为什么在k8s中如此重要】
pod是k8s调度部署的最小单位,也就是说,k8s只对pod进行操作。每个pod里有很多的不同功能的容器,集合起来做到pod想做到的服务能力。下图是k8s各个元素之间的一个关系,可以看出,k8s的资源,都直接或者间接通过pod来进行实现和中转,所以pod也就很自然称为k8s中最核心的对象了。(现在理解这个图,还有点点难,后面我要是学得更多了,会回来对这张图做更进一步地说明)
【如何使用YAML描述Pod】
上节课我们学了Pod也是一种API对象,所以它的YAML文件,也需要遵守YAML文件的格式,需要有apiserver,kind,metadata,spec。在k8s里,pod的创建,必须要有一个名字,就是metadata里面的name,这是一个必须要遵守的约定。而name毕竟信息有限,需要metadata的lable进一步进行描述和说明,这样我们对于这个pod就有非常清晰的分别了。标签可以是不同的运行环境env=xxx,所在的物理位置region:xxxx等等。如:
未完待续。。
标签:容器,kubernetes,chrono,YAML,Pod,k8s,pod,豌豆荚 From: https://www.cnblogs.com/1234roro/p/16900541.html