Redis Enterprise Operator在K8s部署遇CrashLoopBackOff问题求助
核心问题
你遇到的CrashLoopBackOff错误根源是容器CPU配额与节点可用CPU不匹配。从Pod YAML的错误日志可以明确看到:
failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error setting cgroup config for procHooks process: failed to write "400000": write /sys/fs/cgroup/cpu/kubepods/burstable/podcb1068a2-3e2d-4625-a175-faeda18f45bd/ddd30597ed84a3509f684401f71db3397c9491b77e6695199de18ad1ccf102d5/cpu.cfs_quota_us: invalid argument: unknown
这个错误说明Redis Enterprise Operator容器尝试设置的CPU配额(400000微秒,对应4核)超过了Minikube节点的实际可用CPU核心数。Kubernetes中cpu.cfs_quota_us的有效值必须是cpu.cfs_period_us(默认100000微秒)的整数倍,且不能超过节点总CPU核心数对应的配额(1核对应100000,n核对应n*100000)。
解决步骤
1. 确认Minikube节点CPU核心数
执行命令查看节点实际可用CPU数量:
minikube ssh -- cat /proc/cpuinfo | grep processor | wc -l
默认Minikube通常只分配1或2核,这会导致4核的默认配额无法生效。
2. 修改Operator部署的CPU资源限制
- 先将官方bundle.yaml下载到本地:
curl -O https://raw.githubusercontent.com/RedisLabs/redis-enterprise-k8s-docs/v6.4.2-4/bundle.yaml - 编辑文件,找到
deployment.apps/redis-enterprise-operator下的containers配置段,修改resources中的CPU限制,将默认的4调整为节点实际可用的核心数(比如2或1),同时匹配requests值:resources: requests: cpu: "1" memory: "1Gi" limits: cpu: "2" memory: "2Gi" - 重新应用修改后的配置:
kubectl apply -f bundle.yaml -n redis
3. EKS环境说明
官方文档明确标注EKS 1.25暂不支持该版本的Redis Enterprise Operator,因此EKS上的问题属于版本兼容性问题,需等待Redis官方发布适配EKS 1.25的Operator版本后再进行测试。
内容的提问来源于stack exchange,提问作者riccardogabellone

