17.3. AWS Local Zones または Wavelength Zones でのユーザーワークロードの作成


Amazon Web Service (AWS) の Local Zones または Wavelength Zone インフラストラクチャーを作成し、クラスターをデプロイした後、エッジコンピュートノードを使用して Local Zones または Wavelength Zones のサブネットにユーザーワークロードを作成できます。

インストールプログラムを使用してクラスターを作成すると、インストールプログラムは各エッジコンピュートノードに NoSchedule taint effect を自動的に指定します。これは、Pod が taint に対して指定された許容範囲に一致しない場合、スケジューラーは新しい Pod またはデプロイメントをノードに追加しないことを意味します。taint を変更することで、Local Zones または Wavelength Zones の各サブネットにノードがワークロードを作成する方法をより適切に制御できます。

インストールプログラムは、node-role.kubernetes.io/edge ラベルと node-role.kubernetes.io/worker ラベルを含むコンピュートマシンセットのマニフェストファイルを作成します。これらのラベルは、Local Zones または Wavelength Zones のサブネット内にある各エッジコンピュートノードに適用されます。

注記

この手順の例は、Local Zones インフラストラクチャーを対象としています。Wavelength Zone インフラストラクチャーを使用している場合は、Wavelength Zone インフラストラクチャーでサポートされている機能に合わせて例を変更してください。

前提条件

  • OpenShift CLI (oc) にアクセスできる。
  • Local Zones または Wavelength Zones のサブネットが定義された Virtual Private Cloud (VPC) にクラスターをデプロイしている。
  • Local Zones または Wavelength Zones のサブネット上のエッジコンピュートノードのコンピュートマシンセットが、node-role.kubernetes.io/edge の taint を指定していることを確認している。

手順

  1. Local Zones のサブネットで動作するエッジコンピュートノードにデプロイするサンプルアプリケーションの deployment リソース YAML ファイルを作成します。エッジコンピュートノードの taint に合った正しい toleration を指定していることを確認してください。

    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 用の namespace を定義します。例: local-zone-app-nyc-1a
    5
    zone-group: ゾーンが属するグループを定義します。たとえば、us-east-1-iah-1
    6
    nodeSelector: 指定のラベルに一致するエッジコンピュートノードをターゲットとします。
    7
    tolerations: Local Zone ノードの MachineSet マニフェストで定義された taints と一致する値を設定します。
  2. ノードの service リソース YAML ファイルを作成します。このリソースは、ターゲットのエッジコンピュートノードから Local Zone ネットワーク内で実行されるサービスに Pod を公開します。

    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>

    1
    kind: service リソースを定義します。
    2
    selector: マネージド Pod に適用されるラベルタイプを指定します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.