kubeadm相关指令出现kubeadm-config无法找到的问题解决

news/2024/7/5 8:56:13

问题的现象是凡是执行kubeadm相关的指令,如kubeadm upgrade plan等,都会出现类似以下的错误

[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster...
[upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[upgrade/config] In order to upgrade, a ConfigMap called "kubeadm-config" in the kube-system namespace must exist.
[upgrade/config] Without this information, 'kubeadm upgrade' won't know how to configure your upgraded cluster.

意思就找不到kubeadm-config相关的信息,但是按提示执行'kubectl -n kube-system get cm kubeadm-config -o yaml'是有内容的,我原来的解决思路是将该指令输出内容的ClusterConfiguration部分保存成kubeadm-config.yaml文件,再通过添加 --config=kubeadm-config.yaml 参数来执行kubeadm命令,这种方法虽然也能解决问题,更新升级都可执行,但总觉得不方便,问题解决不彻底。

最近有点时间再研究了一下,通过对kubeadm添加 -v=6 参数,会输出更详细的执行日志

I0630 17:01:31.992724    3697 plan.go:251] [upgrade/plan] verifying health of cluster
I0630 17:01:31.992785    3697 plan.go:252] [upgrade/plan] retrieving configuration from cluster
I0630 17:01:31.993390    3697 loader.go:374] Config loaded from file:  /etc/kubernetes/admin.conf
[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster...
[upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
I0630 17:01:32.000747    3697 round_trippers.go:553] GET https://172.16.5.141:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config?timeout=10s 200 OK in 6 milliseconds
I0630 17:01:32.001625    3697 loader.go:374] Config loaded from file:  /etc/kubernetes/kubelet.conf
I0630 17:01:32.002761    3697 round_trippers.go:553] GET https://172.16.5.141:6443/api/v1/nodes/kubernetes-admin?timeout=10s 404 Not Found in 1 milliseconds
[upgrade/config] In order to upgrade, a ConfigMap called "kubeadm-config" in the kube-system namespace must exist.
[upgrade/config] Without this information, 'kubeadm upgrade' won't know how to configure your upgraded cluster.

该日志显示 nodes/kubernetes-admin 不存在,通过curl直接调用api也证实了这点,为什么为请求这个不存在的节点内容,我从网上查找了相关的资料,是由于kubelet.conf配置不正常造成的(证书的CN/O内容错误),我复查了该文件,虽然users 是 name: system:node:k8s-m,但将client-certificate-data证书内容打印出来,CN/O的内容是(Subject: O = system:masters, CN = kubernetes-admin),打印命令如下:

echo -n "YOUR—client-certificate-data" | base64 --decode | openssl x509 -text

这表示证书和kubelet.conf配置用户不一致。我回想了一下,应该是上次kubelet不能启动,更新证书时无意间将admin.conf的证书内容复制了过来,因为admin.conf的配置显示用户正是(name: kubernetes-admin)。

既然知道问题所在解决起来就比较简单了,删除/etc/kubernetes/kubelet.conf,再通过以下命令重新生成新文件,注意指令参数中的kubeadm-config.yaml可参照文章开头的方法导出(只要ClusterConfiguration部分)。

kubeadm init phase kubeconfig kubelet --config=kubeadm-config.yaml

重新生成文件后就可以不再需要通过添加--config参数来执行kubeadm相关命令了,问题圆满解决,可能像我这种手残的用户才会遇到:(


http://lihuaxi.xjx100.cn/news/1304853.html

相关文章

二、边界传播器

文章目录 1、新的柱稳定问题2、边界传播器THE END 1、新的柱稳定问题 \qquad 给定:可能的垂直龙脉 D ( X ) D(X) D(X)和可能的水平龙脉 D ( Y ) D(Y) D(Y),龙脉只可能存在于整数的位置。 \qquad 问题:找到最大的 D ′ ( X ) ⊆ D ( X ) D(X)…

AI写小说

在人工智能(AI)的快速进步中,OpenAI的GPT模型已经变得越来越重要。特别是,ChatGPT,或者说"聊天生成预训练转换器",已经在各种场景中展示了其实用性,包括客户服务助手、教育软件,甚至是小说创作的…

cf 比赛 02

2021.04.23 训练地址 B. GCD and MST 思路:可以模仿 Kruskal 的最小生成树的方法。我们从小到大枚举权值,然后往左往右分别找。每当出现不整除或者已经在同一连通块儿中,就break掉. 否则把当前的 a i d a_{id} aid​ 当作变权加入。 #inc…

viewsets.ViewSet 详细讲解

一、地址 官方地址: Viewsets - Django REST framework 相关文章: 二、ViewSets介绍 引入: from rest_framework import viewsets ViewSet 类只是一种类基础视图,它不提供任何方法处理程序(如 .get() 或 .post…

MySQL数据库总结 之 约束(restraint) 外键约束

前三篇关于MySQL的博客,地址如下: 1. MySQL数据库 && SQL语言命令总结 && 数据类型、运算符和聚合函数汇总_Flying Bulldog的博客-CSDN博客 2. 从0到1 && 关于MySQL的数据库和表_Flying Bulldog的博客-CSDN博客 3. MySQL数据…

Idea整合Maven安装及配置教程(图文详解)

目录 友情提醒第一章、Maven概述1.1)Maven是什么1.2)Maven进行构建(build)的主要环节 第二章、Maven的下载安装和配置2.1)Maven的下载2.2)Maven环境变量配置2.3)Maven文件setting的配置 第三章、…

乐视三合一体感深度相机AstraPro图像获取流程【必看】

1、下载ros包或者自己去github 如果不能科学上网,可以在这里下载所有源代码。 下载链接:https://download.csdn.net/download/ryanji/87990936 git clone https://github.com/orbbec/ros_astra_camera.git git clone https://github.com/libuvc/libuvc.…

【WSN定位】基于浣熊优化算法的多通信半径和跳距加权Dvhop定位算法【Matlab代码#46】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. Dvhop定位算法2. 原始浣熊优化算法2.1 开发阶段2.2 探索阶段 3. 多通信半径和跳距加权策略3.1 多通信半径策略3.2 跳距加权策略 4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他…