このトピックでは、シークレットを使用して静的にプロビジョニングされた Object Storage Service (OSS) ボリュームをマウントする方法について説明します。
使用上の注意
securityContext.fsgroup パラメーターがアプリケーションテンプレートで構成されている場合、kubelet はボリュームがマウントされた後に chmod
または chown
操作を実行します。 これにより、マウント時間が長くなります。
securityContext.fsgroup パラメーターが構成されている場合のマウントプロセスの高速化方法の詳細については、「OSS ボリュームのマウントに時間がかかるのはなぜですか?」をご参照ください。
例
PV を作成します。
Container Service for Kubernetes (ACK) コンソールまたは kubectl を使用して永続ボリューム (PV) を作成できます。
kubectl
PV を作成するときに、Alibaba Cloud アカウントの AccessKey ペアを格納するシークレットを参照できます。
次のコマンドを実行して、シークレットを作成します。
次のコマンドの
<your AccessKey ID>
と<your AccessKey Secret>
を、Alibaba Cloud アカウントの実際の AccessKey ID と AccessKey シークレットに置き換えます。 Alibaba Cloud アカウントの AccessKey ペアを取得するには、ACK コンソールに移動し、ポインターをアイコンの上に移動して、[AccessKey] をクリックします。
kubectl create secret generic osssecret --from-literal=akId='<your AccessKey ID>' --from-literal=akSecret='<your AccessKey Secret>' --type=alicloud/oss -n default
osssecret
: シークレットの名前。 カスタム名を指定できます。akId: AccessKey ID。
akSecret: AccessKey シークレット。
--type
: シークレットのタイプ。 この例では、値はalicloud/oss
に設定されています。 シークレットと、シークレットを使用するポッドは、同じ名前空間に属している必要があります。次の oss-pv.yaml ファイルを使用して PV を作成します。
apiVersion: v1 kind: PersistentVolume metadata: name: pv-oss spec: capacity: storage: 5Gi accessModes: - ReadWriteMany storageClassName: oss flexVolume: driver: "alicloud/oss" secretRef: name: "osssecret" # 前の手順で作成したシークレットの名前に置き換えます。 options: bucket: "docker" url: "oss-cn-hangzhou.aliyuncs.com" path: "/path" otherOpts: "-o max_stat_cache_size=0 -o allow_other"
ACK コンソール
ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。 左側のペインで、 を選択します。
[永続ボリューム] ページで、[作成] をクリックします。 PV の作成ダイアログボックスで、パラメーターを設定します。 パラメーターを設定したら、[作成] をクリックします。
パラメーター
説明
[PV タイプ]
この例では、OSS が選択されています。
[ボリューム名]
作成した PV の名前。 名前はクラスター内で一意である必要があります。 この例では、
pv-oss
が指定されています。[容量]
作成した PV の容量。
[アクセスモード]
デフォルト値: ReadWriteMany。
[アクセスの証明書]
OSS バケットにアクセスするために使用されるシークレットを選択します。
[既存のシークレットを選択]: 名前空間 と シークレット を選択します。
[シークレットを作成]: 名前空間、名前、AccessKey ID、および AccessKey シークレット を設定します。
[オプションパラメーター]
-o *** -o ***
形式でカスタムパラメーターを入力します。[バケット ID]
マウントする OSS バケットの名前。 [バケットの選択] をクリックします。 表示されるダイアログボックスで、マウントする OSS バケットを選択し、[選択] をクリックします。
[OSS パス]
マウントするバケットルートディレクトリからの相対パス。
[エンドポイント]
OSS バケットとクラスター内の Elastic Compute Service (ECS) インスタンスが異なるリージョンにデプロイされている場合は、[パブリックエンドポイント] を選択します。 OSS バケットがクラシックネットワークにデプロイされている場合は、[内部エンドポイント] を選択します。
永続ボリューム要求 (PVC) を作成します。
次の oss-pvc.yaml ファイルを使用して PVC を作成します。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-oss spec: storageClassName: oss accessModes: - ReadWriteMany resources: requests: storage: 5Gi
ポッドを作成します。
次の oss-deploy.yaml ファイルを使用してポッドを作成します。
apiVersion: apps/v1 kind: Deployment metadata: name: oss-static labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 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