Error execution phase kubelet-start when join cluster
worker节点加入k8s集群的时候出现上述错误
经排查,是master的kubeadm版本和worker节点的kubeadm版本不一致。安装替换即可。
calico/node is not ready: BIRD is not ready: BGP not established
一直被集群pod不同node节点之间不能互ping困扰(nacos服务发现,sentinel接口发现默认使用pod ip。如果不能互ping,会导致nacos,sentinel不可用)
经排查是DaemonSet :kube-system / calico-node 没有正常启动。报以下错误
Readiness probe failed: caliconode is not ready: BIRD is not ready: BGP not established with 10.117.
初步判断,应该是网络的问题(个人对网络这块不是很了解,需要加强)。
通过下面这篇文章补了以下calico的知识:
https://www.cnblogs.com/goldsunshine/p/10701242.html
BIRD是一个标准的路由程序,它会从内核里面获取哪一些IP的路由发生了变化,然后通过标准BGP的路由协议扩散到整个其他的宿主机上,让外界都知道这个IP在这里,你们路由的时候得到这里来
通过网上的一篇文章:https://blog.csdn.net/u011327801/article/details/100579803
了解到是calico没用发现实际真正的网卡。调整calicao 网络插件的网卡发现机制,修改IP_AUTODETECTION_METHOD对应的value值。官方提供的yaml文件中,ip识别策略(IPDETECTMETHOD)没有配置,即默认为first-found,这会导致一个网络异常的ip作为nodeIP被注册,从而影响node-to-node mesh。我们可以修改成can-reach或者interface的策略,尝试连接某一个Ready的node的IP,以此选择出正确的IP。
找到calico.yaml文件,添加两行
- name: IP_AUTODETECTION_METHOD
value: "interface=ens.*"
完整的像这样
- name: CALICO_NETWORKING_BACKEND
valueFrom:
configMapKeyRef:
name: calico-config
key: calico_backend
# Cluster type to identify the deployment type
- name: CLUSTER_TYPE
value: "k8s,bgp"
- name: IP_AUTODETECTION_METHOD
value: "interface=ens.*"
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
# Enable IPIP
- name: CALICO_IPV4POOL_IPIP
value: "Always"
然后 kubectl apply -f calico.yaml部署即可。调用 kubectl get pods -n kube-system发现calico-node都启动正常。
Calico/Flannel容器之间互通的网络方案的验证
我在k8s集群中安装了一个busybox deployment。复制因子为3。
- 用pod ip在node上互ping。都可以ping得通。
- 在pod节点内部也是可以互ping的。
Kuboard 不能显示计算资源利用率情况
参考文章:https://kuboard.cn/install/faq/metrics-server.html
Kuboard 不能显示计算资源利用率情况是因为Metrics server服务没有安装。安装即可。Metrics server安装成功,apiserver不能访问。报以下错误
failing or missing response from
https://10.96.106.114:443/apis/metrics.k8s.io/v1beta1: Get
https://10.96.106.114:443/apis/metrics.k8s.io/v1beta1: net/http: request
原因:Metrics server安装在了peer154,master节点的apiserver不能访问。原因还是calico没有安装成功。修复之后,Metrics server和apiserver之间的通讯恢复正常