无法通过 sudo kubeadm init line 命令初始化 Kubernetes 集群

无法通过 sudo kubeadm init line 命令初始化 Kubernetes 集群

尝试在 AWS EC2 实例上部署 Kubernetes。运行时我看到以下错误/警告sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all

错误:

[警告 CRI]:容器运行时未运行:输出:time="2023-06-23T03:15:01Z" level=fatal msg="验证服务连接:未为端点“unix:///var/run/containerd/containerd.sock”实现 CRI v1 运行时 API:rpc 错误:代码 = 未实现 desc = 未知服务运行时.v1.RuntimeService",错误:退出状态 1

[kubelet-check] 初始超时时间已过 40 秒。[kubelet-check] kubelet 似乎没有运行或者没有健康。[kubelet-check] 等于“curl -sSL http://localhost:10248/healthz”的 HTTP 调用失败,出现错误:获取“http://localhost:10248/healthz”:拨号 tcp 127.0.0.1:10248:连接:连接被拒绝。[kubelet-check] kubelet 似乎没有运行或者没有健康。[kubelet-check] 等于“curl -sSL http://localhost:10248/healthz”的 HTTP 调用失败,出现错误:获取“http://localhost:10248/healthz”:拨号 tcp 127.0.0.1:10248:连接:连接被拒绝。[kubelet-check] kubelet 似乎没有运行或者没有健康。 [kubelet-check] 等于“curl -sSL http://localhost:10248/healthz”的 HTTP 调用失败,出现错误:获取“http://localhost:10248/healthz”:拨号 tcp 127.0.0.1:10248:连接:连接被拒绝。[kubelet-check] 看起来 kubelet 并没有运行或者不健康。[kubelet-check] 等于“curl -sSL http://localhost:10248/healthz”的 HTTP 调用失败,出现错误:获取“http://localhost:10248/healthz”:拨号 tcp 127.0.0.1:10248:连接:连接被拒绝。[kubelet-check] 看起来 kubelet 并没有运行或者不健康。 [kubelet-check] 等于“curl -sSL http://localhost:10248/healthz”的 HTTP 调用失败,错误为:获取“http://localhost:10248/healthz”:拨号 tcp 127.0.0.1:10248:连接:连接被拒绝。

不幸的是,发生了错误:等待条件超时

此错误可能是由以下原因引起的: - kubelet 未运行 - 由于节点某种配置错误(所需的 cgroups 已禁用),导致 kubelet 不健康

如果您使用的是由 systemd 驱动的系统,则可以尝试使用以下命令排除错误: - 'systemctl status kubelet' - 'journalctl -xeu kubelet'

此外,控制平面组件在由容器运行时启动时可能崩溃或退出。要进行故障排除,请使用您首选的容器运行时 CLI 列出所有容器。下面是一个使用 crictl 列出所有正在运行的 Kubernetes 容器的示例: - 'crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock ps -a | grep kube | grep -v pause' 找到故障容器后,您可以使用以下命令检查其日志: - 'crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock logs CONTAINERID' 错误执行阶段 wait-control-plane:无法初始化 Kubernetes 集群

我不知道从哪里开始,Kubectl 版本。

    {
  "clientVersion": {
    "major": "1",
    "minor": "27",
    "gitVersion": "v1.27.3",
    "gitCommit": "25b4e43193bcda6c7328a6d147b1fb73a33f1598",
    "gitTreeState": "clean",
    "buildDate": "2023-06-14T09:53:42Z",
    "goVersion": "go1.20.5",
    "compiler": "gc",
    "platform": "linux/amd64"
  },
  "kustomizeVersion": "v5.0.1"
}

有什么建议么?

答案1

看起来问题出在旧容器,使用root权限执行下面的步骤即可解决:

  1. 执行命令删除旧容器apt remove containerd

  2. 使用以下命令(apt updateapt install containerd.io)更新存储库数据并安装新的 containerd:

  3. 删除已安装的默认配置文件:rm /etc/containerd/config.toml

  4. 使用以下命令重新启动 containerd:systemctl restart containerd

參閱mdevitis 的邮政kubeadm init 错误:CRI v1 运行时 API 未实现 在 Linux 基金会论坛上。

笔记 :为端点指定正确的配置unix:///var/run/containerd/containerd.sock并启用默认情况下禁用的插件(Docker 将启动自己的containerd实例而不是使用绑定到的实例/run/containerd/containerd.sock)。将/etc/containerd/config.tomldisabled_plugin 更改为 enabled_plugin。

答案2

检查您的 EC2 实例是否具有足够的系统资源(CPU、内存)来运行 Kubernetes 组件。资源不足可能会导致 kubelet 和其他组件出现问题。验证您的 EC2 实例是否满足 Kubernetes 的推荐系统要求。检查故障容器和组件的日志以收集有关特定错误的更多信息。使用命令 crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock logs CONTAINERID 检索容器日志。将 CONTAINERID 替换为故障容器的实际 ID。

相关内容