vSphere IaaS control plane では、ReadWriteMany モードのパーシステント ボリュームがサポートされます。ReadWriteMany のサポートにより、1 つの TKG クラスタで実行されている複数のポッドまたはアプリケーションで 1 つのボリュームを同時にマウントできます。vSphere IaaS control plane は、ReadWriteMany パーシステント ボリュームに、vSAN ファイル共有によってバッキングされる CNS ファイル ボリュームを使用します。vSAN 共有を使用するには、vSAN 環境で vSAN ファイル サービスを設定し、スーパーバイザー でファイル ボリュームのサポートを有効にする必要があります。

ファイル ボリュームに関する考慮事項

vSphere IaaS control plane でパーシステント ボリュームに対するファイル ボリュームのサポートを有効にする場合は、次の点に注意してください。

  • ファイル ボリュームがサポートされるのは、Tanzu Kubernetes Grid クラスタ内のワークロードのみです。スーパーバイザー 名前空間内の vSphere ポッド や仮想マシン サービス仮想マシンなどのワークロードではサポートされません。
  • Kubernetes で RWX ボリュームを要求すると、vSAN ファイル サービスにより、要求されたサイズおよび適切な SPBM ポリシーを持つ NFS ベースのファイル共有が作成されます。RWX ボリュームごとに vSAN ファイル共有が 1 つ作成されます。VMware は、vSAN ファイル サービス クラスタごとに 100 個の共有をサポートします。つまり、使用できる RWX ボリュームは 100 個までです。
  • TKG クラスタでは、TKr バージョン 1.22 以降を使用します。

    詳細については、VMware Tanzu Kubernetes リリースのリリース ノートを参照してください。

  • vSphere IaaS control plane に対してファイル ボリュームのサポートを有効にすると、セキュリティが脆弱になる可能性がありますのでご注意ください。
    • ボリュームは暗号化なしでマウントされます。暗号化されていないデータは、データがネットワークを通過する間にアクセスされる可能性があります。
    • スーパーバイザー名前空間内でファイル共有アクセスを隔離するために、アクセス コントロール リスト (ACL) がファイル共有に対して使用されます。これにより、IP スプーフィングのリスクが発生する可能性があります。
  • ネットワークについては、次のガイドラインに従ってください。
    • vSphere IaaS control plane のネットワークに NSX を使用している場合は、スーパーバイザー 名前空間で NAT モードが有効になっていることを確認します。スーパーバイザー での vSphere 名前空間 の作成と構成を参照してください。
    • vSAN ファイル サービスがワークロード ネットワークからルーティング可能であることと、ワークロード ネットワークと vSAN ファイル サービスの IP アドレスの間に NAT が設定されていないことを確認します。
    • vSAN ファイル サービスと vSphere IaaS control plane に、共通の DNS サーバを使用します。
  • ファイル ボリュームのサポートを有効にし、後から無効にしても、クラスタにプロビジョニングした既存の ReadWriteMany パーシステント ボリュームは影響を受けず、使用可能なままになります。新しい ReadWriteMany パーシステント ボリュームを作成することはできなくなります。
vSAN ファイル サービスと TKG クラスタ

パーシステント ボリュームでファイル ボリュームのサポートを有効にするためのワークフロー

次のプロセスに従って、ファイル ボリュームのサポートを有効にします。

  1. vSphere 管理者が、vSAN ファイル サービスが構成された vSAN クラスタを設定します。
  2. vSphere 管理者は、スーパーバイザー でファイル ボリュームのサポートを有効にします。

    vSphere IaaS 制御プレーンのインストールと構成』ドキュメントのスーパーバイザーでのストレージ設定の変更を参照してください。

  3. DevOps エンジニアがパーシステント ボリュームをプロビジョニングし、PVC の accessModeReadWriteMany と設定します。

    同じ PVC で複数のポッドをプロビジョニングできます。

    例:
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: gold
      resources:
        requests:
            storage: 3Gi