尝试在 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权限执行下面的步骤即可解决:
执行命令删除旧容器
apt remove containerd
使用以下命令(
apt update
和apt install containerd.io
)更新存储库数据并安装新的 containerd:删除已安装的默认配置文件:
rm /etc/containerd/config.toml
使用以下命令重新启动 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.toml
disabled_plugin 更改为 enabled_plugin。
答案2
检查您的 EC2 实例是否具有足够的系统资源(CPU、内存)来运行 Kubernetes 组件。资源不足可能会导致 kubelet 和其他组件出现问题。验证您的 EC2 实例是否满足 Kubernetes 的推荐系统要求。检查故障容器和组件的日志以收集有关特定错误的更多信息。使用命令 crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock logs CONTAINERID 检索容器日志。将 CONTAINERID 替换为故障容器的实际 ID。