项目场景:
笔者近日在根据张磊课程学习K8S过程中,进行了kubeadm的实验,由于安装版本与课程中的存在出入,导致了一些报错,故将报错和解决方法记录在此,以供参考。
问题描述
提示:这里描述项目中遇到的问题:
教程中kubeadm初始化的配置文件如下:
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
controllerManagerExtraArgs:
horizontal-pod-autoscaler-use-rest-clients: "true"
horizontal-pod-autoscaler-sync-period: "10s"
node-monitor-grace-period: "10s"
apiServerExtraArgs:
runtime-config: "api/all=true"
kubernetesVersion: "stable-1.11"
在执行初始化命令:
$ kubeadm init --config kubeadm.yaml
会发生如下报错:
your configuration file uses an old API spec: “kubeadm.k8s.io/v1alpha1”. Please use kubeadm v1.11 instead and
run ‘kubeadm config migrate --old-config old.yaml --new-config new.yaml’, which will write the new, similar
spec using a newer API version.
原因分析:
由于实际安装的kubeadm和kubenates版本并不是1.11,所以会发生如上报错。
解决方案:
通过以下指令:
$ kebeadm version
$ kubenates version
查看两者的版本号,我查到的结果是1.28.2,所以需要到官网找到所下载版本的官方文档,寻找支持的apiVersion,以及对应的配置文件。
在directories一栏中可以发现有两个版本:
选择v1beta3(4没有测试过),点击进入对应文档。
文档中有对应的配置文件示例:
对应该示例对上述教程中的配置文件进行修改,结果如下:
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controllerManager
extraArgs:
horizontal-pod-autoscaler-use-rest-clients: "true"
horizontal-pod-autoscaler-sync-period: "10s"
node-monitor-grace-period: "10s"
apiServer
extraArgs:
runtime-config: "api/all=true"
kubernetesVersion: "v1.28.2"
保存后再次执行指令:
$ kubeadm init --config kubeadm.yaml
就可以完成 Kubernetes Master 的初始化部署。