All Products
Search
Document Center

Container Service for Kubernetes:Menggunakan Volume HostPath

Last Updated:Feb 12, 2026

Volume HostPath memasang file atau direktori dari sistem file node host secara langsung ke dalam pod. Hal ini memungkinkan pod untuk membaca dan menulis ke sistem file node tersebut. Gunakan HostPath untuk tugas-tugas seperti membaca log node, mengakses file konfigurasi tertentu, atau berbagi data di lingkungan pengembangan.

Cara Kerja

Alur kerja

Setelah pod dijadwalkan ke node target, kubelet pada node tersebut memasang volume HostPath sebelum kontainer dimulai. Kubelet memvalidasi dan menyiapkan jalur host (path) berdasarkan tipe pemasangan (type) yang didefinisikan dalam bidang hostPath.

  • DirectoryOrCreate: Jika path host yang ditentukan tidak ada, kubelet membuat direktori kosong dengan izin 0755. Pemilik dan kelompok direktori tersebut sesuai dengan kubelet.

  • Directory: path host yang ditentukan harus ada dan berupa direktori. Jika tidak, pod gagal dimulai.

  • FileOrCreate: Jika path host yang ditentukan tidak ada, kubelet membuat file kosong dengan izin 0644. Pemilik dan kelompok file tersebut sesuai dengan kubelet.

  • File: path host yang ditentukan harus ada dan berupa file. Jika tidak, pod gagal dimulai.

Setelah validasi berhasil, kubelet melakukan bind-mount terhadap path host ke dalam kontainer. Semua operasi baca dan tulis selanjutnya pada titik pemasangan dilakukan secara langsung pada sistem file host.

Penggunaan

  • Pasang HostPath langsung di dalam pod: Definisikan hostPath secara langsung dalam volumes pod. Metode ini sederhana tetapi sangat mengikat penyimpanan dengan aplikasi. Hindari penggunaannya untuk aplikasi produksi yang memerlukan pemeliharaan jangka panjang atau kemungkinan perubahan penyimpanan di masa depan.

  • Pasang HostPath menggunakan PersistentVolume (PV) dan PersistentVolumeClaim (PVC): Definisikan hostPath dalam PV terpisah. Pod kemudian dapat meminta penyimpanan tersebut melalui PVC. Pendekatan ini memisahkan penyimpanan dari aplikasi, sehingga Anda dapat mengelola penyimpanan dasar secara independen tanpa mengubah konfigurasi pod.

Lingkup

Fitur ini hanya mendukung node ECS. Fitur ini tidak mendukung node komputasi heterogen, seperti node GPU atau Node Lingjun, maupun layanan komputasi arsitektur tanpa server, seperti ECI atau ACS.

Opsi satu: Pasang HostPath langsung di dalam pod

  1. Buat file bernama pod-hostpath-direct.yaml.

    Contoh ini memasang direktori /data node ke direktori /test di dalam pod.
    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
    spec:
      containers:
      - image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
        name: test-container
        volumeMounts:
        - mountPath: /test
          name: test-volume
      volumes:
      - name: test-volume
        hostPath:
          # Tentukan jalur host
          path: /data
          # Tentukan tipe pemasangan
          type: DirectoryOrCreate
  2. Terapkan pod tersebut.

    kubectl apply -f pod-hostpath-direct.yaml
  3. Verifikasi pemasangan tersebut.

    Buat file di dalam pod, lalu periksa apakah file tersebut ada di node. Hal ini memastikan bahwa pemasangan berhasil.

    1. Buat file di dalam pod.

      Buat file test.txt di direktori /test pod, yaitu titik pemasangan.

      kubectl exec test-pod -- sh -c 'echo "This file was created from within the Pod." > /test/test.txt'
    2. Dapatkan nama node tempat pod tersebut berjalan.

      NODE_NAME=$(kubectl get pod test-pod -o jsonpath='{.spec.nodeName}')
      echo "Pod is running on node: $NODE_NAME"
    3. Verifikasi file tersebut di node.

      Untuk informasi lebih lanjut, lihat Log on to a node. Jalankan perintah ls /data untuk memeriksa apakah direktori /data berisi file yang baru saja Anda buat.

      Jika output mencakup file test.txt, maka volume HostPath telah berhasil dipasang.

Opsi dua: Pasang HostPath menggunakan PV dan PVC

  1. Buat file bernama pv-pvc-hostpath.yaml.

    Contoh ini membuat PV yang mengarah ke direktori /data host, PVC yang meminta penyimpanan tersebut, dan pod yang menggunakan PVC tersebut.

    # --- Definisi PersistentVolume ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: hostpath-pv
      labels:
        type: local
    spec:
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/data"
    ---
    # --- Definisi PersistentVolumeClaim ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: hostpath-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      # Gunakan selector untuk memastikan PVC terikat ke PV yang dibuat sebelumnya
      selector:
        matchLabels:
          type: local
    ---
    # --- Definisi Pod ---
    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod-pvc
    spec:
      containers:
        - name: test-container
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: storage
      volumes:
        - name: storage
          persistentVolumeClaim:
            # Referensi ke PVC yang didefinisikan sebelumnya
            claimName: hostpath-pvc
  2. Buat PV, PVC, dan pod tersebut.

    kubectl apply -f pv-pvc-hostpath.yaml
  3. Verifikasi pemasangan tersebut.

    Buat file di dalam pod, lalu periksa apakah file tersebut ada di node. Hal ini memastikan bahwa pemasangan berhasil.

    1. Buat file di dalam pod.

      Buat file test.txt di direktori /usr/share/nginx/html pod, yaitu titik pemasangan.

      kubectl exec test-pod-pvc -- sh -c 'echo "File from PV/PVC Pod." > /usr/share/nginx/html/test.txt'
    2. Dapatkan nama node tempat pod tersebut berjalan.

      NODE_NAME=$(kubectl get pod test-pod-pvc -o jsonpath='{.spec.nodeName}')
      echo "Pod is running on node: $NODE_NAME"
    3. Verifikasi file tersebut di node.

      Untuk informasi lebih lanjut, lihat Log on to a node. Jalankan perintah ls /data untuk memeriksa apakah direktori /data berisi file yang baru saja Anda buat.

      Jika output mencakup file test.txt, maka volume HostPath telah berhasil dipasang menggunakan PV dan PVC.

Menerapkan di Lingkungan Produksi

  • Tingkatkan isolasi keamanan

    • Pasang dalam mode read-only: Jika aplikasi Anda hanya perlu membaca data dari node, pasang volumenya dalam mode read-only (ReadOnlyMany). Hal ini mencegah perubahan tidak disengaja pada file host.

    • Ikuti prinsip hak istimewa minimal: Jangan memasang direktori root host (/) atau direktori sistem sensitif seperti /etc atau /var. Gunakan direktori khusus untuk HostPath sebagai gantinya.

  • Pantau sumber daya node

    • Pantau disk host: Kontainer yang menulis ke volume HostPath akan mengonsumsi ruang disk node. Terapkan pemantauan dan peringatan untuk partisi disk guna mencegah node gagal akibat kehabisan ruang disk.

    • Evaluasi dampak I/O: Operasi baca dan tulis yang sering pada volume HostPath akan mengonsumsi sumber daya I/O node. Hal ini dapat memengaruhi pod aplikasi lain atau bahkan stabilitas kubelet. Anda harus mengevaluasi potensi dampak performa tersebut.

  • Volume HostPath mengikat pod secara langsung ke penyimpanan fisik pada node tertentu. Data dalam volume HostPath bersifat spesifik ke node tersebut dan tidak bertahan jika pod dipindahkan ke node lain.

    • Jangan gunakan HostPath untuk aplikasi berstatus yang memerlukan ketersediaan tinggi dan penyimpanan persisten, seperti database atau cache.

      • Data dalam volume HostPath hanya ada di satu node. Jika pod di-restart atau diperbarui lalu dijadwalkan ulang ke node lain, pod tersebut kehilangan akses ke data aslinya.

      • Mengizinkan pod mengakses sistem file host melanggar isolasi kontainer. Jika dikonfigurasi salah—misalnya dengan memasang direktori root /—atau jika kontainer memiliki kerentanan, hal ini dapat membahayakan keamanan dan stabilitas node.

    • HostPath tidak cocok untuk node yang memiliki sistem file root read-only, seperti ContainerOS.

FAQ

Apakah data dalam volume HostPath tetap ada setelah pod dihapus dan dibuat ulang?

Hal ini bergantung pada node tempat pod baru dijadwalkan.

  • Jika pod dijadwalkan ke node yang sama: Pod baru memasang direktori yang sama di node tersebut dan dapat mengakses semua data sebelumnya.

  • Jika pod dijadwalkan ke node baru: Pod baru memasang direktori kosong di node baru tersebut. Data di node asli menjadi tidak dapat diakses oleh pod baru.

=