Rancher V2.8 RKE2-V1.27.8 kube-proxy 改mode = ipvs 及node system-reserved、kube-reserved资源配置

Rancher Server 设置

下游集群信息

  • Kubernetes 版本: RKE2 -V1.27.8-RK2r1

  • Cluster Type (Local/Downstream):
    RKE2 -V1.27.8-RK2r1 集群

用户信息

  • 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):管理员
    • 如果自定义,自定义权限集:

**主机操作系统:
CentOS Linux release 7.9.2009 (Core)
uname -a
Linux host50 5.4.266-1.el7.elrepo.x86_64
1、集群yaml文件内无法更改kube-proxy 改mode = ipvs 保存再次编辑配置还在,但下游node 未生效
image

2、node yaml文件内无法增加system-reserved、kube-reserved 保证自动还原配置了,我感觉我的配置加错了。
rancher_kubernetes_engine_config:
services:
kubelet:
extra_args:
system-reserved: “cpu=500m,memory=1Gi,ephemeral-storage=1Gi”
kube-reserved: “cpu=1,memory=1Gi,ephemeral-storage=1Gi”

**预期结果:
1、所有节点kube-proxy mode = ipvs
2、每个节点可自定义 system-reserved、 kube-reserved的值。

采用和你一样的操作步骤修改为 ipvs:

    machineGlobalConfig:
      cni: calico
      disable-kube-proxy: false
      etcd-expose-metrics: false
      kube-proxy-arg:
        - proxy-mode=ipvs
        - ipvs-strict-arp=true

操作是成功的,根据上面的修改,保存集群,下游集群的 rke2 会有对应的重启更新日志:

Mar 19 06:48:47 ip-172-31-12-185 rke2[14018]: time="2024-03-19T06:48:47Z" level=info msg="Running kube-proxy --cluster-cidr=10.42.0.0/16 --conntrack-max-per-core=0 --conntrack-tcp-timeout-close-wait=0s --conntrack-tcp-timeout-established=0s --healthz-bind-address=127.0.0.1 --hostname-override=ip-172-31-12-185 --ipvs-strict-arp=true --kubeconfig=/var/lib/rancher/rke2/agent/kubeproxy.kubeconfig --proxy-mode=ipvs"

查看下游集群的 kube-proxy 进程,也有 ipvs 的参数:

root@ip-172-31-12-185:/etc/rancher/rke2# ps -ef | grep kube-proxy
root       15323   15269  0 06:49 ?        00:00:00 kube-proxy --cluster-cidr=10.42.0.0/16 --conntrack-max-per-core=0 --conntrack-tcp-timeout-close-wait=0s --conntrack-tcp-timeout-established=0s --healthz-bind-address=127.0.0.1 --hostname-override=ip-172-31-12-185 --ipvs-strict-arp=true --kubeconfig=/var/lib/rancher/rke2/agent/kubeproxy.kubeconfig --proxy-mode=ipvs
root       16123    1355  0 06:49 pts/1    00:00:00 grep --color=auto kube-proxy

保存集群 yaml 之后,rke2 会更新配置,从rke2 更新后的配置中也可以看到,ipvs 配置成功:

root@ip-172-31-12-185:~# cat /etc/rancher/rke2/config.yaml.d/50-rancher.yaml | grep -A 3 "kube-proxy-arg"
  "kube-proxy-arg": [
    "proxy-mode=ipvs",
    "ipvs-strict-arp=true"
  ],

下游已成功切换成IPVS,谢谢

请教第二个问题 system-reserved、kube-reserved的预留,我查看了很多资料

https://github.com/rancher/rke/issues/1184参考

extra_args:
#to fix resource exhaustion
enforce-node-allocatable: “pods,system-reserved,kube-reserved”
system-reserved: “cpu=500m,memory=1Gi,ephemeral-storage=1Gi”
kube-reserved: “cpu=1,memory=1Gi,ephemeral-storage=1Gi”
eviction-hard: “memory.available<500Mi,nodefs.available<10%”
system-reserved-cgroup: “/kubesystem”
kube-reserved-cgroup: “/kubelet”

这个参数不知道增加在哪个位置
rancher_kubernetes_engine_config:
services:
kubelet:
extra_args:
system-reserved: “cpu=500m,memory=1Gi,ephemeral-storage=1Gi”
kube-reserved: “cpu=1,memory=1Gi,ephemeral-storage=1Gi”


是我们位置 不对吗?

你创建的是 rke2 集群,那你参考 rke 集群也没用啊

至于另一个问题,你参考这个 issue 吧 Validate ability to set different kubelet args for different set of nodes · Issue #33904 · rancher/rancher · GitHub

我参考了您提供的连接,进行了部份配置,,,还有部份不支持,,不支持的部份在哪里去配置下游的 kubelete ??

支持部份


下游节点已同步
image

不支持部分
kubernetes官方提示kubernetes v1.27 的 Kubelet 部份配置已弃用, 应在 --config 所给的配置文件中进行设置。


我参考了kubernetes官方 Kubelet 请参阅 kubelet-config-file,格式发生了变化,不再是启动时加参数的格式。

这种配置方式RancherV2.8 版本是在哪里配置??

你上面发的文档说可以通过 --config 来执行配置文件参数,而且你最后的图片说了如何在这个文件中配置你需要的参数的格式。

所以在 rancher 中,你可以参考你配置成功的参数的位置,加上 --config=/PATH/xxx.yaml。然后在对应节点上创建 xxx.yaml ,xxx.yaml 的内容就按照 K8s 官方的格式,应该就行了。

其实,你在 rancher 上所有的配置,都会落实到下游集群的 rke2 中,所以,你可以直接在下游 rke2 集群的对应主机上新增 yyy.yaml 的配置,然后覆盖或者附加配置都可以,可参考:kubelet-arg does not accept evictionHard settings · Issue #4200 · rancher/rke2 · GitHub

rke2v1.7配置kubelete都启不来
第一种方式
image
第二种方式
image

系统cgroup 手动创建 了

cgroup for kube-reserved

mkdir -p /sys/fs/cgroup/cpu/kubelet
mkdir -p /sys/fs/cgroup/cpuacct/kubelet
mkdir -p /sys/fs/cgroup/cpuset/kubelet
mkdir -p /sys/fs/cgroup/memory/kubelet
mkdir -p /sys/fs/cgroup/systemd/kubelet
mkdir -p /sys/fs/cgroup/hugetlb/kubelet

cgroup for system-reserved

mkdir -p /sys/fs/cgroup/cpu/kubesystem
mkdir -p /sys/fs/cgroup/cpuacct/kubesystem
mkdir -p /sys/fs/cgroup/cpuset/kubesystem
mkdir -p /sys/fs/cgroup/memory/kubesystem
mkdir -p /sys/fs/cgroup/systemd/kubesystem
mkdir -p /sys/fs/cgroup/hugetlb/kubesystem

当我单独按下图配置这两条时,kubelet 无法启动
下图为kubernets 官方配置要求

我再按官方的这个配置时,kubelet能正常启动,node节点不生效

你直接说你要加哪些参数吧,我找个环境试试

/etc/rancher/rke2/config.yaml.d/kube-config.yaml
加以下参数,在node里实现预留系统资源,和kubeu资源
systemReserved: “cpu=1,memory=1Gi,ephemeral-storage=1Gi”
kubeReserved: “cpu=1,memory=1Gi,ephemeral-storage=1Gi”

  1. 在要调整 system-reserved 和 kube-reserved 的节点主机上新建文件,例如:
root@ip-172-31-8-122:~# cat /opt/kubelet.yaml
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
kubeReserved:
    cpu: "200m"
    memory: "500Mi"
systemReserved:
    cpu: "200m"
    memory: "500Mi"
  1. 在 Rancher UI 上操作创建 rke2 自定义集群,选择 “Advanced” 选项,设置 Kubelet Args,如下:

  2. 使用生成的命令注册节点:

  3. 集群创建成功

从添加集群日志可以看到已经加载了 --config 参数:

谢谢可以了,造成的问题因该是rke2,不能安K8S官方的配置方式配置,

啥意思?我就是按照 K8s 的官方配置来的啊