搭建k8s集群报错整理
一、启动flannel报错:
Couldn't fetch network config: client: response is invalid json. The endpoint is probably not valid etcd cluster endpoint.
原因:是因为flannel v0.11版本不支持etcd v3.4.3版本,支持etcd v3.3.10版本,需要将etcd降低版本到3.3.10,后期寻找合适的网络插件方法将etcd升级起来,
下载地址:https://github.com/coreos/flannel/releases
二、安装kube启动进程时报错
报错:kube-apiserver: 无法执行二进制文件
原因:service的包下载错了,下载成amr的安装包,换包成amd的安装包
三、执行kubectl get cs 报错
1、报错:error: no configuration has been provided, try setting KUBERNETES_MASTER environment variable
原因:没有设置kubectl config
2、报错:User "kubernetes" cannot list resource "componentstatuses" in API group
原因:在api的参数文件中加上一下字段,将证书中的用户名加到配置文件中
--requestheader-allowed-names="kubernetes" \
3、一直没有反应,最后退出
原因:查看日志,发现etcd认证失败,读取不到信息,可能是证书不对的问题,也有可能是api进程有问题,建议直接运行api的启动命令,看看报错是什么,进一步排查
4、failed to run Kubelet: cannot create certificate signing request: certificatesigningrequests.certificates.k8s.io is forbidden: User "system:anonymous" cannot create resource "certificatesigningrequests" in API group "certificates.k8s.io" at the cluster scope
kubectl设置用户、上下文、授权的时候有问题,建议检查语句,清空~/.kube/config再重新生成
四、启动etcd报错:
1、(error "remote error: tls: bad certificate"
原因:证书问题,检查证书,是否在hosts中设置了正确的ip
2、conflicting environment variable "ETCD_NAME" is shadowed by corresponding
原因:ETCD3.4版本会自动读取环境变量的参数,所以EnvironmentFile文件中有的参数,不需要再次在ExecStart启动参数中添加,二选一,如同时配置,会触发以下类似报错“etcd: conflicting environment variable "ETCD_NAME" is shadowed by corresponding command-line flag (either unset environment variable or disable flag)”
3、Failed at step CHDIR spawning /usr/bin/etcd: No such file or directory
原因:etcd.service服务配置文件中设置的工作目录WorkingDirectory=/var/lib/etcd/必须存在,否则会报以上错误
4、etcd: health check for peer 21ab2aeb56731588 could not connect: dial tcp 192.168.1.111:2380: connect: no route to host
原因:需要关闭服务器的防火墙,并设置开机不启动,systemctl stop firewalld.service && systemctl disable firewalld.service
五、安装calico插件,报错:
1、failed to query kubeadm's config map error=Get https://10.0.6.1:443/api/v1/namespaces/kube-system/configmaps/kubeadm-config?timeout=2s: dial tcp 10.0.6.1:443
原因:node工作节点启动找不到apiserver的地址,检查一下calico的配置文件,要把apiserver的IP和端口配置上,如果不配置的话,calico默认将设置默认的calico网段和443端口。字段名:KUBERNETES_SERVICE_HOST、KUBERNETES_SERVICE_PORT、KUBERNETES_SERVICE_PORT_HTTPS
2、calico/node is not ready: BIRD is not ready: BGP not established with 192.168.1.111
报这个错是因为192.168.1.111这个节点存在问题,没有正常启动,很多人修改了calico.yaml文件中的IP_AUTODETECTION_METHOD,因为calico默认找第一个网卡信息,可能绑定的网卡是错误的,所以将值改成本机的网卡名字,如eth0,重启启动后就会正常,但是我的并没有生效,还需要从其他地方查找原因。
3、Error creating: pods "calico-node-" is forbidden: error looking up service account kube-system/calico-node: serviceaccount "calico-node" not found
这个错误一般是由于yaml配置文件与版本不匹配,里面ClustRole的权限不对。解决办法是去官网下一份正确的yaml文件,地址:https://docs.projectcalico.org/manifests/calico-etcd.yaml 最好先去官网看一下最新的版本:https://docs.projectcalico.org/getting-started
4、应用calico-etcd.yaml文件出现错误:error parsing calico-etcd.yaml: error converting YAML to JSON: yaml: line 156: did not find expected
原因:yaml格式要求严格,根据报错的位置,检查一下文件修改的地方,看看编写以及空格的问题