启用防火墙时无法访问 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) 

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

谢谢!

解决方法

为了访问仪表板,您需要让 Kubernetes Service 公开仪表板。假设您已使用说明 here 安装它,您可以修补服务以将端口公开为 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]

,

仪表板在哪里运行?如果在节点上,则在节点上也打开 443。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...