65.9K
CodeProject 正在变化。 阅读更多。
Home

将端口暴露给 Azure 上的 Kubernetes Pod

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2017 年 12 月 31 日

CPOL

2分钟阅读

viewsIcon

17764

在 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
© . All rights reserved.