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