如何增加 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
我已经尝试在安装时使用以下设置每个 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