5. Rancher Kubernetes 组件-Kubernetes 资源故障排除

Rancher Kubernetes 组件图

Kubernetes 资源

本文列出的命令/步骤可用于检查最重要的 Kubernetes 资源,并应用于 Rancher 启动的 Kubernetes 集群。

请确保你配置了正确的 kubeconfig(例如,为 Rancher HA 配置了 export KUBECONFIG=$PWD/kube_config_cluster.yml)或通过 UI 使用了嵌入式 kubectl。

节点

获取节点

运行以下命令并检查以下内容:

  • 集群中的所有节点都已列出,没有缺失的节点。
  • 所有节点的状态都是 Ready(如果未处于 Ready 状态,请运行 docker logs kubelet 检查该节点上的 kubelet 容器日志)
  • 检查所有节点是否报告了正确的版本。
  • 检查 OS/Kernel/Docker 值是否按预期显示(此问题可能与升级 OS/Kernel/Docker 相关)。
kubectl get nodes -o wide

输出示例:

NAME             STATUS   ROLES          AGE   VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
controlplane-0   Ready    controlplane   31m   v1.13.5   138.68.188.91    <none>        Ubuntu 18.04.2 LTS   4.15.0-47-generic   docker://18.9.5
etcd-0           Ready    etcd           31m   v1.13.5   138.68.180.33    <none>        Ubuntu 18.04.2 LTS   4.15.0-47-generic   docker://18.9.5
worker-0         Ready    worker         30m   v1.13.5   139.59.179.88    <none>        Ubuntu 18.04.2 LTS   4.15.0-47-generic   docker://18.9.5

获取节点状况

运行以下命令列出具有 Node Conditions 的节点:

kubectl get nodes -o go-template='{
  
  {range .items}}{
  
  {$node := .}}{
  
  {range .status.conditions}}{
  
  {$node.metadata.name}}{
  
  {": "}}{
  
  {.type}}{
  
  {":"}}{
  
  {.status}}{
  
  {"\n"}}{
  
  {end}}{
  
  {end}}'

运行以下命令,列出具有 active Node Conditions 的节点,这些节点可能阻止正常操作:

kubectl get nodes -o go-template='{
  
  {range .items}}{
  
  {$node := .}}{
  
  {range .status.conditions}}{
  
  {if ne .type "Ready"}}{
  
  {if eq .status "True"}}{
  
  {$node.metadata.name}}{
  <
### 问题分析 `Failed to start Lightweight Kubernetes` 是 K3s 启动失败的通用错误提示,通常表示系统在启动过程中遇到了无法继续执行的问题。这类问题可能涉及多个方面,包括但不限于配置错误、数据目录权限异常、依赖组件缺失或资源限制等。 在排查此类问题时,首先需要结合系统日志(如 `journalctl -u k3s.service`)获取更详细的错误信息,以便定位具体原因。常见的错误链中可能会包含类似 `failed to bootstrap cluster data` 或 `failed to validate` 等子错误,这些是进一步诊断的关键线索[^1]。 ### 常见故障原因及处理方法 #### 数据目录初始化失败 K3s 在启动时会尝试初始化集群元数据和状态信息,这些数据默认存储在 `/var/lib/rancher/k3s` 目录下。如果该目录权限不正确、被损坏或存在残留文件,可能导致初始化失败。可以尝试删除并重新创建相关目录: ```bash sudo rm -rf /var/lib/rancher/k3s/server/db/ sudo mkdir -p /var/lib/rancher/k3s/server/db/ ``` 同时确保目录权限为 `root:root` 并设置适当的访问控制: ```bash sudo chown -R root:root /var/lib/rancher/k3s sudo chmod -R 700 /var/lib/rancher/k3s ``` 此操作可避免因权限问题导致的引导失败[^1]。 #### 配置冲突或参数错误 如果使用了自定义配置文件(如 `/etc/rancher/k3s/config.yaml`),请检查其中的参数是否正确。例如,错误的 `token`、`server` 地址或网络插件配置都可能导致服务无法正常启动。建议通过最小化配置进行测试,逐步排除配置项干扰[^2]。 #### 安全策略限制 SELinux 或 AppArmor 等安全模块可能阻止 K3s 访问必要的系统资源。可以通过以下命令临时禁用 SELinux 进行测试: ```bash sudo setenforce 0 ``` 若确认是 SELinux 导致问题,建议调整其策略而非完全关闭。 #### 多个 Ingress 控制器冲突 K3s 默认自带 Traefik Ingress Controller,若手动安装了 Nginx Ingress Controller 可能会导致端口冲突或 Webhook 冲突。例如出现如下错误: > Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io" 此时应清理相关的 ValidatingWebhookConfiguration: ```bash kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission ``` 以解除与默认 Traefik 控制器的冲突[^3]。 #### 系统资源不足 K3s 虽然轻量,但仍需一定的系统资源保障。内存不足或磁盘空间不足可能导致集群初始化失败。建议至少保留 512MB 内存和 2GB 磁盘空间可用: ```bash free -h df -h ``` #### 日志分析 查看 K3s 服务状态和详细日志有助于进一步定位问题: ```bash sudo systemctl status k3s.service sudo journalctl -u k3s.service -n ``` 日志中通常会记录具体的失败原因,如数据库连接失败、证书验证失败等关键信息[^1]。 --- ### 示例:重新安装 K3s 并指定数据目录 如果上述方法无效,可以尝试卸载后重新安装,并指定自定义数据目录: ```bash curl -sfL https://get.k3s.io | K3S_DATA_DIR=/opt/k3s/data sh - ``` 此方式可用于更换默认存储路径,避免原目录遗留问题影响新实例启动。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K8S解决方案

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值