STRATO vServer部署Kubernetes集群时kubelet启动失败求助
Hey Hartmut,折腾两天还没解决这个问题肯定挺头疼的,我来给你几个针对性的排查方向,你可以逐一试试:
你遇到的报错"Failed to start ContainerManager open /proc/sys/kernel/panic: permission denied",核心问题是kubelet没有权限访问/proc/sys/kernel/panic这个内核参数节点。STRATO的vServer属于轻量虚拟化/容器化托管环境,这类环境通常会对内核参数的访问做严格限制,这大概率是问题根源。
下面是几个可行的排查和解决步骤:
先手动验证权限情况:执行以下命令看看你当前用户能不能访问这个节点
ls -l /proc/sys/kernel/panic cat /proc/sys/kernel/panic如果手动执行
cat也提示权限拒绝,那说明这是宿主机层面的限制,这种情况下最好直接联系STRATO的技术支持,询问他们是否允许开放这个权限,或者有没有针对Kubernetes部署的专属配置指南。如果手动访问正常,那可能是kubelet运行时的权限不足:检查kubelet的systemd配置文件(一般在
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf),确保kubelet的启动参数里包含足够的权限配置。可以尝试添加--allow-privileged=true参数(注意这个参数会提升kubelet权限,谨慎使用),修改后执行:systemctl daemon-reload systemctl restart kubelet之后再重新运行
kubeadm init试试。检查安全模块限制:STRATO的vServer可能启用了SELinux或AppArmor,限制了kubelet的访问权限。可以临时关闭SELinux测试:
setenforce 0如果关闭后问题解决,再考虑配置SELinux规则来永久允许kubelet访问相关节点,而不是一直保持SELinux关闭状态。
尝试绕过部分kubeadm检查:创建一个自定义kubeadm配置文件
kubeadm-config.yaml,内容如下:apiVersion: kubeadm.k8s.io/v1beta3 kind: ClusterConfiguration kubernetesVersion: stable --- apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration failSwapOn: false然后用这个配置执行初始化:
kubeadm init --config kubeadm-config.yaml这个方法可能绕过部分内核参数检查,但不一定能彻底解决权限问题,可以尝试看看效果。
如果以上方法都没解决,那基本可以确定是STRATO vServer的虚拟化层限制导致的,直接联系他们的技术支持会是最有效的途径,毕竟他们对自己的环境配置最了解。
备注:内容来源于stack exchange,提问作者Hartmut Schebl

