首页 > 解决方案 > 启用防火墙时无法访问 k8s-dashboard

问题描述

我有一个带有 3 个节点(2 个工作人员)的单主 kubeadm 集群设置。在启用防火墙之前,我可以通过本地计算机上的 kubectl 代理访问 kubernetes-dashboard 槽。我的防火墙(ufw)配置是: 主节点

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
6443/tcp                   ALLOW       Anywhere                  
2379:2380/tcp              ALLOW       Anywhere                  
10250/tcp                  ALLOW       Anywhere                  
10251/tcp                  ALLOW       Anywhere                  
10252/tcp                  ALLOW       Anywhere                  
10255/tcp                  ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
8443/tcp                   ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
6443/tcp (v6)              ALLOW       Anywhere (v6)             
2379:2380/tcp (v6)         ALLOW       Anywhere (v6)             
10250/tcp (v6)             ALLOW       Anywhere (v6)             
10251/tcp (v6)             ALLOW       Anywhere (v6)             
10252/tcp (v6)             ALLOW       Anywhere (v6)             
10255/tcp (v6)             ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
8443/tcp (v6)              ALLOW       Anywhere (v6)  

工作节点

Status: active

To                         Action      From
--                         ------      ----
10250/tcp                  ALLOW       Anywhere                  
10255/tcp                  ALLOW       Anywhere                  
30000:32767/tcp            ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
10250/tcp (v6)             ALLOW       Anywhere (v6)             
10255/tcp (v6)             ALLOW       Anywhere (v6)             
30000:32767/tcp (v6)       ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6) 

有没有我忘记允许的端口?或者它可能来自其他东西?

谢谢!

标签: kubernetesfirewallkubeadmkubernetes-dashboardufw

解决方案


为了访问仪表板,您需要让 KubernetesService公开仪表板。假设您使用此处的说明安装了它,您可以修补服务以将端口公开为NodePort.

kubectl patch service/kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}' --type=merge

然后运行此命令,该命令将返回 NodePort 编号:

kubectl get service/kubernetes-dashboard -o jsonpath='{.spec.ports[0].nodePort}'

然后更新您的防火墙以在您的一个或所有工作人员上打开该端口。

然后在任何工作人员上点击该端口:https://[WorkerIP]:[NodePort]


推荐阅读