首页 > 其他分享 >k8s集群部署报错问题合集

k8s集群部署报错问题合集

时间:2024-01-04 18:02:43浏览次数:34  
标签:kubeadm ## 报错 docker k8s 合集 节点

1、报错-- the number of available CPUs 1 is less than the required 2

k8s集群部署报错问题合集_k8s部署报错

解决方法:如图中报错,至少需要2核CPU,增加CPU核数

2、 报错kubelet service is not enabled

k8s集群部署报错问题合集_k8s部署报错_02

###解决方法:
kubelet没有开启开机自启动,按照提示运行:systemctl  enable  kubelet.service

3、this version of kubeadm only supports deploying clusters with the control planeversion >= 1.17.0. Current version: V1.10.2

k8s集群部署报错问题合集_k8s部署报错_03

###解决方法:
上图可以看出,此kubeadm版本过高导致的,安装相应支持版本的kubeadm

4、validated versions: 24.0.7. Latest validated version: 19.03

k8s集群部署报错问题合集_k8s部署报错_04

如上报错,k8s支持的docker版本最高19.03版本,现在docker是24.0.7,版本过高,运行下述,卸载现有版本,重新暗账19.03或者更低版本

###卸载现有docker
yum  -y  remove  docker-ce

##安装19.03.9指定版本号docker
yum  -y  install  ddocker-ce-19.03.9

##上述安装后,重启docker
systemctl  restart  docker
systemctl  enable  docker

5、Error response from daemon: manifest for gotok8s/kube-proxy:v1.14.10 not found

k8s集群部署报错问题合集_k8s部署报错_05

问题原因:可以看到上述报错,是因为gotok8s这个dockerhub中的gotok8s仓库中没有对应版本的包的问题
解决方法:可以找一下其他仓库中是否有对应版本

k8s集群部署报错问题合集_k8s部署报错_06

参考:https://www.freesion.com/article/20831079183/

6、node节点执行kubeadm join命令后,卡主,一直无返回

k8s集群部署报错问题合集_k8s部署报错_07

参考:https://blog.csdn.net/qq_62242833/article/details/124757455
是因为我虚拟机,用的两个网卡,master端直接运行kubeadm init拉取镜像的话,总是会生成第一张网卡对应的kubeadm join命令,在node节点运行的话,无反应;
所以master端需要运行kubeadm init时指定网卡IP,可以用下述命令
kubeadm init --pod-network-cidr=10.244.0.0/16  #网卡插件的 网络范围  --apiserver-advertise-address=172.30.14.236  ###master 的 ip 地址
会生成一段kubeadm join命令:

k8s集群部署报错问题合集_k8s部署报错_08

7、node节点运行kubeadm join命令报错: error execution phase preflight: couldn't validate the identity of the API Server: expected a 32 byte SHA-256 hash, found 31 bytes

k8s集群部署报错问题合集_k8s部署报错_09

原因: kubeadm join中 sha256值不对导致的
解决方法:
查看实际的 sha256
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

k8s集群部署报错问题合集_k8s部署报错_10

在node节点中执行kubeadm join命令中,修改sha256为上述查出的sha256就OK

k8s集群部署报错问题合集_k8s部署报错_11

8、node节点运行kubeadm join命令报错:error execution phase preflight: couldn't validate the identity of the API Server: abort connecting to API servers after timeout of 5m0s

k8s集群部署报错问题合集_k8s部署报错_12

9、添加node成功,但是在master运行kubectl get nodes 看不到子节点,如下图,只能看到localhosts

k8s集群部署报错问题合集_k8s部署报错_13

##问题原因:
因为master和node1、node2节点的主机名都是localhost,修改节点主机名

10、kubelet重启有问题,如下图:

k8s集群部署报错问题合集_k8s部署报错_14

k8s集群部署报错问题合集_k8s部署报错_15

直接 systemctl restart kubelet重启的话,会报错,如下图:

k8s集群部署报错问题合集_k8s部署报错_16

根据上图报错提示,可以看到需要先systemctl daemon-reload重新加载配置文件,再次systemctl restart kubelet重启,启动成功

11、重启服务器,kubelet服务挂掉,重启启动不来

k8s集群部署报错问题合集_k8s部署报错_17

问题原因+解决方法:
服务启动不了,看到上述status中指定配置文件位置,看情况是配置文件问题,找到对应配置文件,重命名配置文件
systemctl daemon-reload     ##重新加载配置
systemctl restart kubelet      ##重启kubelet 
如下图可以看到启动成功

k8s集群部署报错问题合集_k8s部署报错_18

12、执行kubeadm init初始化主节点时,报docker版本过高,不支持

k8s集群部署报错问题合集_k8s部署报错_19

解决方法:那就卸载docker重新安装支持的版本,如图最后支持的版本为18.09版本,那就重新安装此版本docker

1、首先卸载旧版:
yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-selinux \
           docker-engine-selinux \
           docker-engine
 
 有时上述卸载不下来,可用下述命令卸载:
 yum  -y  remove  docker-ce
2、安装依赖包:
yum install -y yum-utils device-mapper-persistent-data lvm2
3、设置安装源(阿里云):
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、启用测试库(可选):
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
5、安装:
yum makecache fast
##根据我整套部署,目前最后支持的为18.09版本docker,直接yum install -y docker-ce安装的话,会默认安装最新版本,不支持,所以用下边语句直接安装支持的18.09版本docker
yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
6、启动:
systemctl start docker开机自启
systemctl enable dockerDocker建议配置阿里云镜像加

按照上述重新安装之后,OK

13、从docker拉取镜像时,报错:

k8s集群部署报错问题合集_k8s部署报错_20

解决方法:我是写的一个脚本,用来拉取镜像,并修改名称,看到docker中jiamiao442仓库拉取镜像有问题,dockerhub上查看jiamiao442是有相应版本镜像的,重新编辑脚本,重新保存,重新运行,OK

14、kubelet一直启动不起来,查看错误状态码为 255

k8s集群部署报错问题合集_k8s部署报错_21

问题原因:
journalctl -xefu kubelet     ##查看kubelet的启动日志

k8s集群部署报错问题合集_k8s部署报错_22

根据上述报错,查看百度查看,说是重启服务器可以解决问题,我重启了服务器,再次启动kubelet,查看启动日志报错:

k8s集群部署报错问题合集_k8s部署报错_23

查看上述报错,根据报错,百度查看下述连接:
https://blog.csdn.net/qqhappy8/article/details/107723158
然后找到下面连接:
https://coding-stream-of-consciousness.com/2020/01/15/minikube-start-failure-streaming-server-stopped-cannot-assign-requested-address/
检查该节点的/etc/hosts,确实发现没有localhost的解析文件了。采用了 echo “1.2.3.4 a.b.com” > /etc/hosts的操作,导致/etc/hosts中localhost解析被清空。

k8s集群部署报错问题合集_k8s部署报错_24

解决方法: 重新编辑hosts文件,localhost加上去

k8s集群部署报错问题合集_k8s部署报错_25

再次重启,OK

k8s集群部署报错问题合集_k8s部署报错_26

15、

k8s集群部署报错问题合集_k8s部署报错_27

16、报错:安装Kubernetes Dashboard 报错mapping values are not allowed in this context

k8s集群部署报错问题合集_k8s部署报错_28

报错原因+解决方法:

上述报文件第232行有问题,查看文件,发现文件内容是html格式,不是对应的yaml文件,发现是文件未下载成功导致的问题

重新下载文件,查看文件内容为正常格式,重新kubectl  apply  -f  引用文件,OK   如下图:

k8s集群部署报错问题合集_k8s部署报错_29

17、

k8s集群部署报错问题合集_k8s部署报错_30

18、

k8s集群部署报错问题合集_k8s部署报错_31

k8s的master节点部署后,检查pod状态一直显示NotReady,查看日志:journalctl -xefu kubelet

看到上述截图报错

问题原因:服务器内存资源不足导致的

解决方法:  

在/etc/sysctl.conf中加入:
vm.zone_reclaim_mode = 1
然后执行sysctl -p 

上述参数的作用就是告诉内核,当内存不够时,就直接回收buffer/cache

上述配置后,重新查看pod状态,可以看到已经ready

19、

k8s集群部署报错问题合集_k8s部署报错_32

k8s初始化报错如上,这种是因为拉取的阿里镜像,和需要的镜像名不同导致初始化报错:

k8s集群部署报错问题合集_k8s部署报错_33

给docker打tag,修改镜像名:

k8s集群部署报错问题合集_k8s部署报错_34

如上图,打完tag后,可以看到新镜像

重新运行k8s初始化命令,OK:

k8s集群部署报错问题合集_k8s部署报错_35

初始化成功,如下图,生成对应token:

k8s集群部署报错问题合集_k8s部署报错_36

20、k8s初始化,报错:running with swap on is not supported. Please disable swap

k8s集群部署报错问题合集_k8s部署报错_37

 根据提示,关闭swap,重试,OK

###关闭swap
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

21、 k8s初始化包镜像问题

k8s集群部署报错问题合集_k8s部署报错_38

 如下截图,可以看到从阿里云拉取的镜像和k8s需要的镜像名不一样,需要打tag

k8s集群部署报错问题合集_k8s部署报错_39

[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.20.5 k8s.gcr.io/kube-proxy:v1.20.5
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.20.5 k8s.gcr.io/kube-apiserver:v1.20.5
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.20.5 k8s.gcr.io/kube-controller-manager:v1.20.5
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.20.5 k8s.gcr.io/kube-scheduler:v1.20.5
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/coredns:1.7.0 k8s.gcr.io/coredns:1.7.0
[root@node1 ~]# docker tag registry.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2

 如下,打完tag后镜像

k8s集群部署报错问题合集_k8s部署报错_40

 重新初始化,OK

22、查看k8s节点状态,报访问拒绝

k8s集群部署报错问题合集_k8s部署报错_41

解决方法:

配置k8s环境变量

##文件赋权
chmod 666 /etc/kubernetes/admin.conf

##k8s环境变量配置
cat > /etc/profile.d/k8s.sh  <<EOF
#/bin/bash
export KUBECONFIG=/etc/kubernetes/admin.conf
EOF

##配置环境变量生效
source /etc/profile.d/k8s.sh

上述操作后,重新运行,OK

k8s集群部署报错问题合集_k8s部署报错_42

23、k8s查看master节点状态显示为NotReady状态

###查看k8s实时日志
journalctl -xefu kubelet

如下报错,显示未安装CNI网络插件

k8s集群部署报错问题合集_k8s部署报错_43

安装CNI网络插件

###下载calico插件的yaml
wget https://docs.projectcalico.org/manifests/calico.yaml

上述下载可能会报认证问题:

k8s集群部署报错问题合集_k8s部署报错_44

可以web访问上述连接地址,手动复制文件到服务器上(注意文件名保持不变)

k8s集群部署报错问题合集_k8s部署报错_45

---修改calico.yaml文件

下述要和初始化的时候kubeadm init中pod-network-cidr保持一致

k8s集群部署报错问题合集_k8s部署报错_46

k8s集群部署报错问题合集_k8s部署报错_47

--新增自动检测此主机的IPv4地址的方法配置

k8s集群部署报错问题合集_k8s部署报错_48

##应用
 kubectl apply -f calico.yaml

k8s集群部署报错问题合集_k8s部署报错_49

上述CNI插件安装完后,查看k8s--master节点状态还是NotReady

重启docker(重启docker,同时会重启docker镜像,k8s重启,刷新状态)

systemctl restart docker

再次查看k8s --master节点状态Ready

24、k8s---master节点状态一直显示NotReady ,查看日志,报JSON进程突然意外结束

k8s集群部署报错问题合集_k8s部署报错_50

问题原因:服务器内存资源不足导致的

解决方法:  

在/etc/sysctl.conf中加入:
vm.zone_reclaim_mode = 1
然后执行sysctl -p 

上述参数的作用就是告诉内核,当内存不够时,就直接回收buffer/cache

上述配置后,重新查看pod状态,可以看到已经ready

k8s集群部署报错问题合集_k8s部署报错_51

25、node节点,join到master节点报错-------- x509: certificate has expired or is not yet valid

报错原因:

node节点时间和master节点时间不一致导致

解决方法:

ntpdate同步服务器时间到北京时间

###安装ntp
yum -y install ntp

##同步时间
ntpdate cn.pool.ntp.org

##查看时间,确认是否同步成功
date

26、如何在k8s的master节点的kubeadm 的join语句:

kubeadm token create --print-join-command

27、k8s查看master节点状态,报“Unable to connect to the server: net/http: TLS handshake timeout”异常问题处理

k8s集群部署报错问题合集_k8s部署报错_52

问题原因:

服务器时间未同步问题导致(因用的虚拟机,恢复快照,导致服务器时间异常)

解决方法:

ntp时间同步

ntpdate同步服务器时间到北京时间

###安装ntp
yum -y install ntp

##同步时间
ntpdate cn.pool.ntp.org

##查看时间,确认是否同步成功
date

28、k8s新加入node节点,运行kubeadm join命令报错:“unable to fetch the kubeadm-config ConfigMap: failed to get config map: Unauthorized”

k8s集群部署报错问题合集_k8s部署报错_53

问题原因:kubeadm join的token过期导致的报错(k8s的master节点初始化后,发现时间不一致,同步的时间,时间同步后,token过期--此token是24小时内有效的)

解决方法:

##重新生成token (注意是在master节点运行)
kubeadm  token create

k8s集群部署报错问题合集_k8s部署报错_54

修改token后,重新运行kubeadm join语句,node节点新增成功

29、k8s中删除node节点

###在主节点驱逐该要删除node节点,如下命令,驱逐node2节点
kubectl drain node2 --delete-local-data --force --ignore-daemonsets

##上述驱逐后,节点状态改变,删除节点node2
kubectl delete node node2

k8s集群部署报错问题合集_k8s部署报错_55

##下述在要删的节点的服务器操作,清空集群信息

##重置k8s
kubeadm reset

##删除残留的文件
rm -rfv /etc/kubernetes/*

##清除iptables或者ipvs的配置
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
ipvsadm --clear

k8s集群部署报错问题合集_k8s部署报错_56

###注,如果是删除master节点,除了要跟上述一样要清数据外,还要用户目录下的.kube文件
rm -rf ~/.kube

30、————完整的k8s卸载

##首先清理运行到k8s集群中的pod
kubectl  delete node --all

##使用脚本停止所有k8s服务
systemctl  stop  kube-apiserver kube-controller-manager kubectl kubelet etcd kube-proxy kube-scheduler; 

##使用命令卸载k8s
kubeadm reset -f

##卸载k8s相关程序
yum -y remove kube*

##删除相关的配置文件
modprobe -r ipip
lsmod

##然后手动删除配置文件和flannel网络配置和flannel网口
rm -rf /etc/cni
rm -rf /root/.kube

##删除cni网络
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1

##删除残留的配置文件
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /etc/systemd/system/multi-user.target.wants/kubelet.service
rm -rf /var/lib/kubelet
rm -rf /usr/libexec/kubernetes/kubelet-plugins
rm -rf /usr/bin/kube*
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd

##更新镜像
yum clean all
yum makecache


标签:kubeadm,##,报错,docker,k8s,合集,节点
From: https://blog.51cto.com/u_14175560/9103241

相关文章

  • 部署Kubernetes(K8s)高可用群集需要多个步骤和考虑因素
    部署一个Kubernetes(K8s)高可用群集需要多个步骤和考虑因素。以下是详细步骤:规划和准备:评估集群需求,包括资源(CPU、内存、存储)、网络、安全和可扩展性。选择部署环境:公有云、私有云、混合云或本地数据中心。选择合适的Kubernetes发行版,例如kubeadm、Kops、Rancher或云提供商的托管服务......
  • k8s多集群管理工具--kuboard v3
    docker拉取镜像安装部署kuboard:v31、###docker拉取镜像dockerpullswr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v32、###启动kuboard容器dockerrun-d\--restart=unless-stopped\--name=kuboard\-p8081:80/tcp\-p30081:10081/tcp\-eKUBOARD_EN......
  • 华为设备命令最全大合集(2024新版),赶紧收藏!
    01、华为交换机基础配置命令 01 常用命令视图 02 创建VLAN<Huawei>   //用户视图,一般display命令查看信息比较多。<Huawei>system-view  //准备进入系统视图。[Huawei]vlan100   //创建vlan100。[Huawei-vlan100]quit  //退回系统视图。 03  将端口加入到vla......
  • Office 2021 简体中文 正式版 零售版 32位和64位 官方镜像下载合集
    Office2021零售版1、OfficeProfessionalPlus2021,专业增强版:ProPlus2021Retail.img(Previouslyonlyavailableinvlversion,detailsareunknown)2、OfficeProfessional2021,专业版:Professional2021Retail.img(PlusAccessandPublisher(forPConly))3、OfficeHome&B......
  • CCS2023--从0到1打造k8s威胁检测可信纵深体系
    本议题公开发布于CCS-2023成都网络安全大会云安全论坛。......
  • K8S_IPV6 POD与数据库联通方法以及快速网络调试的一个思路
    K8S_IPV6POD与数据库联通方法以及快速网络调试的一个思路背景前端时间搭建了一套K8SonlyIPV6SingleStack的测试环境因为自己长时间不搞K8S了,并且IPV6的搭建方法墙内的文档很不完整我这边仅是搭建了一套比较基本的K8S_calico_ingress的单栈IPV6的环境但是同事一直要求......
  • k8s + 微服务,搭建过程遇到的坑
     ingress未添加注解导致配置未加载到ingress-controller,无法域名访问服务 mysql服务异常Causedby:org.springframework.jdbc.CannotGetJdbcConnectionException:FailedtoobtainJDBCConnection;nestedexceptioniscom.mysql.jdbc.exceptions.jdbc4.CommunicationsExcept......
  • windows下logstash从文件中读数据写入es报错 Error: No such file or directory - :/d
    [2023-12-22T17:26:50,327][ERROR][logstash.javapipeline][main][897a6c7006446c97daa2ee44df7541701882ceece289ce428fcfac8aa982a0c5]Apluginhadanunrecoverableerror.Willrestartthisplugin.Pipeline_id:mainPlugin:<LogStash::Inputs::Filestar......
  • 前端,build后index报错,noscript
    解决方法:npxupdate-browserslist-db@latest......
  • 一文带你深入理解K8s-Pod的意义和原理
    本文分享自华为云社区《深入理解K8s-Pod的意义和原理》,作者:breakDawn。在Kubernetes概念中,有以下五种概念:容器container:镜像管理的最小单位生产任务Pod:容器组,资源调度最小单位节点Node:对应集群中的单台机器,是硬件单元的最小单位集群Cluster:对应整个集群,是处理元数据的最小单位集群......