이 페이지에서는 Google Distributed Cloud (GDC) 오프라인 어플라이언스 기기에서 컨테이너 워크로드의 영구 스토리지를 만들고 관리하는 방법을 설명합니다. 영구 스토리지는 워크로드 예약 위치와 관계없이 애플리케이션에 일관된 ID와 안정적인 호스트 이름을 제공합니다.
이 페이지는 조직의 애플리케이션 워크로드를 만드는 애플리케이션 운영자 그룹 내 개발자를 위한 페이지입니다.
시작하기 전에
사전 구성된 베어메탈 Kubernetes 클러스터에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
Kubernetes 클러스터 이름을 찾거나 플랫폼 관리자에게 클러스터 이름을 문의합니다.
Kubernetes 클러스터의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
Kubernetes 클러스터의 kubeconfig 경로를 사용하여 이 안내의 CLUSTER_KUBECONFIG를 바꿉니다.
영구 볼륨을 만드는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 프로젝트 네임스페이스에 네임스페이스 관리자 역할 (namespace-admin)을 부여해 달라고 요청하세요.
영구 볼륨 만들기
다음 안내에서는 GDC standard-rwoStorageClass를 사용하여 볼륨을 만드는 방법을 보여줍니다. GDC에서 사용할 수 있는 StorageClass 리소스에 관한 자세한 내용은 컨테이너용 영구 스토리지를 참고하세요.
PersistentVolumeClaim를 만들고 ReadWriteOnce 액세스 모드와 standard-rwo 스토리지 클래스로 구성합니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eGoogle Distributed Cloud (GDC) air-gapped appliance utilizes Kubernetes to provide persistent block and file storage for VM and container workloads through \u003ccode\u003ePersistentVolumeClaim\u003c/code\u003e objects.\u003c/p\u003e\n"],["\u003cp\u003ePersistent storage in GDC is dynamically provisioned on-demand using pre-installed \u003ccode\u003eStorageClass\u003c/code\u003e objects, such as \u003ccode\u003estandard-rwo\u003c/code\u003e for \u003ccode\u003eReadWriteOnce\u003c/code\u003e block storage with a 3 IOPS per GiB limit, and \u003ccode\u003esystem-performance-rwo\u003c/code\u003e which has a 30 IOPS per GiB limit.\u003c/p\u003e\n"],["\u003cp\u003eTo create a persistent volume, a \u003ccode\u003ePersistentVolumeClaim\u003c/code\u003e must be created with a specified access mode and storage class, and the corresponding \u003ccode\u003ePersistentVolume\u003c/code\u003e will be dynamically provisioned in the Kubernetes cluster.\u003c/p\u003e\n"],["\u003cp\u003eOnce a \u003ccode\u003ePersistentVolumeClaim\u003c/code\u003e is created, container workloads can be configured to use it by referencing the \u003ccode\u003eclaimName\u003c/code\u003e in the \u003ccode\u003ePod\u003c/code\u003e object's \u003ccode\u003evolumes\u003c/code\u003e section.\u003c/p\u003e\n"],["\u003cp\u003eThe capacity of a \u003ccode\u003ePersistentVolumeClaim\u003c/code\u003e can be expanded by updating the \u003ccode\u003espec.resources.storage\u003c/code\u003e field in the \u003ccode\u003ePersistentVolumeClaim\u003c/code\u003e object, with a maximum supported volume size of 14.5 Ti.\u003c/p\u003e\n"]]],[],null,["# Access persistent storage\n\nThis page explains how to create and manage persistent storage for container\nworkloads in your Google Distributed Cloud (GDC) air-gapped appliance device. Persistent\nstorage provides your application with consistent identities and stable\nhostnames, regardless of where its workloads are scheduled.\n\nThis page is for developers within the application operator group, who are\nresponsible for creating application workloads for their organization.\n\nBefore you begin\n----------------\n\nTo run commands against the pre-configured bare metal Kubernetes cluster, make sure you have the\nfollowing resources:\n\n1. Locate the Kubernetes cluster name, or ask your Platform\n Administrator what the cluster name is.\n\n2. [Sign in and generate](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/iam/sign-in#kubernetes-cluster-kubeconfig) the\n kubeconfig file for the Kubernetes cluster if you don't have one.\n\n3. Use the kubeconfig path of the Kubernetes cluster to replace\n \u003cvar translate=\"no\"\u003eCLUSTER_KUBECONFIG\u003c/var\u003e in these instructions.\n\nTo get the required permissions to create a persistent volume, ask your\nOrganization IAM Admin to grant you the Namespace Admin role (`namespace-admin`)\nin your project namespace.\n\nCreate a persistent volume\n--------------------------\n\nThe following instructions show how to create a volume using the\nGDC `standard-rwo` `StorageClass`. For more information\non the available `StorageClass` resources in GDC, see\n[Persistent storage for containers](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/containers/containers-intro#persistent-storage).\n\n1. Create a `PersistentVolumeClaim` and configure it with a\n `ReadWriteOnce` access mode and a `standard-rwo` storage class:\n\n kubectl --kubeconfig \u003cvar translate=\"no\"\u003eCLUSTER_KUBECONFIG\u003c/var\u003e \\\n --namespace \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e apply -f - \u003c\u003cEOF\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n name: \u003cvar translate=\"no\"\u003ePVC_NAME\u003c/var\u003e\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: 10Gi\n storageClassName: standard-rwo\n EOF\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eCLUSTER_KUBECONFIG\u003c/var\u003e: the kubeconfig\n file for the Kubernetes cluster.\n\n - \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e: the project namespace in which to\n create the PVC.\n\n - \u003cvar translate=\"no\"\u003ePVC_NAME\u003c/var\u003e: the name of the `PersistentVolumeClaim`\n object.\n\n2. The `PersistentVolume` (PV) objects are dynamically provisioned. Check the\n status of the new PVs in your Kubernetes cluster:\n\n kubectl get pv --kubeconfig \u003cvar translate=\"no\"\u003eCLUSTER_KUBECONFIG\u003c/var\u003e\n\n The output is similar to the following: \n\n NAME CAPACITY ACCESS MODES STATUS CLAIM STORAGECLASS AGE\n pvc-uuidd 10Gi RWO Bound pvc-name standard-rwo 60s\n\n3. Configure your container workloads to use the PVC. The\n following is an example `nginx` pod that uses a `standard-rwo` PVC:\n\n kubectl --kubeconfig \u003cvar translate=\"no\"\u003eCLUSTER_KUBECONFIG\u003c/var\u003e \\\n --namespace \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e apply -f - \u003c\u003cEOF\n apiVersion: apps/v1\n kind: Pod\n metadata:\n name: web-server-deployment\n labels:\n app: nginx\n spec:\n containers:\n - name: nginx\n image: nginx\n volumeMounts:\n - mountPath: /usr/share/nginx/html\n name: data\n volumes:\n - name: data\n persistentVolumeClaim:\n claimName: \u003cvar translate=\"no\"\u003ePVC_NAME\u003c/var\u003e\n EOF\n\n Replace \u003cvar translate=\"no\"\u003ePVC_NAME\u003c/var\u003e with the PVC you created.\n\nExpand volume capacity\n----------------------\n\nTo increase the capacity of a `PersistentVolumeClaim` object, update the\n`spec.resources.storage` field to the new capacity. The maximum supported\nvolume size is 14.5 Ti.\n\n1. Update the volume to a larger size in the manifest file of the\n `PersistentVolumeClaim` object:\n\n kubectl --kubeconfig \u003cvar translate=\"no\"\u003eCLUSTER_KUBECONFIG\u003c/var\u003e \\\n --namespace \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e apply -f - \u003c\u003cEOF\n apiVersion: v1\n kind: PersistentVolumeClaim\n metadata:\n name: \u003cvar translate=\"no\"\u003ePVC_NAME\u003c/var\u003e\n spec:\n accessModes:\n - ReadWriteOnce\n resources:\n requests:\n storage: \u003cvar translate=\"no\"\u003eVOLUME_STORAGE_SIZE\u003c/var\u003e\n EOF\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eCLUSTER_KUBECONFIG\u003c/var\u003e: the kubeconfig\n file for the Kubernetes cluster.\n\n - \u003cvar translate=\"no\"\u003eNAMESPACE\u003c/var\u003e: the project namespace in which the PVC\n resource exists.\n\n - \u003cvar translate=\"no\"\u003ePVC_NAME\u003c/var\u003e: the name of the PVC for which you are\n increasing the storage size.\n\n - \u003cvar translate=\"no\"\u003eVOLUME_SNAPSHOT_SIZE\u003c/var\u003e: the storage size amount to\n increase, such as `50Gi`.\n\n2. Check the status of the updated PVs in your cluster:\n\n kubectl get pv --kubeconfig \u003cvar translate=\"no\"\u003eCLUSTER_KUBECONFIG\u003c/var\u003e\n\nWhat's next\n-----------\n\n- [Container workloads overview](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/containers/containers-intro)\n- [Create stateful workloads](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/containers/create-stateful-workloads)\n- [Create volume snapshots](/distributed-cloud/hosted/docs/latest/appliance/application/ao-user/containers/create-volume-snapshots)"]]