kubernetes && kuboard 端口

前言

一般安装kubernetes的教程都会教大家首先关闭防火墙,测试环境如此倒是没问题,到了生产环境就要考虑安全性问题了,所以服务器的防火墙依然需要保持最小策略开放,确保服务器的运行安全。

kubernetes端口

参考文档:https://kubernetes.io/zh-cn/docs/reference/networking/ports-and-protocols/

端口和协议

当在一个有严格网络边界的环境里运行 Kubernetes,例如拥有物理网络防火墙或者拥有公有云中虚拟网络的自有数据中心, 了解 Kubernetes 组件使用了哪些端口和协议是非常有用的。

master节点

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 集群或者自定义端口。

node节点

协议 方向 端口范围 目的 使用者
TCP 入站 10250 Kubelet API 自身, 控制面
TCP 入站 30000-32767 NodePort Services† 所有

† NodePort Services的默认端口范围。

所有默认端口都可以重新配置。当使用自定义的端口时,你需要打开这些端口来代替这里提到的默认端口。

一个常见的例子是 API 服务器的端口有时会配置为 443。或者你也可以使用默认端口, 把 API 服务器放到一个监听 443 端口的负载均衡器后面,并且路由所有请求到 API 服务器的默认端口。

kuboard

docker 方式安装

 参考文档: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_ENDPOINT 参数的作用是,让部署到 Kubernetes 中的 kuboard-agent 知道如何访问 Kuboard Server;
  • KUBOARD_ENDPOINT 中也可以使用外网 IP;
  • Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server;
  • 建议在 KUBOARD_ENDPOINT 中使用域名;
  • 如果使用域名,必须能够通过 DNS 正确解析到该域名,如果直接在宿主机配置 /etc/hosts 文件,将不能正常运行;

参数解释

  • 建议将此命令保存为一个 shell 脚本,例如 start-kuboard.sh,后续升级 Kuboard 或恢复 Kuboard 时,需要通过此命令了解到最初安装 Kuboard 时所使用的参数;
  • 第 4 行,将 Kuboard Web 端口 80 映射到宿主机的 80 端口(您可以根据自己的情况选择宿主机的其他端口);
  • 第 5 行,将 Kuboard Agent Server 的端口 10081/tcp 映射到宿主机的 10081 端口(您可以根据自己的情况选择宿主机的其他端口);
  • 第 6 行,指定 KUBOARD_ENDPOINT 为 http://内网IP,如果后续修改此参数,需要将已导入的 Kubernetes 集群从 Kuboard 中删除,再重新导入;
  • 第 7 行,指定 KUBOARD_AGENT_SERVER 的端口为 10081,此参数与第 5 行中的宿主机端口应保持一致,修改此参数不会改变容器内监听的端口 10081,例如,如果第 5 行为 -p 30081:10081/tcp 则第 7 行应该修改为 -e KUBOARD_AGENT_SERVER_TCP_PORT="30081"
  • 第 8 行,将持久化数据 /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

你可能感兴趣的:(kubernetes,容器,云原生)