在亚马逊 Elastic Kubernetes 服务上实现 5G 核心在裸机上的任何地方

客户希望采用简化的方法,在其本地客户管理的基础架构上在 Kubernetes 上启用电信工作负载。他们希望在本地、边缘和云环境中获得一致的 Kubernetes 管理和运营体验。他们必须通过断开连接的云模式支持来遵守当地监管和数据驻留要求。

在这篇文章中,我们将讨论客户如何利用 亚马逊 Elastic Kubernetes Anywhere 服务 (Amazon EKS-A) 在其客户管理的裸机本地基础设施上自动部署 5G Core。通过将 Open5gS 核心网络函数 (NF) 的云原生功能与裸机上的 Amazon EKS-A 相结合,我们可以通过几个简单的步骤和几分钟来演示 Open5gS Core 的部署。此外,我们还演示了客户如何集成其他 亚马逊云科技 服务,例如 亚马逊 EKS Connec tor 、A mazon CloudWatch 容器洞察 亚马逊 CloudWatch,以实现集中可见性并监控整个网络的运行状况。Amazon EKS-A 还允许客户启用云连接模式和离线云模式。这为遵守当地监管和数据驻留要求提供了灵活性。

亚马逊云科技 上的 5G 核心

客户希望根据其用例和部署策略灵活地为5G Core提供多部署模式。亚马逊云科技 提供广泛的服务来支持和满足客户需求和各种部署模式。这包括基于云的部署,所有 5G Core NF 和管理系统均在 亚马逊云科技 区域运行。具有特定 NF 的电信公司混合云部署,例如部署在边缘或本地 亚马逊云科技 Outpos t 上的用户平面 ,以及在某个地区运行的其他 NF 和管理。有一个在亚马逊云科技 Outpost上部署了5G核心的本地部署,还有一个在Snow系列上运行5G核心的离线云部署。Amazon EKS-A 的推出使客户能够支持在客户管理的本地基础设施上部署 5G Core NF。

此外,Amazon EKS-A 让我们为客户的本地基础设施带来相同的 Kubernetes 优势,并支持连接或断开连接的云部署模式。亚马逊 EKS-A 利用与在区域、本地区域和前哨基地使用的 亚马逊弹性 Kubernetes 服务(亚马逊 EKS) 相同 的 Kubernetes 发行版。除了提供稳定、安全的 Kubernetes 发行版外,Amazon EKS-A 还捆绑了其他组件,以减轻需要强大解决方案来支持其本地容器工作负载的客户的运营负担。下图显示了这些部署模型的摘要。

Figure 1 5G Core deployment models on AWS

图 1 亚马逊云科技 上的 5G 核心部署模型

亚马逊 EKS-A 上的 Open5gs

在上一 篇文章 中 ,我们展示了使用 亚马逊云科技 的好处,以及在某个地区的 亚马逊云科技 EKS 上部署 Open5Gs Mobile Core 的实施步骤。在这篇文章中,我们通过使用亚马逊 EKS-A 在客户管理的本地商用现货 (COTS) 硬件上实施 Open5Gs Mobile Core 来扩展这些优势。

下图显示了在 COTS 服务器上的 Amazon EKS-A 上部署 5G 移动核心的示例。Amazon EKS-A 允许客户根据需要在连接和断开连接的云模式下部署和运行电信工作负载。在某些用例中,需要断开连接的云才能遵守监管和数据驻留要求。此外,联网云模式允许客户使用亚马逊 EKS 连接器将本地 Amazon EKS 集群连接到亚马逊 EKS 云控制台,以监控和观察 EKS 集群的运行状况。此外,它允许客户通过集中的单一管理平台来监控其所有 Amazon EKS 集群,无论这些集群是在 亚马逊云科技 基础设施上还是在本地客户管理的硬件上运行。

Figure 2 Open5GS Mobile Core deployment on Amazon EKS-A on COTS server

图 2 在 COTS 服务器上的亚马逊 EKS-A 上部署 Open5GS Mobile Core

必须先准备好一些资产,然后才能创建 EKS Anywhere 集群并部署 5G Core:

  1. COTS 裸机主机
    • 两台主机,将用于具有一个控制平面节点和一个 Kubernetes 节点的 Kubernetes 集群。
    • 每台裸机主机都需要两个连接:一个用于 IPMI/ILO,另一个用于安装 Kubernetes 的接口。Kubernetes 安装接口的 IP 将由 DHCP 提供,该接口的 MAC 地址以及使用小叮当硬件规范的 IPMI 凭据将提供给 Tinkerbell。
  1. 管理员机器
    • 这是用户使用集群配置文件运行 “ eksctl anywhere ” 命令的计算机。
  1. 网络设置
    • 管理计算机/主机应与所有其他裸机主机放在同一个第 2 层网络中,这是运行 DHCP 服务器所必需的。

admin node

获得管理节点的访问权限后,安装所需的 Amazon EKS-A 软件包来配置 Amazon EKS-A 集群并验证集群。请参阅并按照本 中提供的步骤进行操作 。在硬件方面,我们使用 HPE ProLiant DL360 和 Ubuntu V20.04.5 操作系统来配置亚马逊 EKS-A 集群。您可以选择任何已发布的 经过验证的硬件

验证集群设置正确后,您可以使用以下步骤部署 Open5GS 5G 核心容器网络功能 (CNF):

  1. 通过从管理服务器运行以下命令来启用本地存储,并验证其是否已正确启用:
% kubectl apply -f 
         
         
 
         
         
         
         
           https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.22/deploy/local-path-storage.yaml 
         

% kubectl patch storageclass local-path -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

Validate the SC creation by running below command
% kubectl get sc
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default) rancher.io/local-path Delete         
 WaitForFirstConsumer   false                  23s
  1. 运行以下命令为 Open5GS 5G Core CNF 添加 helm 存储库:

% helm repo 添加 openverso https://gradiant.github.io/openverso-charts/

  1. 通过运行以下命令安装 Open5gs 5G Core CNF:
% kubectl create ns open5gs

% helm install -n open5gs openverso/open5gs --generate-name
NAME: open5gs-1666622545
LAST DEPLOYED: Mon Oct 24 14:42:26 2022
NAMESPACE: open5gs
STATUS: deployed
REVISION: 1
TEST SUITE: None
  1. 该过程大约需要 5 分钟,你可以通过运行以下命令来检查 Open5GS 5G Core CNF 的容器状态。确保所有 Pod 都在运行并处于 1/1 就绪状态,如下所示:
% kubectl get pods -n open5gs 
NAME                                           READY   STATUS    RESTARTS       AGE
open5gs-1666622545-amf-6445c8d5db-z6hcz        1/1     Running   0              2m10s
open5gs-1666622545-ausf-764c5699cc-qcz84       1/1     Running   0              2m10s
open5gs-1666622545-bsf-6b5ff44c85-j5jfp        1/1     Running   0              2m10s
open5gs-1666622545-hss-bd8866fc4-sx8kz         1/1     Running   2 (102s ago)   2m9s
open5gs-1666622545-mme-58f7dfc6f9-2vb8x        1/1     Running   0              2m10s
open5gs-1666622545-mongodb-5df45d8985-xd99x    1/1     Running   0              2m9s
open5gs-1666622545-nrf-657f8fb9fd-mw8hz        1/1     Running   0              2m8s
open5gs-1666622545-nssf-5bc46b757c-qvvln       1/1     Running   0              2m9s
open5gs-1666622545-pcf-77f55cb8f8-8v2jt        1/1     Running   2 (101s ago)   2m9s
open5gs-1666622545-pcrf-74cf7b59-hmzjk         1/1     Running   1 (99s ago)    2m8s
open5gs-1666622545-populate-57785786dd-6xp4b   1/1     Running   0              2m10s
open5gs-1666622545-sgwc-846ddc7544-nl8xb       1/1     Running   0              2m9s
open5gs-1666622545-sgwu-5598785747-9n95m       1/1     Running   0              2m9s
open5gs-1666622545-smf-77d9c7846f-2sbfn        1/1     Running   0              2m9s
open5gs-1666622545-udm-7cfb7fdc99-4vr7n        1/1     Running   0              2m8s
open5gs-1666622545-udr-7f58b6774b-wfcc8        1/1     Running   1 (106s ago)   2m8s
open5gs-1666622545-upf-76f55f5988-4hh8f        1/1     Running   0              2m8s
open5gs-1666622545-webui-59c65fbbf5-gn8dc      1/1     Running   0              2m9s
  1. 启用 Web 用户界面 (UI) 服务的节点端口。
  1. 通过运行以下命令获取服务名称:
% kubectl get svc -n open5gs | grep web
open5gs-1666622545-webui         ClusterIP   10.101.10.80     <none>        3000/TCP     2m34s
  1. 编辑服务以启用 NodePort:
% kubectl edit svc -n open5gs open5gs-1666622545-webui
ports:
  - name: http
    port: 3000
    NodePort: 32500	/* Add this line after port:3000*/
    protocol: TCP
    targetPort: http
  publishNotReadyAddresses: true
  selector:
    app.kubernetes.io/instance: open5gs-1666622545
    app.kubernetes.io/name: webui
  sessionAffinity: None
  type: ClusterIP /* Change the type from ClusterIP to NodePort. After editing the line should show type: NodePort */	
  1. 使用以下命令验证服务是否已使用 NodePort 更新:
  % kubectl describe svc -n open5gs open5gs-1666622545-webui
Name:                     open5gs-1666622545-webui
Namespace:                open5gs
Labels:                   app.kubernetes.io/instance=open5gs-1666622545
                          app.kubernetes.io/managed-by=Helm
                          app.kubernetes.io/name=webui
                          helm.sh/chart=webui-2.0.3
Annotations:              meta.helm.sh/release-name: open5gs-1666622545
                          meta.helm.sh/release-namespace: open5gs
Selector:                 app.kubernetes.io/instance=open5gs-1666622545,app.kubernetes.io/name=webui
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.101.10.80
IPs:                      10.101.10.80
Port:                     http  3000/TCP
TargetPort:               http/TCP
NodePort:                 http  32500/TCP
Endpoints:                192.168.0.33:3000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
  1. 要访问该 URL,必须首先使用以下命令找到节点 IP 地址。此 IP 地址是一个可配置 IP,是在部署 EKS-A 期间使用上述步骤 1 创建的:
% kubectl get nodes -o wide
NAME             STATUS   ROLES                  AGE   VERSION                INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
bm-master   Ready    control-plane,master   10d   v1.23.12-eks-a64d4ad   10.80.30.26   <none>        Ubuntu 20.04.5 LTS   5.4.0-128-generic   containerd://1.5.9
  1. 上面突出显示的 IP 是主机 IP。打开任何浏览器并输入 IP 地址:端口 10.80.30。26:32500 即可访问 Open5GS GUI。对于用户名,你可以使用管理员,密码是 1423。

结论

Amazon EKS-A 为我们的客户提供灵活的部署选项。它利用客户在云中熟悉的相同的 亚马逊云科技 服务和工具作为其本地托管硬件。在这篇文章中,我们展示了如何通过在COTS硬件上的Amazon EKS-A上部署CNF来将这些优势扩展到网络域。通过在 Amazon EKS-A 上部署 5G Core CNF,客户现在可以利用现有的硬件投资,实现延迟敏感型网络部署,并遵守各种规律和数据驻留要求。

我们很高兴看到您如何使用这项新功能,也很高兴您尝试直接通过 EKS Anywhere GitHub 存储库或通过您的客户代表向我们提供反馈。如果你想尝试其他供应器,请在此处查看 EKS Anywhere 的完整文档。

Yousef Hawwar

Yousef Hawwar

Yousef Hawwar 是亚马逊网络服务的首席顾问兼全球5G行业专家。他通过创新地使用 亚马逊云科技 服务,帮助通信服务提供商和行业合作伙伴设计、构建和管理基于云的端到端 5G 移动网络。Yousef 在电信行业拥有 20 多年的专业知识,涉及 3G、4G 和 5G 的商业部署,与全球多家运营商合作。

Anil Maheshwari

Anil Maheshwari

Anil Maheshwari 是亚马逊网络服务专业服务团队的高级云基础设施架构师,也是一位技术爱好者,致力于开发多种云服务,为电信客户提供在 亚马逊云科技 云上构建和运行 5G 的服务。他在领导云设计/交付/运营项目中担任过多个职务,拥有20多年的经验。他曾在汽车、生命科学、医疗保健和电信等多个业务领域工作。

Ramu Akula

Ramu Akula

Ramu Akula 肩负着许多责任。他担任 亚马逊云科技 5G 和电信网络转型首席专家,领导创建包罗万象的 5G 解决方案、设计网络架构并推动 亚马逊云科技 环境中的自动化。此外,他在设计和实施自动化框架方面发挥着关键作用。该框架便于利用 亚马逊云科技 服务和 亚马逊云科技 EKS-Anywhere 在戴尔、惠普等商用现成 (COTS) 硬件上托管 O-RAN 工作负载 (CU/DU)。

Gokul Chandra

Gokul Chandra

Gokul 是亚马逊网络服务的专业解决方案架构师。他帮助客户使用容器进行现代化改造,帮助他们使用 亚马逊云科技 容器服务来设计可扩展和安全的应用程序。他对云原生空间和 Kubernetes 充满热情。Gokul 感兴趣的领域包括容器、微服务、公有云和私有云平台、电信原生云、边缘计算、混合和多云架构以及 NFV。你可以在 Medium @gokulchandrapr 和 Linkedin 中找到他 @gokulchandra。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。