在Azure上使用KubeSpray部署Kubernetes集群并暴露服务

在云计算环境中,容器化服务的开发往往需要将服务暴露到互联网上,无论是用于生产环境还是开发测试。本文将介绍如何在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/端口服务。

例如,可以按照以下方式映射:

  • 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。

当点击此页面时,将看到现有入站和出站规则的列表。

需要选择并点击“入站”安全规则属性以添加新规则。

一旦打开入站规则,选择“新建”按钮以添加规则。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485