在 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 中的主节点代理,它支持通过配置标志或文件进行资源管理。您可以定义:

目标

Prerequisites

步骤 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 脚本创建节点池

  1. 转到 OCI 控制台并导航到 OKE 集群。

  2. 选择节点池,然后单击添加节点池以创建新节点池,或者单击编辑以修改现有节点池。

  3. 使用您的名称区间节点放置配置网络首选项设置节点池。

  4. 显示高级选项下,单击粘贴 Cloud-init 脚本并粘贴定制脚本。

  5. 完成其余节点池设置,然后单击添加

添加节点池

预配节点后,脚本将在引导时运行并自动应用资源约束条件。

注:如果要使用 Terraform 自动进行设置,则可以在创建节点池资源时在 node_config_details.cloud_init_script 块中传递该脚本。

确认

更多学习资源

通过 docs.oracle.com/learn 浏览其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心