【分享】从1.13版本升级到1.14版本出现403的问题以及解决方案

在1.13版本(含)之前使用一直没有问题,而升级到1.14版本后页面直接提示了403错误

(1)通过glooctl check -n zadig看了没有问题,不过目前还是提示403

(2)后通过MinMin提示1.14版本aslan存在通过服务名称调用自己的操作,即 aslan POD无法通过ServiceName访问自己,403是因为aslan无法完成这样的操作。通过在aslan POD中curl测试发现确实如此。

(3)查询资料确认与本地设置有关,因我司K8S为二进制文件手动安装, 使用的cni插件是flannel,也不是容器化安装,不是标准化的通过kubelet指定cni plugin(–cni-bin-dir,–cni-conf-dir参数),而是通过dockerd 提供的-bip 参数指定容器的子网,而这个值来自/run/flannel/subnet.env。在默认条件下,bridge不允许包从收到包的端口发出,比如这种情况,在pod内通过docker0访问service,后续又通过docker0网桥进来。

(4)解决方案,配置docker0网卡为promisc模式
ifconfig docker0 promisc

(5)访问正常

3 个赞

或者可以试一下修改flannel的配置文件,设置

"delegate": {
    "isDefaultGateway": true,
    "hairpinMode": true
  }
2 个赞