k8s(网络组件calico)pod到service域名解析错误解决

问题:安装配置k8s calico网络后, pods之间网络互通,但在测试pod上通过nslookup 获取指定service的域名解析时异常

解决思路:
查看calico日志

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

安装配置calicoctl工具查看calico-node状态
安装配置过程如下(master 节点和node节点都安装):

wget https://github.com/projectcalico/calicoctl/releases/download/v3.10.0/calicoctl -O /usr/bin/calicoctl
chmod +x /usr/bin/calicoctl
#配置calicoctl.cfg(通过kubeadm安装的k8s集群,只需在master 节点配置即可)
mkdir -p /etc/calico
vi /etc/calico/calicoctl.cfg
apiVersion: projectcalico.org/v3
kind: CalicoAPIConfig
metadata:
spec:
  datastoreType: "kubernetes"
  kubeconfig: "/root/.kube/config"

获取calico-node状态

calicoctl node status

结果显示node节点的calico-node状态为start, info显示为Passive
在woker节点查看calico-node状态, 则获取的master节点的ip地址并非master节点的实际IP地址
修改calico的yaml文件,添加

 # Specify interface
            - name: IP_AUTODETECTION_METHOD
              value: "interface=ens33" #以实际网卡名称为准

添加结果如下:
k8s(网络组件calico)pod到service域名解析错误解决_第1张图片
执行以下命令更新calico

kubectl apply -f calico-3.9.2.yaml

完成更新后查看calico-node状态确认是否变为up状态, info是否为Established状态

确认正常后,pod到service之间的ip不能ping通,域名解析正常,wget获取页面信息正常
k8s(网络组件calico)pod到service域名解析错误解决_第2张图片
参考:
https://github.com/projectcalico/calico/issues/2561

你可能感兴趣的:(k8s)