如何增加 K3S 中每个节点的最大 Pod 数量?

Kyl*_*yle 3 kubernetes rancher k3s

我尝试在安装时使用以下命令设置每个 Pod 的最大节点数:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--max-pods 250" sh -s -
Run Code Online (Sandbox Code Playgroud)

但是,K3s 服务器将无法加载。根据kubernetes 文档,该标志似乎--max-pods已被弃用:

--max-pods int32 默认值:110

(已弃用:应通过 Kubelet 标志指定的配置文件设置此参数--config。 有关更多信息,请参阅https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ 。)

那么对于 K3s,kubelet 配置文件在哪里?是否可以/应该使用上述方法来设置它?

dol*_*ols 10

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

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 250
Run Code Online (Sandbox Code Playgroud)

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

ExecStart=/usr/local/bin/k3s \
    server \
        '--disable' \
        'servicelb' \
        '--disable' \
        'traefik' \
        '--kubelet-arg=config=/etc/rancher/k3s/kubelet.config'
Run Code Online (Sandbox Code Playgroud)

重新加载 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)


mat*_*t_j 5

如文档中所述,可以通过磁盘配置文件设置 Kubelet 的配置参数。

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


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

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 250
Run Code Online (Sandbox Code Playgroud)

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

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--kubelet-arg=config=<KUBELET_CONFIG_FILE_LOCATION>" sh -
Run Code Online (Sandbox Code Playgroud)

最后我们可以检查它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
Run Code Online (Sandbox Code Playgroud)

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