解决Centos7下Kubernetes(k8s)部署好之后无法访问dashboard

Kubernetes的部署过程比较复杂,相信很多人都是跟着opsnull大神的文章(https://github.com/opsnull/follow-me-install-kubernetes-cluster)一步一步部署的。

部署到dashboard之前检查所有的步骤都没有出现错误,可是安装了dashboard插件之后无论是通过 NodeIP:NodePort的方式 还是通过 proxy 或是 kube-api的方式 都一直无法访问,浏览器也没有提示任何错误,只是一直在加载,页面也是空白一片。接下来开始排查问题

首先,查看dashboard被k8s分配到了哪一台机器上

kubectl get pods --all-namespaces -o wide

结果如下:

发现dashboard部署到了10.12.32.148这个节点上。

接着,查看dashboard的集群内部IP,

kubectl get services --all-namespaces

结果如下:

发现他的集群IP为10.254.105.242,接着,由于flannel网络已经打通,我尝试着在各个node上curl这个IP,可是发现,除了10.12.32.148这个机器自己curl返回了结果外,其他的所有机器都没有相应。此时,我怀疑是flannel网络的问题,可如果是flannel网络的问题,那么之前ping网关的时候就应该不通。

之后,想到了opsnull文章中提到的

解决Centos7下Kubernetes(k8s)部署好之后无法访问dashboard_第1张图片

很有理由怀疑是iptables的问题,使用iptables -nL命令查看,果然,Forward的策略还是drop,可是我们明明执行了

iptables -P FORWARD ACCEPT

原来,docker是在这句话执行之后启动的,需要每次在docker之后再执行这句话

那我们也将这句话写入了/etc/rc.local里面了,怎么没有生效?这是因为centos7等比较新的系统已经摒弃通过/etc/rc.local方式来执行开机脚本的方式


好了,问题找到了,只需要更改docker的启动服务脚本即可

vim /etc/systemd/system/docker.service

[Service]
这项下面添加


ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
然后重启docker,成功!

解决Centos7下Kubernetes(k8s)部署好之后无法访问dashboard_第2张图片



你可能感兴趣的:(centos,kubernetes,iptables,dashboard,无法访问)