将端口暴露给 Azure 上的 Kubernetes Pod





5.00/5 (3投票s)
在 Azure 上将端口暴露给 Kubernetes Pod/容器的简单逐步指南
引言
在之前的 一篇文章中,我们探讨了使用 'KubeSpray
' 项目在 Azure 上部署一个生产就绪的 Kubernetes 集群,然后我们设置了一个 Kubernetes 在 Azure 上的数据存储卷。 这篇快速文章简要介绍了如何通过互联网暴露端口,以便您可以对外测试 Pod。 请注意,这既不是生产就绪的,也不是安全的 - 我们将在未来的文章中涵盖这些内容!
背景
当我们在云上使用容器开发服务时,我们通常希望将这些服务通过互联网暴露出来用于生产或开发。 为此,我们通常使用某种防火墙/端口转发规则管理器。 在 Azure 中,我们通过创建 入站安全规则映射来完成此操作,即控制从开放的互联网到云中虚拟网络中的网络流量。
定位要打开的端口
在 Kubernetes 中,要识别我们尝试映射的端口,我们可以使用 KUBECTL
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/端口服务。
对于本示例,我们将按如下方式映射
- Grafana 监控服务 - 内部:10.233.28.73: 80,外部:9001
- Kubernetes 仪表板 - 内部:10.233.46.183:80,外部 9000
- Weave-scope - 内部:10.233.46.240: 30243,外部 9002
打开端口
在设置集群时,我们创建了一个外部互联网 IP 并将其附加到 Kubernetes 主节点。 您可以从 Azure 仪表板中检查附加到 KubeMaster VM 的外部 IP 资源来获取此 IP。
当您单击此页面时,您将看到现有入站和出站规则的概述。
我们需要选择并单击 '入站
' 安全规则属性以添加我们的新规则。
一旦入站规则打开,选择 新建 按钮以添加规则。
您输入我们之前确定的新的外部端口,并选择 'VirtualNetwork
'。 您可能需要等待几分钟,但就是这样。 在浏览器窗口中打开我们之前文章中讨论的 KubeMaster 公共 IP,您应该会看到这些服务!
历史
- 2017 年 12 月 31 日:版本 1