本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自訂 kubelet 組態
系統資源可以透過 kubelet 的組態保留。建議這麼做,因為在資源匱乏的情況下,kubelet 可能無法移出 Pod,最終使節點變成 NotReady
。若要這樣做,組態檔案可以包含 欄位,該kubeletExtraConfig
欄位接受將內嵌到 中的自由格式 yamlkubelet.yaml
。
中的某些欄位kubelet.yaml
是由 eksctl 設定,因此不會過度寫入,例如 address
、clusterDomain
、authorization
、 authentication
或 serverTLSBootstrap
。
下列範例組態檔案會建立節點群組,為 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
,除非您必須停用它。