背景经过:
k8s刚搭建完毕,组建图形界面dashboard时报错
主要原因:firewall仅开放了服务器ip,没有开放k8s pod之间的虚拟ip,网络不通
方法:放通或干脆关闭firewalld
检查pod状态
kubectl get pod -n kubernetes-dashboard

注:
- 发现有pod不正常,先describe查看一下
查看pod描述
kubectl describe pod kubernetes-dashboard-6b8f9cc89c-n7ff4 -n kubernetes-dashboard

注:
- 主要看最后面的Events,没发现具体异常,查看pod日志
查看pod日志
kubectl logs -f kubernetes-dashboard-6b8f9cc89c-n7ff4 -n kubernetes-dashboard

注:
- 发现异常:dial tcp 10.96.0.1:443: connect: no route to host. 是pod内部网络问题导致无法连接
查看防火墙
firewall-cmd --list-all

注:
- 服务器firewall只放通了192.169.10.0/16网段,pod内部虚拟网络通信是另外一组ip段(tcp 10.96.0.1:443: connect: no route to host)
- pod容器之间会创建虚拟网络互相通信。
解决办法:
# k8s集群所有节点放通pod虚拟网卡网段
# 建议直接所有节点关闭firewall
systemctl disable firewalld --now
# 然后等待pod重启,或者手动删了重建
kubectl delete -f recommended.yaml
kubectl apply -f recommended.yaml
再次检查
kubectl get pod -n kubernetes-dashboard

ps:获取已有pod的yaml
kubectl get deploy -o yaml -n kubernetes-dashboard > recommended2.yaml
ps2:尽量用apply不用create
create 是一次性创建命令,资源已存在时报错,仅适用于确认资源不存在的场景
apply 是声明式管理命令,支持创建/更新资源,重复执行无故障,是日常使用的首选
核心区别:create 只有创建能力,apply 兼具创建和增量更新能力。
ps3:使用edge浏览器打开自建https网站被拦截问题
在浏览器被拦截页面,英文输入 thisisunsafe