自訂 kubelet 組態 - Eksctl 使用者指南

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

自訂 kubelet 組態

系統資源可以透過 kubelet 的組態保留。建議這麼做,因為在資源匱乏的情況下,kubelet 可能無法移出 Pod,最終使節點變成 NotReady。若要這樣做,組態檔案可以包含 欄位,該kubeletExtraConfig欄位接受將內嵌到 中的自由格式 yamlkubelet.yaml

中的某些欄位kubelet.yaml是由 eksctl 設定,因此不會過度寫入,例如 addressclusterDomainauthorizationauthenticationserverTLSBootstrap

下列範例組態檔案會建立節點群組,為 kubelet 保留 300m vCPU、300Mi記憶體和1Gi暫時性儲存;為 OS 系統常駐程式保留 300m vCPU、300Mi記憶體和1Gi暫時性儲存;當可用200Mi記憶體少於或根檔案系統少於 10% 時, 會開始移出 Pod。

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: dev-cluster-1 region: eu-north-1 nodeGroups: - name: ng-1 instanceType: m5a.xlarge desiredCapacity: 1 kubeletExtraConfig: kubeReserved: cpu: "300m" memory: "300Mi" ephemeral-storage: "1Gi" kubeReservedCgroup: "/kube-reserved" systemReserved: cpu: "300m" memory: "300Mi" ephemeral-storage: "1Gi" evictionHard: memory.available: "200Mi" nodefs.available: "10%" featureGates: RotateKubeletServerCertificate: true # has to be enabled, otherwise it will be disabled

在此範例中,假設 類型的執行個體m5a.xlarge有 4 個 vCPUs和 16GiB 的記憶體,CPUs Allocatable數量將為 3.4 和 15.4 GiB 的記憶體。請務必了解, 中欄位的組態檔案中指定的值kubeletExtraconfig將完全覆寫 eksctl 指定的預設值。不過,省略一或多個kubeReserved參數會導致缺少的參數根據所使用的 aws 執行個體類型預設為 Sane 值。

kubeReserved 計算

雖然通常建議將混合執行個體 NodeGroup 設定為使用具有相同 CPU 和 RAM 組態的執行個體,但這不是嚴格的要求。因此,kubeReserved計算會使用 InstanceDistribution.InstanceTypes 欄位中最小的執行個體。如此一來,具有不同執行個體類型的 NodeGroups 就不會在最小執行個體上保留太多資源。不過,這可能會導致對最大執行個體類型而言太小的保留。

警告

預設會eksctl設定 featureGates.RotateKubeletServerCertificate=true,但在featureGates提供自訂時,將會取消設定。您應該一律包含 featureGates.RotateKubeletServerCertificate=true,除非您必須停用它。