我最近开始熟悉Kubernetes,但是当我得到这个概念时,我有一些问题我无法通过Kubernete Concept和Documentation清楚地回答,并且有些理解我想确认一下。
Deployment是一个部署在Pod内的一个或多个容器映像(Docker ..etc)的组,并通过Kubernetes部署控制器监视和创建此类部署,更新或删除。
Pod是一个包含一个或多个容器的组,是来自同一部署的那些容器,还是来自多个部署?
" pod模型包含一个或多个相对紧密耦合的应用程序容器"。关于何时在同一个pod中部署容器,而不是单独的pod,是否有明确的标准?
" Pod是可以在Kubernetes"中创建和管理的最小可部署计算单元。 - Pods, Kuberenets Documentation。这是否意味着Kubernetes API无法监控和管理容器(至少直接)?
感谢您的意见。
答案 0 :(得分:3)
你的问题实际上对于StackOverflow而言过于宽泛,但我会在关闭之前快速回答。
当您查看API文档时,可能会更清楚。您可以这样读:
A Deployment描述了所包含对象的所需行为的规范。
这是在spec
字段DeploymentSpec内完成的。
DeploymentSpec通过PodTemplateSpec
定义template
相关广告的展示方式
PodTemplateSpec然后为所有require参数保存PodSpec,并通过Container定义定义此Pod中容器的外观。 < / p>
这不是一个有力的oneline声明,但也许可以更容易地看到事物彼此之间的关系。
与关于什么是好的尺码以及什么对于Pod或容器来说太大的标准有关。这是非常有意见的,最好的解决方法是阅读关于Microservices大小的意见。
为了涵盖你的最后一点--Kubernetes能够监控和管理容器,但&#34;用户&#34;无法安排单个容器。它们必须嵌入Pod定义中。您当然可以访问每个容器的容器状态和详细信息(例如,通过kubeget logs <pod> -c <container>
(details)或通过metrics API。
我希望这会有所帮助并且不会引起混乱。
答案 1 :(得分:0)
Pod是Kubernetes提供的抽象,它对应于一组共享命名空间子集的容器,最重要的是网络命名空间。例如,在这些容器中运行的应用程序可以像在同一虚拟机中的应用程序进行交互一样进行交互,除了它们不共享相同的文件系统层次结构。
工作负载以Pod的形式运行,但是POD是较低级别的抽象。通常根据Kubernetes部署/作业/ CronJobs / Daemonsets等来安排工作负载,从而依次创建Pod。