18.3. 在 AWS 本地区中或 Wavelength 区域创建用户工作负载
创建 Amazon Web Service (AWS) Local Zones 或 Wavelength 区域基础架构并部署集群后,您可以使用边缘计算节点在 Local Zones 或 Wavelength 区域子网中创建用户工作负载。
当使用安装程序创建集群时,安装程序会自动为每个边缘计算节点指定 NoSchedule
的污点效果。这意味着,如果 pod 与污点的指定容限不匹配,调度程序不会向节点添加新 pod 或部署。您可以修改污点,以更好地控制节点如何在每个本地区域或 Wavelength 区域子网中创建工作负载。
安装程序创建计算机器集清单文件,该文件带有 node-role.kubernetes.io/edge
和 node-role.kubernetes.io/worker
标签,应用到位于 Local Zones 或 Wavelength Zones 子网中的每个边缘计算节点。
该流程中的示例用于本地区域基础架构。如果您使用 Wavelength 区域基础架构,请确保将示例适应此基础架构支持的内容。
先决条件
-
您可以访问 OpenShift CLI(
oc
)。 - 您在带有定义的 Local Zones 或 Wavelength 区域子网中的虚拟私有云 (VPC) 中部署了集群。
-
确保 Local Zones 或 Wavelength Zones 子网上边缘计算节点的计算机器集指定了
node-role.kubernetes.io/edge
的污点。
流程
为要在 Local Zones 子网中运行的边缘计算节点中部署的示例应用程序创建一个
deployment
资源 YAML 文件。确保指定与边缘计算节点污点匹配的正确容限。在 Local Zone 子网中运行的边缘计算节点配置的
deployment
资源示例kind: Namespace apiVersion: v1 metadata: name: <local_zone_application_namespace> --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: <pvc_name> namespace: <local_zone_application_namespace> spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: gp2-csi 1 volumeMode: Filesystem --- apiVersion: apps/v1 kind: Deployment 2 metadata: name: <local_zone_application> 3 namespace: <local_zone_application_namespace> 4 spec: selector: matchLabels: app: <local_zone_application> replicas: 1 template: metadata: labels: app: <local_zone_application> zone-group: ${ZONE_GROUP_NAME} 5 spec: securityContext: seccompProfile: type: RuntimeDefault nodeSelector: 6 machine.openshift.io/zone-group: ${ZONE_GROUP_NAME} tolerations: 7 - key: "node-role.kubernetes.io/edge" operator: "Equal" value: "" effect: "NoSchedule" containers: - image: openshift/origin-node command: - "/bin/socat" args: - TCP4-LISTEN:8080,reuseaddr,fork - EXEC:'/bin/bash -c \"printf \\\"HTTP/1.0 200 OK\r\n\r\n\\\"; sed -e \\\"/^\r/q\\\"\"' imagePullPolicy: Always name: echoserver ports: - containerPort: 8080 volumeMounts: - mountPath: "/mnt/storage" name: data volumes: - name: data persistentVolumeClaim: claimName: <pvc_name>
- 1
storageClassName
:对于 Local Zone 配置,您必须指定gp2-csi
。- 2
kind
:定义deployment
资源。- 3
name
:指定 Local Zone 应用程序的名称。例如,local-zone-demo-app-nyc-1
。- 4
namespace :
定义您要运行用户工作负载的 AWS Local Zone 的命名空间。例如:local-zone-app-nyc-1a
。- 5
zone-group
:定义区域所属的组。例如,us-east-1-iah-1
。- 6
nodeSelector
:目标与指定标签匹配的边缘计算节点。- 7
tolerations
:设置与 Local Zone 节点的MachineSet
清单上定义的污点
匹配的值。
为节点创建
service
资源 YAML 文件。此资源将来自目标边缘计算节点的 pod 公开给在 Local Zone 网络中运行的服务。在 Local Zone 子网中运行的边缘计算节点配置的
service
资源示例apiVersion: v1 kind: Service 1 metadata: name: <local_zone_application> namespace: <local_zone_application_namespace> spec: ports: - port: 80 targetPort: 8080 protocol: TCP type: NodePort selector: 2 app: <local_zone_application>