如何增加 K3S 中每个节点的最大值 pods?

How do you increase maximum pods per node in K3S?

我已经尝试在安装时使用以下设置每个 pod 的最大节点数:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--max-pods 250" sh -s -

但是K3s服务器会加载失败。看来 --max-pods 标志已根据 kubernetes docs:

弃用

--max-pods int32 Default: 110

(DEPRECATED: This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.)

那么对于 K3s,kubelet 配置文件在哪里 can/should 它可以使用类似上述方法设置?

documentation所述,可以通过以下方式设置 Kubelet 的配置参数 一个磁盘配置文件。

注意: 使用磁盘上的配置文件,我们可以只设置我们想要覆盖的 Kubelet 配置参数的子集,所有其他 Kubelet 配置值都保留在它们的内置默认值,除非被标志覆盖。


我创建了简单的配置文件来覆盖 maxPods 值(默认值 110):

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 250

然后我们必须在 K3s 安装期间将此配置文件作为参数传递(我建议指定绝对路径名):

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--kubelet-arg=config=<KUBELET_CONFIG_FILE_LOCATION>" sh -

最后我们可以检查 maxPods 等于 250:

# kubectl describe nodes <NODE_NAME> | grep -i pod
  pods:               250
  pods:               250
PodCIDR:                      10.42.0.0/24
PodCIDRs:                     10.42.0.0/24

另外你可以找到有趣的讨论here,我相信你可以找到另一种方法来解决你的问题。

要使用增加的 max-pods 更新现有安装,请将 kubelet 配置文件添加到 k3s 关联位置,例如 /etc/rancher/k3s/kubelet.config:

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 250

编辑 /etc/systemd/system/k3s.service 以更改 k3s 服务器参数:

ExecStart=/usr/local/bin/k3s \
    server \
        '--disable' \
        'servicelb' \
        '--disable' \
        'traefik' \
        '--kubelet-arg=config=/etc/rancher/k3s/kubelet.config'

重新加载 systemctl 以获取服务更改:

sudo systemctl daemon-reload

重启k3s:

sudo systemctl restart k3s

使用 kubectl describe <node> 检查描述节点的输出并查找可分配资源:

Allocatable:
  cpu:                32
  ephemeral-storage:  199789251223
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             131811756Ki
  pods:               250

以及一条消息,指出可分配节点限制已在事件中更新:

Events:
  Type     Reason                   Age    From        Message
  ----     ------                   ----   ----        -------
  Normal   Starting                 20m    kube-proxy  Starting kube-proxy.
  Normal   Starting                 20m    kubelet     Starting kubelet.
...
  Normal   NodeNotReady             7m52s  kubelet     Node <node> status is now: NodeNotReady
  Normal   NodeAllocatableEnforced  7m50s  kubelet     Updated Node Allocatable limit across pods
  Normal   NodeReady                7m50s  kubelet     Node <node> status is now: NodeReady