在亚马逊 Elastic Kubernetes 服务上实现 5G 核心在裸机上的任何地方
客户希望采用简化的方法,在其本地客户管理的基础架构上在 Kubernetes 上启用电信工作负载。他们希望在本地、边缘和云环境中获得一致的 Kubernetes 管理和运营体验。他们必须通过断开连接的云模式支持来遵守当地监管和数据驻留要求。
在这篇文章中,我们将讨论客户如何利用
亚马逊云科技 上的 5G 核心
客户希望根据其用例和部署策略灵活地为5G Core提供多部署模式。亚马逊云科技 提供广泛的服务来支持和满足客户需求和各种部署模式。这包括基于云的部署,所有 5G Core NF 和管理系统均在 亚马逊云科技 区域运行。具有特定 NF 的电信公司混合云部署,例如部署在边缘或本地
此外,Amazon EKS-A 让我们为客户的本地基础设施带来相同的 Kubernetes 优势,并支持连接或断开连接的云部署模式。亚马逊 EKS-A 利用与在区域、本地区域和前哨基地使用的
图 1 亚马逊云科技 上的 5G 核心部署模型
亚马逊 EKS-A 上的 Open5gs
在上一
下图显示了在 COTS 服务器上的 Amazon EKS-A 上部署 5G 移动核心的示例。Amazon EKS-A 允许客户根据需要在连接和断开连接的云模式下部署和运行电信工作负载。在某些用例中,需要断开连接的云才能遵守监管和数据驻留要求。此外,联网云模式允许客户使用亚马逊 EKS 连接器将本地 Amazon EKS 集群连接到亚马逊 EKS 云控制台,以监控和观察 EKS 集群的运行状况。此外,它允许客户通过集中的单一管理平台来监控其所有 Amazon EKS 集群,无论这些集群是在 亚马逊云科技 基础设施上还是在本地客户管理的硬件上运行。
图 2 在 COTS 服务器上的亚马逊 EKS-A 上部署 Open5GS Mobile Core
必须先准备好一些资产,然后才能创建 EKS Anywhere 集群并部署 5G Core:
- COTS 裸机主机
-
- 两台主机,将用于具有一个控制平面节点和一个 Kubernetes 节点的 Kubernetes 集群。
- 每台裸机主机都需要两个连接:一个用于 IPMI/ILO,另一个用于安装 Kubernetes 的接口。Kubernetes 安装接口的 IP 将由 DHCP 提供,该接口的 MAC 地址以及使用小叮当硬件规范的 IPMI 凭据将提供给 Tinkerbell。
- 管理员机器
-
- 这是用户使用集群配置文件运行 “ eksctl anywhere ” 命令的计算机。
- 网络设置
-
- 管理计算机/主机应与所有其他裸机主机放在同一个第 2 层网络中,这是运行 DHCP 服务器所必需的。
获得管理节点的访问权限后,安装所需的 Amazon EKS-A 软件包来配置 Amazon EKS-A 集群并验证集群。请参阅并按照本
验证集群设置正确后,您可以使用以下步骤部署 Open5GS 5G 核心容器网络功能 (CNF):
- 通过从管理服务器运行以下命令来启用本地存储,并验证其是否已正确启用:
% 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
- 运行以下命令为 Open5GS 5G Core CNF 添加 helm 存储库:
% helm repo 添加 openverso https://gradiant.github.io/openverso-charts/
- 通过运行以下命令安装 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
- 该过程大约需要 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
- 启用 Web 用户界面 (UI) 服务的节点端口。
- 通过运行以下命令获取服务名称:
% kubectl get svc -n open5gs | grep web
open5gs-1666622545-webui ClusterIP 10.101.10.80 <none> 3000/TCP 2m34s
- 编辑服务以启用 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 */
- 使用以下命令验证服务是否已使用 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>
- 要访问该 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
- 上面突出显示的 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 的完整文档。