3.2. OpenShift Container Platform 节点主机的推荐做法
OpenShift Container Platform 节点配置文件包含重要的选项,如 iptables 同步周期、SDN 网络的最大传输单元(MTU)和 proxy-mode。要配置节点,请修改适当的节点配置映射。
不要直接编辑 node-config.yaml
文件。
节点配置文件允许您将参数传递给 kubelet(节点)过程。您可以通过运行 kubelet --help
来查看可能的选项列表。
并非所有 kubelet 选项都由 OpenShift Container Platform 支持,并在上游 Kubernetes 中使用。这意味着特定的选项处于有限的支持。
如需了解每个 OpenShift Container Platform 版本的最大支持限制,请参阅集群最大限制。
在 /etc/origin/node/node-config.yaml 文件中,两个参数控制可以调度到节点的 pod 的最大数量:pod-per-core
和 max-pods
。当两个选项都被使用时,这两个选项中的较小的限制为节点上的 pod 数量。超过这些值可导致:
- OpenShift Container Platform 和 Docker 的 CPU 使用率增加。
- 减慢 pod 调度的速度。
- 潜在的内存不足情况(取决于节点中的内存量)。
- 耗尽 IP 地址池。
- 资源过量使用,导致用户应用程序性能变差。
在 Kubernetes 中,包含单个容器的 pod 实际使用两个容器。第二个容器用来在实际容器启动前设置联网。因此,运行 10 个 pod 的系统实际上会运行 20 个容器。
pods-per-core
根据节点上的处理器内核数来设置节点可运行的 pod 数量。例如,如果将一个有 4 个处理器内核的节点上的 pod-per-core
设置为 10
,则该节点上允许的最大 pod 数量为 40。
kubeletArguments: pods-per-core: - "10"
kubeletArguments:
pods-per-core:
- "10"
将 pods-per-core
设置为 0 可禁用这个限制。
max-pods
把节点可以运行的 pod 数量设置为一个固定值,而不需要考虑节点的属性。集群限制 记录 max-pods
的最大支持值。
kubeletArguments: max-pods: - "250"
kubeletArguments:
max-pods:
- "250"
使用上例时,pod-per-core
的默认值为 10
,max-pods
的默认值为 250
。这意味着,除非节点有 25 个或更多内核,否则 pod-per-core
默认是限制因素。
如需了解 OpenShift Container Platform 集群的建议限制,请参阅安装文档中的 大小注意事项 部分。OpenShift Container Platform 和容器引擎协调容器状态更新的建议大小帐户。这种协调会对主机和容器引擎进程造成 CPU 压力,这些压力可包括编写大量日志数据。
kubelet 与 API 服务器进行交互的频率取决于 qps 和 burst 值。如果每个节点上运行的 pod 有限,默认值就足够了。如果节点上有足够 CPU 和内存资源,可以在 /etc/origin/node/node-config.yaml 文件中调整 qps 和 burst 值:
kubeletArguments: kube-api-qps: - "20" kube-api-burst: - "40"
kubeletArguments:
kube-api-qps:
- "20"
kube-api-burst:
- "40"
以上 qps 和 burst 值是 OpenShift Container Platform 的默认值。