Alibaba Cloud Container Service の Kubernetes クラスターで、Alibaba Cloud OSS ボリュームを使用できます。

具体的には、静的 OSS ボリュームのみ使用できます。 動的 OSS ボリュームはサポートされません。 静的 OSS ボリュームを以下の 2 つの方法のどちらかにより使用できます。

  • ボリュームを通じた OSS バケットの使用
  • PV (Persistent Volume) および PVC (Persistent Volume Claim) を通じた OSS バケットの使用

前提条件

OSS コンソールでバケットの作成が必要です。

OSS パラメーター設定

  • OSS: OSS は共有ストレージで、同時に複数のポッドにストレージサービスを提供できます。
  • bucket: バケットのみ Kubernetes クラスターにマウントされます。 バケット内のサブディレクトリ、またはファイルは、Kubernetes クラスターにマウントされません。
  • url: OSS エンドポイントを指定します。OSS バケットをクラスターにマウントする際に使用されるドメイン名です。
  • akId: お使いの Access Key ID を入力します。
  • akSecret: お使いの Access Key シークレットを入力します。
  • otherOpts: その他のパラメーターを -o *** -o *** の形式でカスタマイズします。

注意

  • Kubernetes クラスターが 2018 年 2 月 6 日より前に作成されている場合、ボリュームの使用前に「プラグインのインストール」をご参照ください。 OSS ボリュームの使用前に、まずシークレットを作成し、FlexVolume サービスのデプロイ時に Access Key 情報をシークレットに入力する必要があります。

  • 以前のバージョンの FlexVolume コンポーネントを使用する場合は、最新バージョンにアップグレードすることを推奨します。
    Kubernetes クラスターをアップグレードするか、kubelet を再起動すると、以前のバージョンの FlexVolume コンポーネントによってマウントされた OSS ボリュームが原因で、OSSFS ドライバーが再起動します。 このイベントによって発生する例外を解決するには、OSS ボリュームを使用したポッドを再作成して、OSS ボリュームをクラスターに再度マウントする必要があります。 ただし、FlexVolume コンポーネントを最新バージョンにアップグレードすることで、この問題をより簡単に解決できます。

静的 OSS ボリュームの使用

ボリュームを通じた OSS バケットの使用

oss-deploy.yaml ファイルを使用し、ポッドを作成します。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-oss-deploy
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-flexvolume-oss
        image: nginx
        volumeMounts:
          - name: "oss1"
            mountPath: "/data"
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - cd /data
          initialDelaySeconds: 30
          periodSeconds: 30
      volumes:
        - name: "oss1"
          flexVolume:
            driver: "alicloud/oss"
            options:
              bucket: "docker"
              url: "oss-cn-hangzhou.aliyuncs.com"
              akId: ***
              akSecret: ***
              otherOpts: "-o max_stat_cache_size=0 -o allow_other"

PV および PVC の使用

手順 1: PV の作成

YAML ファイルまたは Container Service コンソールにより PV を作成します。

YAML ファイルを使用した PV の作成

oss-pv.yaml ファイルを使用し、以下のように PV を作成します。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-oss
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  storageClassName: oss
  flexVolume:
    driver: "alicloud/oss"
    options:
      bucket: "docker"
      url: "oss-cn-hangzhou.aliyuncs.com"
      akId: ***
      akSecret: ***
      otherOpts: "-o max_stat_cache_size=0 -o allow_other"

Container Service コンソールでの OSS ボリュームの作成

  1. Container Service コンソール にログインします。
  2. Container Service-Kubernetes の左側のナビゲーションウインドウで、 [クラスター] > [ボリューム] を選択します。
  3. [ボリューム] ページで、目的のクラスターを選択し、[作成] をクリックします。
  4. 表示されたダイアログボックスで、ボリュームパラメーターを設定します。
    • PV タイプ: この例では、OSS が選択されます。
    • ボリューム名: ボリューム名をカスタマイズします。 ボリューム名は、クラスター内で固有である必要があります。 この例では、"pv-oss" がボリューム名として設定されます。
    • 容量: ボリューム容量を設定します。
    • アクセスモード: デフォルトでは、 "ReadWriteMany" に設定されています。
    • AccessKey ID および AccessKey シークレット: これらの 2 つパラメーターを使用して、OSS のアクセスに使用する Access Key を指定します。
    • オプションのパラメータ: OSS タイプのボリュームに対してカスタマイズされたパラメータを -o *** -o *** の形式で入力します。
    • バケット ID: OSS バケット名を選択します。 [バケット選択] をクリックします。 表示されたダイアログボックスで、対象となるバケットを選択し、[選択] をクリックします。
    • エンドポイント: 選択したバケットとクラスター ECS インスタンスが異なるリージョンにある場合、[インターネット] を選択する必要があります。 同一のリージョンにある場合は、お使いのクラスターネットワークタイプに応じて選択します。 お使いのクラスターが VPC を使用している場合、[VPC] を選択する必要があります。お使いのクラスターがクラシックネットワークを使用している場合、[イントラネット] を選択する必要があります。
    • タグ: ボリュームにタグを追加します。
  5. [作成] をクリックします。

手順 2: PVC の作成

oss-pvc.yaml ファイルを使用し、以下のように PVC を作成します。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-oss
spec:
  storageClassName: oss
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

手順 3: ポッドの作成

oss-pod.yaml ファイルを使用してポッドを作成します。

apiVersion: v1
kind: Pod
metadata:
  name: "flexvolume-oss-example"
spec:
  containers:
    - name: "nginx"
      image: "nginx"
      volumeMounts:
          - name: pvc-oss
            mountPath: "/data"
      livenessProbe:
        exec:
          command:
          - sh
          - -c
          - cd /data
        initialDelaySeconds: 30
        periodSeconds: 30
  volumes:
  - name: pvc-oss
    persistentVolumeClaim:
        claimName: pvc-oss