在云计算环境中,容器化服务的开发往往需要将服务暴露到互联网上,无论是用于生产环境还是开发测试。本文将介绍如何在Azure上使用KubeSpray项目部署Kubernetes集群,并设置数据存储卷。此外,还将展示如何通过配置防火墙规则来暴露服务端口,以便在互联网上测试Pods。需要注意的是,本文介绍的方法并非生产就绪或安全的解决方案,将在后续文章中探讨更安全的生产级部署方案。
在云平台上开发容器化服务时,通常需要将服务暴露到互联网上,以便进行生产或开发测试。为了实现这一点,通常会使用某种防火墙或端口转发规则管理器。在Azure中,通过创建入站安全规则映射来实现这一点,即控制从开放的互联网到云中虚拟网络的网络流量。
在Kubernetes中,可以使用以下命令来识别想要映射的端口:
kubectl get svc -n kube-system
这将打印出在Kubernetes网络上运行的服务及其端口的列表,类似于以下内容。列表详细列出了暴露的服务名称、类型、IP、端口、外部IP(如果有的话)以及运行时间(年龄)。
例如,输出可能如下所示:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE heapster ClusterIP 10.233.54.27 <none> 80/TCP 16m kube-dns ClusterIP 10.233.0.3 <none> 53/UDP,53/TCP 16m kubernetes-dashboard ClusterIP 10.233.46.183 <none> 80/TCP 16m monitoring-grafana NodePort 10.233.28.73 <none> 80:31719/TCP 16m monitoring-influxdb ClusterIP 10.233.17.79 <none> 8086/TCP 16m weave-scope-app NodePort 10.233.46.240 <none> 80:30243/TCP 16m
为了暴露这些服务,需要使用防火墙将外部IP上的端口映射到内部IP/端口组合。
由于每个IP地址只能有一个端口,需要创建唯一的端口号,以便映射到各个内部IP/端口服务。
例如,可以按照以下方式映射:
在设置集群时,创建了一个外部互联网IP,并将其附加到Kubernetes主节点。可以通过检查Azure仪表板上附加到KubeMaster VM的外部IP资源来获取这个IP。
当点击此页面时,将看到现有入站和出站规则的列表。
需要选择并点击“入站”安全规则属性以添加新规则。
一旦打开入站规则,选择“新建”按钮以添加规则。