本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自定义 kubelet 配置
可以通过配置 kubelet 来预留系统资源。建议这样做,因为在资源匮乏的情况下,kubelet 可能无法驱逐 pod 并最终使节点变成。NotReady为此,配置文件可以包含接受将嵌入到的自由格式 yaml 的kubeletExtraConfig字段。kubelet.yaml
中的kubelet.yaml某些字段由 eksctl 设置,因此不可重写,例如、、addressclusterDomain、authentication或。authorization serverTLSBootstrap
以下示例配置文件创建了一个节点组,该节点组为 kubelet 预留 300m vCPU、300Mi内存和1Gi临时存储空间;为操作系统守护程序保留 300m vCPU 300Mi、内存1Gi和临时存储;当可用内存少于或根文件系统的少于 10% 时,启动驱逐 pod。200Mi
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
在此示例中,给定具有 4 v CPUs 和 16GiB 内存的类型m5a.xlarge实例,内存Allocatable量 CPUs 将为 3.4 和 15.4 GiB。重要的是要知道,配置文件中为中的字段指定的值kubeletExtraConfig将完全覆盖 eksctl 指定的默认值。但是,根据所使用的 aws 实例类型,省略一个或多个kubeReserved参数会导致缺少的参数默认为合理的值。
kubeReserved计算
虽然通常建议将混合实例配置 NodeGroup 为使用具有相同 CPU 和 RAM 配置的实例,但这并不是一项严格的要求。因此,kubeReserved计算使用InstanceDistribution.InstanceTypes字段中最小的实例。这样 NodeGroups ,对于不同的实例类型,就不会在最小的实例上预留太多资源。但是,对于最大的实例类型,这可能会导致预留量过小。
警告
默认情况下featureGates.RotateKubeletServerCertificate=true,eksctl设置为未设置,但是当提供自定义featureGates设置时,它将被取消设置。除非必须将其禁用featureGates.RotateKubeletServerCertificate=true,否则应始终将其包括在内。