环境信息:
RKE2 版本: v2.6.6
集群配置: REK1
问题描述:
由于没有设置node的 系统预留资源,pod把node资源占满后,导致node长时间无法响应,该node上的pod全部重新分配到其他node节点上,差点引起集群雪崩效应。
查看了一下 k8s 可以通过设置 kubelet 给系统预留资源。但是我没有找到在Rancher上如何去设置。
请问一下如何在Rancher上配置这些参数。
环境信息:
RKE2 版本: v2.6.6
集群配置: REK1
问题描述:
由于没有设置node的 系统预留资源,pod把node资源占满后,导致node长时间无法响应,该node上的pod全部重新分配到其他node节点上,差点引起集群雪崩效应。
查看了一下 k8s 可以通过设置 kubelet 给系统预留资源。但是我没有找到在Rancher上如何去设置。
请问一下如何在Rancher上配置这些参数。
只需要通过 yaml 编辑集群,然后修改参数即可。
这是一个示例:
services:
kubelet:
extra_args:
feature-gates: "TaintBasedEvictions=false"
# 指定pause镜像
pod-infra-container-image: "rancher/pause:3.1"
# 传递给网络插件的MTU值,以覆盖默认值,设置为0(零)则使用默认的1460
network-plugin-mtu: "1500"
# 修改节点最大Pod数量
max-pods: "250"
# 密文和配置映射同步时间,默认1分钟
sync-frequency: "3s"
# Kubelet进程可以打开的文件数(默认1000000),根据节点配置情况调整
max-open-files: "2000000"
# 与apiserver会话时的并发数,默认是10
kube-api-burst: "30"
# 与apiserver会话时的 QPS,默认是5,QPS = 并发量/平均响应时间
kube-api-qps: "15"
# kubelet默认一次拉取一个镜像,设置为false可以同时拉取多个镜像,
# 前提是存储驱动要为overlay2,对应的Dokcer也需要增加下载并发数,参考[docker配置](/rancher2x/install-prepare/best-practices/docker/)
serialize-image-pulls: "false"
# 拉取镜像的最大并发数,registry-burst不能超过registry-qps。
# 仅当registry-qps大于0(零)时生效,(默认10)。如果registry-qps为0则不限制(默认5)。
registry-burst: "10"
registry-qps: "0"
cgroups-per-qos: "true"
cgroup-driver: "cgroupfs"
# 节点资源预留
enforce-node-allocatable: "pods"
system-reserved: "cpu=0.25,memory=200Mi"
kube-reserved: "cpu=0.25,memory=1500Mi"
# POD驱逐,这个参数只支持内存和磁盘。
## 硬驱逐阈值
### 当节点上的可用资源降至保留值以下时,就会触发强制驱逐。强制驱逐会强制kill掉POD,不会等POD自动退出。
eviction-hard: "memory.available<300Mi,nodefs.available<10%,imagefs.available<15%,nodefs.inodesFree<5%"
## 软驱逐阈值
### 以下四个参数配套使用,当节点上的可用资源少于这个值时但大于硬驱逐阈值时候,会等待eviction-soft-grace-period设置的时长;
### 等待中每10s检查一次,当最后一次检查还触发了软驱逐阈值就会开始驱逐,驱逐不会直接Kill POD,先发送停止信号给POD,然后等待eviction-max-pod-grace-period设置的时长;
### 在eviction-max-pod-grace-period时长之后,如果POD还未退出则发送强制kill POD"
eviction-soft: "memory.available<500Mi,nodefs.available<80%,imagefs.available<80%,nodefs.inodesFree<10%"
eviction-soft-grace-period: "memory.available=1m30s,nodefs.available=1m30s,imagefs.available=1m30s,nodefs.inodesFree=1m30s"
eviction-max-pod-grace-period: "30"
eviction-pressure-transition-period: "30s"
# 指定kubelet多长时间向master发布一次节点状态。注意: 它必须与kube-controller中的nodeMonitorGracePeriod一起协调工作。(默认 10s)
node-status-update-frequency: 10s
# 设置cAdvisor全局的采集行为的时间间隔,主要通过内核事件来发现新容器的产生。默认1m0s
global-housekeeping-interval: 1m0s
# 每个已发现的容器的数据采集频率。默认10s
housekeeping-interval: 10s
# 所有运行时请求的超时,除了长时间运行的 pull, logs, exec and attach。超时后,kubelet将取消请求,抛出错误,然后重试。(默认2m0s)
runtime-request-timeout: 2m0s
# 指定kubelet计算和缓存所有pod和卷的卷磁盘使用量的间隔。默认为1m0s
volume-stats-agg-period: 1m0s
# 可以选择定义额外的卷绑定到服务
extra_binds:
- "/usr/libexec/kubernetes/kubelet-plugins:/usr/libexec/kubernetes/kubelet-plugins"
- "/etc/iscsi:/etc/iscsi"
- "/sbin/iscsiadm:/sbin/iscsiadm"
已经搞定了 感谢