このチュートリアルでは、ローカル共有エッジ ボリュームを構成する方法について説明します。 このボリュームタイプは、Kubernetesクラスターにローカルな複数回読み書き可能なストレージを提供します。 この共有ストレージの種類は、クラウド インフラストラクチャに依存しないため、スクラッチ領域、一時的なストレージ、およびクラウドの宛先に適さないローカルで永続的なデータに最適です。 また、エッジで活発に作業、変更、または処理されるデータの保存先にも適しています。
このチュートリアルでは、次のタスクについて説明します。
- ローカル共有エッジ ボリュームの PVC を作成する
- デプロイの例を作成する
- ポッドに接続する
- サンプル ファイルを書き込む
[前提条件]
- このチュートリアルでは、Arc 対応 Kubernetes クラスターが既にあることを前提としています。 既存の Kubernetes クラスターを Azure Arc に接続するには、「 既存の Kubernetes クラスターを Azure Arc に接続する」を参照してください。
- Azure Container Storage 拡張機能が既にインストールされている必要があります。 インストールしていない場合は、「 Edge ボリュームのインストール」を参照してください。
ローカル共有エッジ ボリュームの PVC を作成する
このセクションでは、ローカル共有ボリュームの永続ボリューム要求 (PVC) を作成します。 このボリュームにプロビジョニングする領域の量を指定します。
次の内容を含む localSharedPVC.yaml という名前のファイルを作成します。 永続ボリューム要求の名前で metadata.name の値を変更します。 次に、8 行目で、使用する目的のポッドに一致する名前空間を指定します。
metadata.name値は、次の手順でdeploymentExample.yamlの最後の行で参照されます。
spec.resources.requests.storage パラメーターは、永続ボリュームのサイズを決定します。 この例では 2 GB ですが、ニーズに合わせて変更できます。
注
使用できるのは小文字とダッシュだけです。 詳細については、Kubernetes オブジェクトの名前付けに関するドキュメントを参照してください。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
### Create a name for your PVC ###
name: <create-a-pvc-name-here>
### Use a namespace that matches your intended consuming pod, or "default" ###
namespace: <intended-consuming-pod-or-default-here>
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2Gi
storageClassName: unbacked-sc
次に、次のコマンドを実行して YAML ファイルを適用し、PVC を作成します。
kubectl apply -f "localSharedPVC.yaml"
デプロイの例を作成するか、独自のデプロイを使用する
デプロイするアプリケーションが既にある場合は、ここで使用できます。 わかりやすくするために、ここではデプロイの例を示します。 サンプル構成を使用してデプロイを作成するには、次の内容を含む deploymentExample.yaml という名前のファイルを作成します。
containers.nameとvolumes.persistentVolumeClaim.claimNameの値を追加します。
spec.replicas パラメーターは、作成するレプリカ ポッドの数を決定します。 この例では 2 ですが、ニーズに合わせて変更できます。
注
使用できるのは小文字とダッシュだけです。 詳細については、Kubernetes オブジェクトの名前付けに関するドキュメントを参照してください。
apiVersion: apps/v1
kind: Deployment
metadata:
name: localsharededgevol-deployment ### This will need to be unique for every volume you choose to create
spec:
replicas: 2
selector:
matchLabels:
name: wyvern-testclientdeployment
template:
metadata:
name: wyvern-testclientdeployment
labels:
name: wyvern-testclientdeployment
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- wyvern-testclientdeployment
topologyKey: kubernetes.io/hostname
containers:
### Specify the container in which to launch the busy box. ###
- name: <create-a-container-name-here>
image: 'mcr.microsoft.com/mirror/docker/library/busybox:1.35'
command:
- "/bin/sh"
- "-c"
- "dd if=/dev/urandom of=/data/acsalocalsharedtestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done"
volumeMounts:
### This name must match the following volumes::name attribute ###
- name: wyvern-volume
### This mountPath is where the PVC will be attached to the pod's filesystem ###
mountPath: /data
volumes:
### User-defined name that is used to link the volumeMounts. This name must match volumeMounts::name as previously specified. ###
- name: wyvern-volume
persistentVolumeClaim:
### This claimName must refer to your PVC metadata::name from lsevPVC.yaml.
claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
次に、次のコマンドを実行して YAML ファイルを適用し、デプロイを作成します。
kubectl apply -f "deploymentExample.yaml"
ポッドに接続する
kubectl get podsを実行して、ポッドの名前を見つけます。 この名前は、次の手順で必要に応じてコピーします。
注
spec::replicas の が 2 と指定されているため、kubectl get pods を使用して 2 つのポッドが表示されます。 次の手順では、いずれかのポッド名を使用できます。
次のコマンドを実行し、POD_NAME_HERE を前の手順でコピーした値に置き換えます。
kubectl exec -it POD_NAME_HERE -- sh
/data で指定されているように、ディレクトリを マウント パスに変更します。
サンプル ファイルを書き込む
これでポッドに接続していて、マウント パス内にいるので、ここに書き込むファイルはすべてボリューム内に表示されます。
たとえば、file1.txtという名前 の ファイルを作成し、 echo "Hello World" > file1.txtを使用して書き込みます。
これで、書き込んだファイルがディレクトリ内にあることがわかります。
次のステップ
これらの手順を完了したら、Azure Monitor と Kubernetes Monitoring を使用してデプロイの監視を開始するか、Prometheus と Grafana を使用したサードパーティの監視を開始します。