我有一个正在运行的集群,其版本如下 GitVersion:"v1.24.2",
对于此版本中针对运行集群抛出 --network-plugin 标志错误的 CNI 更改,解决方案是什么?我似乎找不到任何方法来修复正在运行的集群。我的 2 个集群显然因此而关闭,并且似乎无法弄清楚如何修复
我尝试将文件 /var/lib/kubelet/kubeadm-flags.env 更改为下面的内容,但仍然没有帮助
KUBELET_KUBEADM_ARGS="--pod-infra-container-image=k8s.gcr.io/pause:3.5"
KUBELET_NETWORK_ARGS=''
与问题相关https://github.com/kubernetes/website/issues/33640
文档已更新并合并,但是运行集群怎么样?可以做什么?
好吧,也许我之前不清楚我的问题/解释
我们有一个早期版本的 kubernetes,已升级到 1.24.2,我们在 2 个集群中看到相同的行为 - 当我说集群时,它们现在是 2 个虚拟机,每个虚拟机都表现为自己的集群,托管在本地。我们部署连接到 Azure 的容器 - 作为本地自托管应用程序网关。
问题 - 升级到当前版本后,我在 kubelet 日志中看到以下错误,并且 kubelet 似乎没有运行/活动
kubectl get pods 与服务器 localhost:8080 的连接被拒绝 - 您指定了正确的主机或端口吗?
Kubelet 日志中的错误
kubelet[18280]:错误:无法解析 kubelet 标志:未知标志:--network-plugin systemd[1]:kubelet.service:主进程已退出,代码=已退出,状态=1/FAILURE
我尝试通过删除 --network-plugin flag 来调整 /var/lib/kubelet/kubeadm-flags.env 中的参数,但没有成功。现在,在 kubelet 重新启动后,我还在 kubelet 日志中看到以下错误
{0}。错误:连接错误:desc =“传输:拨打 dial unix 时出错:缺少地址”。正在重新连接... Jul 01 15:14:49 kubelet[10297]: 错误: 无法运行 Kubelet: 无法确定运行时 API 版本: rpc 错误: 代码 = 不可用 desc = 连接错误: desc = "传输: 拨号时出错unix:缺少地址”
kubelet[10252]: --runtime-request-timeout 持续时间 所有运行时请求的超时时间,除了长时间运行的请求 - 拉取、日志、执行和附加。当超时时,kubelet 将取消请求,抛出错误并稍后重试。(默认 2m0s)(已弃用:应通过 Kubelet 的 --config 标志指定的配置文件来设置此参数。有关更多信息,请参阅https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/信息。)
git-Hub 链接讨论了同样的问题,但更多的是关于不再使用的标志的文档更改。是否有任何修复程序可用于已升级到最新版本的正在运行的集群?
我刚刚在将控制平面/主节点从 1.23.9-00 升级到 1.24.3-00 时遇到了完全相同的问题。控制平面是使用 kubeadm 创建的。
Kubelet 无法启动,第一个错误是:
Error: failed to parse kubelet flag: unknown flag: --network-plugin
Run Code Online (Sandbox Code Playgroud)
有些人建议从 中删除 --network-plugin 标志/var/lib/kubelet/kubeadm-flags.env,但这只会导致不同的错误:
grpc: addrConn.createTransport failed to connect to { <nil> 0 <nil>}.
Err: connection error: desc = "transport: Error while dialing dial unix:
missing address". Reconnecting...
Error: failed to run Kubelet: unable to determine runtime API version:
rpc error: code = Unavailable desc = connection error: desc =
"transport: Error while dialing dial unix: missing address"
Run Code Online (Sandbox Code Playgroud)
通过一些旧的 github 问题,我发现有一种正确的方法来重新生成 kubeadm-flags.env 文件:
我们现在实施的解决方法是在运行 kubeadm 升级命令之前运行 kubeadm init 阶段 kubelet-start
所以解决方案的第一部分是运行它来重新生成该文件:
# kubeadm init phase kubelet-start
Run Code Online (Sandbox Code Playgroud)
这可能已经为你解决了这个问题,但对我来说 kubelet 仍然无法启动:
Error: failed to run Kubelet: failed to create kubelet: get remote runtime typed
version failed: rpc error: code = Unimplemented desc = unknown
service runtime.v1alpha2.RuntimeService
Run Code Online (Sandbox Code Playgroud)
我发现这个问题是由无效的 cri/containerd 配置引起的。跑步也crictl ps出现了类似的问题。
其他人在此线程中发布了该问题的解决方案:
# containerd config default > /etc/containerd/config.toml
# echo """
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
""" > /etc/crictl.yaml
# systemctl restart containerd
Run Code Online (Sandbox Code Playgroud)
这为我解决了这个问题。不幸的是我真的不知道是什么导致了这个问题。我按照升级说明进行操作。
| 归档时间: |
|
| 查看次数: |
12505 次 |
| 最近记录: |