calico-node报错Readiness probe failed: calico/node is not ready: BIRD is not ready

文章转发自 https://wghdr.top,更多文章请跳转。

问题:

在我安装了nerdctl后,发现calico-node没有ready。报错信息如下:
file

解决:

使用nerdctl会在本机上添加一个nerdctl0的网卡。
file
而calico的配置文件中,IP_AUTODETECTION_METHOD(IP识别策略)为默认的 first-found,这会导致一个网络异常的ip作为nodeIP被注册。

方法1:

修改calico-node的ds。

kubectl edit ds calico-node -n calico-system

- name: IP_AUTODETECTION_METHOD
              value: "interface=eth0"  # eth 根据实际网卡开头配置

该方法命令虽然可以执行,但是我这里ds么没有生效。k8s 1.22,通过operator生成的calico,不是calico.yaml,如果是calico.yaml,直接修改文件中的参数即可。

更新

如果想修改的话,需要添加annotations:

unsupported.operator.tigera.io/ignore: "true"

查看官方文档:https://github.com/tigera/operator
file

添加annotations,再次修改ds成功。

方法2:

安装calicoctl,注意calico版本与calicoctl版本要相同。

cd /usr/local/bin
wget https://github.com/projectcalico/calicoctl/releases/download/v3.21.2/calicoctl-linux-amd64
mv calicoctl-linux-amd64 calicoctl
chmod +x calicoctl

编辑配置文件/etc/calico/calicoctl.cfg。

mkdir /etc/calico

cat > /etc/calico/calicoctl.cfg << EOF
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
  datastoreType: "kubernetes"
  kubeconfig: "/root/.kube/config"
EOF

calico常用命令

# 获取节点
calicoctl get node --allow-version-mismatch
# 获取节点网络状态
calicoctl node status 
状态“up”为正常,状态为“start”为还在启动状态,未就绪。

file

使用calicoctl对calico进行更改

查看问题节点的yaml文件
calicoctl get node master -o yaml

这里使用了nerdctl0网卡的地址。10.4.0.1/24。
file

file

修改IP
calicoctl get node master -o yaml --allow-version-mismatch > calico_master.yaml

spec:
  addresses:
  - address: 192.168.0.6/24
    type: CalicoNodeIP
  - address: 192.168.0.6
    type: InternalIP
  bgp:
    ipv4Address: 192.168.0.6/24
  ipv4VXLANTunnelAddr: 10.100.219.64

file

重启calico-node
calicoctl apply -f calico_master.yaml --allow-version-mismatch

file
这里会报错无法执行,kubectl apply也不行。
参考官网的文档,修改calico-custom-resources.yaml文件
file
apply后calico-apiserver会crashloopback,calico-node也没有恢复正常。回滚文件,重新apply。
参考这篇文章:
https://serverfault.com/questions/1078703/how-to-fix-failed-to-apply-node-resource-update-conflict-node-while
使用这个命令:

kubectl set env ds/calico-node -n calico-system IP_AUTODETECTION_METHOD=interface=eth0
kubectl get pod -n calico-system

可以看到calico-node的节点都正常启动的。
file

方法3:

直接使用calicoctl命令进行修改,这种方法最为方便,推荐使用。

calicoctl patch node master --patch='{"spec":{"bgp": {"ipv4Address": "192.168.0.6/24"}}}' --allow-version-mismatch
calicoctl patch node master --patch='{"spec":{"addresses": {"address": "192.168.0.6/24"}}}' --allow-version-mismatch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠是柠檬的檬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值