在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)访问正常