我正在探索如何通过CI / CD管道使用Jenkins实施Kubernetes集群以及如何将其部署到Kubernetes集群中。在探索时,我发现我们不需要在需要部署Pod的工作机节点上进行定义。 Kubernetes master会注意在哪里部署/在工作机中释放pod进行部署。我们只需要定义该Pod需要多少内存即可。
我的困惑是,我们已经分配并配置了Kubernetes集群进行部署。根据AWS EC2的创建,所有节点都包含其自己的内存(因为我计划使用AWS Ec2-Ubuntu 16.04 LTS)。
那么为什么我们再次需要在pod中定义内存?这是Pod部署的正确方法吗?
我只是从CI / CD管道世界开始。
答案 0 :(得分:4)
在pod规范中指定内存和cpu是完全可选的。在Pod级别指定内存和CPU仍然有两个方面:
As explained here,如果您未指定CPU /内存-吊舱/容器可能会消耗该节点上的所有资源,并可能影响该节点上运行的其他吊舱/容器。
< / li>每个应用程序都应指定运行该应用程序所需的内存和CPU。 Kubernetes在群集中有足够资源可用的节点之一上调度Pod时会使用此信息。这些信息可确保更好的调度决策。
当资源消耗超过特定限制时,它使水平Pod自动缩放器(HPA)能够缩放Pod。详细说明in this doc。除非指定了内存/ CPU限制,否则您无法计算Pod正在运行该指标的80%,因此应将其缩放为两个副本。
您还可以在命名空间级别启用某个默认值,然后仅对特定应用程序details here