额外细节

额外细节

我有一个正在运行的集群,其版本如下 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 标志来调整 /var/lib/kubelet/kubeadm-flags.env 中的参数,但没有成功。在 kubelet 重启后,我在 kubelet 日志中也看到了以下错误

{ 0 }。错误:连接错误:desc =“传输:拨号时出错,unix:缺少地址”。正在重新连接... 7 月 1 日 15:14:49 kubelet[10297]:错误:运行失败 Kubelet:无法确定运行时 API 版本:rpc 错误:代码 = 不可用 desc = 连接错误:desc =“传输:拨号时出错,unix:缺少地址”

kubelet[10252]: --runtime-request-timeout 持续时间 除了长时间运行的请求(pull、logs、exec 和 attachment)之外的所有运行时请求的超时时间。超过超时时间时,kubelet 将取消请求,抛出错误并稍后重试。(默认 2m0s)(已弃用:此参数应通过 Kubelet 的 --config 标志指定的配置文件进行设置。请参阅https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/了解更多信息。)

git-Hub 链接讨论了同样的问题,但随后更多地讨论了不再使用的标志的文档更改。对于已经升级到最新版本的正在运行的集群,是否有可用的修复程序?

答案1

我在将控制平面/主节点从 1.23.9-00 升级到 1.24.3-00 时遇到了完全相同的问题。控制平面是使用 kubeadm 创建的。

Kubelet 无法启动,第一个错误是:

Error: failed to parse kubelet flag: unknown flag: --network-plugin

有人建议从中删除 --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"

通过一些旧 Github 问题我发现有一种正确的方法来重新生成 kubeadm-flags.env 文件:

我们目前实施的解决方法是在运行 kubeadm upgrade 命令之前运行 kubeadm init phase kubelet-start

因此解决方案的第一部分是运行此程序来重新生成此文件:

# kubeadm init phase kubelet-start

这可能已经为你解决了问题,但对我来说 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

我发现这个问题是由无效的 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

这帮我解决了这个问题。不幸的是,我真的不知道是什么导致了这个问题。我按照升级说明

相关内容