一般安装kubernetes的教程都会教大家首先关闭防火墙,测试环境如此倒是没问题,到了生产环境就要考虑安全性问题了,所以服务器的防火墙依然需要保持最小策略开放,确保服务器的运行安全。
参考文档:https://kubernetes.io/zh-cn/docs/reference/networking/ports-and-protocols/
当在一个有严格网络边界的环境里运行 Kubernetes,例如拥有物理网络防火墙或者拥有公有云中虚拟网络的自有数据中心, 了解 Kubernetes 组件使用了哪些端口和协议是非常有用的。
master节点的组件使用到的端口:
协议 | 方向 | 端口范围 | 目的 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 6443 | Kubernetes API server | 所有 |
TCP | 入站 | 2379-2380 | etcd server client API | kube-apiserver, etcd |
TCP | 入站 | 10250 | Kubelet API | 自身, 控制面 |
TCP | 入站 | 10259 | kube-scheduler | 自身 |
TCP | 入站 | 10257 | kube-controller-manager | 自身 |
尽管 etcd 的端口也列举在master的部分,但你也可以在外部自己托管 etcd 集群或者自定义端口。
协议 | 方向 | 端口范围 | 目的 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 10250 | Kubelet API | 自身, 控制面 |
TCP | 入站 | 30000-32767 | NodePort Services† | 所有 |
† NodePort Services的默认端口范围。
所有默认端口都可以重新配置。当使用自定义的端口时,你需要打开这些端口来代替这里提到的默认端口。
一个常见的例子是 API 服务器的端口有时会配置为 443。或者你也可以使用默认端口, 把 API 服务器放到一个监听 443 端口的负载均衡器后面,并且路由所有请求到 API 服务器的默认端口。
参考文档:https://press.demo.kuboard.cn/install/v3/install-built-in.html
- sudo docker run -d \
- --restart=unless-stopped \
- --name=kuboard \
- -p 80:80/tcp \
- -p 10081:10081/tcp \
- -e KUBOARD_ENDPOINT="http://内网IP:80" \
- -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
- -v /root/kuboard-data:/data \
- eipwork/kuboard:v3
- # 也可以使用镜像 swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 ,可以更快地完成镜像下载。
- # 请不要使用 127.0.0.1 或者 localhost 作为内网 IP \
- # Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server \
暴露端口 :
协议 | 方向 | 端口范围 | 目的 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 80 | Kuboard Web | Kuboard Web |
TCP | 入站 | 10081 | NodePort Services† | Kuboard Agent Server |
WARNING
kuboard-agent
知道如何访问 Kuboard Server;/etc/hosts
文件,将不能正常运行;参数解释
start-kuboard.sh
,后续升级 Kuboard 或恢复 Kuboard 时,需要通过此命令了解到最初安装 Kuboard 时所使用的参数;80
端口(您可以根据自己的情况选择宿主机的其他端口);10081/tcp
映射到宿主机的 10081
端口(您可以根据自己的情况选择宿主机的其他端口);http://内网IP
,如果后续修改此参数,需要将已导入的 Kubernetes 集群从 Kuboard 中删除,再重新导入;10081
,此参数与第 5 行中的宿主机端口应保持一致,修改此参数不会改变容器内监听的端口 10081
,例如,如果第 5 行为 -p 30081:10081/tcp
则第 7 行应该修改为 -e KUBOARD_AGENT_SERVER_TCP_PORT="30081"
;/data
目录映射到宿主机的 /root/kuboard-data
路径,请根据您自己的情况调整宿主机路径;参考文档:安装 Kuboard v3 - kubernetes | Kuboard
- kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
- # 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
- # kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
暴露端口:
协议 | 方向 | 端口范围 | 目的 | 使用者 |
---|---|---|---|---|
TCP | 入站 | 30080 | Kuboard Web | Kuboard Web |
TCP | 入站 | 30081 | NodePort Services† | Kuboard Agent Server |
安装kubernetes和kuboard需要对外暴露的端口
节点 | 协议 | 方向 | 端口范围 | 目的 | 使用者 |
---|---|---|---|---|---|
master | TCP | 入站 | 6443 | Kubernetes API server | k8s 所有 |
master | TCP | 入站 | 2379-2380 | etcd server client API | k8s kube-apiserver, etcd |
master | TCP | 入站 | 10250 | Kubelet API | k8s 自身, 控制面 |
master | TCP | 入站 | 10259 | kube-scheduler | k8s 自身 |
master | TCP | 入站 | 10257 | kube-controller-manager | k8s 自身 |
node | TCP | 入站 | 10250 | Kubelet API | k8s 自身, 控制面 |
node | TCP | 入站 | 30000-32767 | NodePort Services† | k8s 所有 |
master | TCP | 入站 | 80 | Kuboard Web | Kuboard Web |
master | TCP | 入站 | 10081 | NodePort Services† | Kuboard Agent Server |
master | TCP | 入站 | 30080 | Kuboard Web | Kuboard Web |
master | TCP | 入站 | 30081 | NodePort Services† | Kuboard Agent Server |