K8S集群安装报错

本文讲述了在安装Kubernetes(K8S)集群过程中遇到的各种问题,包括不同版本的yum源选择、kubelet启动报错、config.yaml文件缺失以及预飞检阶段的网络错误。提供了相应的解决方法,如禁用gpg检查、修复服务和调整hostname等。

一、K8S集群安装报错

本文主要记录K8S集群安装报错(适合初学的小白),所以相关的yum源镜像下载以及配置都没有贴出来。大家酌情参考:

$ yum install -y kubelet-1.13.3 kubeadm-1.13.3 kubectl-1.13.3 ##这个vm装不上的话 安装下面这版本
$ yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 ##上一个装不上,装这个,这个可以装上,但是版本太高不兼容
$ yum install -y kubelet-1.14.2 kubeadm-1.14.2 kubectl-1.14.2 ##这个装上后,直接执行下一步初始化操作

docker start $(docker ps -a -q)
报错一:安装报错:

https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found
正在尝试其它镜像
… …
失败的软件包是:kubectl-1.18.0-0.x86_64
GPG 密钥配置为:https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

解决方案:
一般这个报错是因为yum源中开启了安装软件前,系统检测该软件是否有授权。把k8syum源文件中的gpgcheck=1参数修改为gpgcheck=0
报错二:启动服务kubelet报错

[root@docker ~]# systemctl status kubelet.service
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; disabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: activating (auto-restart) (Result: exit-code) since 五 2023-02-10 13:37:11 CST; 7s ago
Docs: https://kubernetes.io/docs/
Process: 2680 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=255)
Main PID: 2680 (code=exited, status=255)
2月 10 13:37:11 docker systemd[1]: kubelet.service: main process exited, code=exited, status=255/n/a
2月 10 13:37:11 docker systemd[1]: Unit kubelet.service entered failed state.
2月 10 13:37:11 docker systemd[1]: kubelet.service failed.

详细报错
journalctl -u kubelet --no-pager ##检查日志
journalctl 的 -u 参数可以指定服务进行过滤,这样可以屏蔽掉其他无关日志。
–no-pager 参数可以一次性输出日志,当然如果你只是在线查看,则可以不用这个参数,
只是输出日志受到屏幕宽度限制,需要通过方向键滚动。
输出信息

2月 10 13:41:17 docker systemd[1]: kubelet.service: main process exited, code=exited, status=255/n/a
2月 10 13:41:17 docker systemd[1]: Unit kubelet.service entered failed state.
2月 10 13:41:17 docker systemd[1]: kubelet.service failed.
2月 10 13:41:27 docker systemd[1]: kubelet.service holdoff time over, scheduling restart.
2月 10 13:41:27 docker systemd[1]: Started kubelet: The Kubernetes Node Agent.
2月 10 13:41:27 docker systemd[1]: Starting kubelet: The Kubernetes Node Agent…
2月 10 13:41:27 docker kubelet[2920]: F0210 13:41:27.758255 2920 server.go:199] failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file “/var/lib/kubelet/config.yaml”, error: open /var/lib/kubelet/config.yaml: no such file or directory
2月 10 13:41:27 docker systemd[1]: kubelet.service: main process exited, code=exited, status=255/n/a
2月 10 13:41:27 docker systemd[1]: Unit kubelet.service entered failed state.
2月 10 13:41:27 docker systemd[1]: kubelet.service failed.

解决方案:
提示没有找到/var/lib/kubelet/config.yaml这个文件,如果可以找到这个原文件,直接拷贝到这个目录下面或者怕麻烦的话,直接kubeadm init 初始化。
报错三:初始化时又报错

$ kubeadm init
[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...
To see the stack trace of this error execute with --v=5 or higher

解决方案:
提高cpu核数就可以
报错四:再次初始化 kubeadm init 报错

I0210 13:57:08.814492 4473 version.go:252] remote version is much newer: v1.26.1; falling back to: stable-1.18
W0210 13:57:10.202008 4473 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[init] Using Kubernetes version: v1.18.20
[preflight] Running pre-flight checks
[WARNING Service-Docker]: docker service is not enabled, please run ‘systemctl enable docker.service’
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https://kubernetes.io/docs/setup/cri/
[WARNING SystemVerification]: this Docker version is not on the list of validated versions: 23.0.0. Latest validated version: 19.03
[WARNING Hostname]: hostname “docker” could not be reached
[WARNING Hostname]: hostname “docker”: lookup docker on 8.8.8.8:53: read udp 192.168.10.201:49150->8.8.8.8:53: i/o timeout
[WARNING Service-Kubelet]: kubelet service is not enabled, please run ‘systemctl enable kubelet.service’
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using ‘kubeadm config images pull’
error execution phase preflight: [preflight] Some fatal errors occurred:
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.18.20: output: Error response from daemon: Get “https://k8s.gcr.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.18.20: output: Error response from daemon: Get “https://k8s.gcr.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.18.20: output: Error response from daemon: Get “https://k8s.gcr.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.18.20: output: Error response from daemon: Get “https://k8s.gcr.io/v2/”: context deadline exceeded
, error: exit status 1
[ERROR ImagePull]: failed to pull image k8s.gcr.io/pause:3.2: output: Error response from daemon: Get “https://k8s.gcr.io/v2/”: context deadline exceeded
, error: exit status 1
[ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.4.3-0: output: Error response from daemon: Get “https://k8s.gcr.io/v2/”: context deadline exceeded (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
[ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns:1.6.7: output: Error response from daemon: Get “https://k8s.gcr.io/v2/”: context deadline exceeded
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...
To see the stack trace of this error execute with --v=5 or higher

注意以下几个问题:
· [WARNING Service-Docker]: docker service is not enabled, please run ‘systemctl enable docker.service’ 需要添加开机自启
· [WARNING Hostname]: hostname “docker” could not be reached
/etc/hostname 修改服务器名称,这一点是非常重要的,否者等执行kubectl get node时候会报错“master not fount”。

vim /etc/hostname
master
:wq
$ hostname master

解决方案:
上面的报错是提示网站不可用,可以更换镜像源解决。至于镜像源我就不贴了,可以参考我之前搭建K8S时候写的博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值