在 Oracle Cloud Infrastructure Kubernetes Engine 节点上保留 Kubelet 和操作系统守护进程的资源
简介
在 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 上运行 Kubernetes 工作负载时,务必确保 worker 节点为 Kubernetes 控制组件和操作系统 (Operating System,OS) 守护进程预留资源。正确的预留可防止资源争用、降低内存压力并增强群集稳定性。这在多租户环境、高密度工作负载或解决节点压力问题时尤为重要。在本教程中,您将学习如何使用在创建节点池时应用的定制 cloud-init
脚本配置这些预留空间。通过利用 cloud-init
,您可以尽可能减少工作量,在集群节点中标准化这些配置。
Kubelet 资源配置
Kubelet 是 Kubernetes 中的主节点代理,它支持通过配置标志或文件进行资源管理。您可以定义:
- kubeReserved:为 Kubernetes 守护进程保留资源,例如
kubelet
和kube-proxy
。 - systemReserved:为操作系统级别的服务(如
journald
或sshd
)保留资源。
目标
-
了解如何使用
kubeReserved
和systemReserved
为 Kubernetes 和 OS 守护进程保留 CPU 和内存。 -
部署具有定制
cloud-init
脚本的托管节点池以在启动时应用 Kubelet 配置。
Prerequisites
-
访问 Oracle Cloud Infrastructure (OCI) 账户,并有权创建 OKE 集群和节点池。
-
现有的 OKE 群集(或者您可以创建新的 OKE 群集)。
-
基本熟悉 Kubernetes 和 Oracle Cloud Infrastructure 命令行界面 (OCI CLI)。
步骤 1:编写 cloud-init
脚本
以下 cloud-init
脚本将创建一个 Kubelet 配置文件,该文件保留 CPU、内存和临时存储,并设置逐出阈值。
#!/bin/bash
curl --fail -H "Authorization: Bearer Oracle" -L0 http://169.254.169.254/opc/v2/instance/metadata/oke_init_script | base64 --decode >/var/run/oke-init.sh
bash /var/run/oke-init.sh --kubelet-extra-args "--kube-reserved=cpu=500m,memory=1Gi --system-reserved=cpu=100m,memory=100Mi"
步骤 2:使用 cloud-init
脚本创建节点池
-
转到 OCI 控制台并导航到 OKE 集群。
-
选择节点池,然后单击添加节点池以创建新节点池,或者单击编辑以修改现有节点池。
-
使用您的名称、区间、节点放置、配置和网络首选项设置节点池。
-
在显示高级选项下,单击粘贴 Cloud-init 脚本并粘贴定制脚本。
-
完成其余节点池设置,然后单击添加。
预配节点后,脚本将在引导时运行并自动应用资源约束条件。
注:如果要使用 Terraform 自动进行设置,则可以在创建节点池资源时在
node_config_details.cloud_init_script
块中传递该脚本。
确认
- 作者 — JP Santana(主云架构师)
更多学习资源
通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Reserve Resources for Kubelet and Operating System Daemons on Oracle Cloud Infrastructure Kubernetes Engine Nodes
G38636-01
Copyright ©2025, Oracle and/or its affiliates.