kubernetes--emptyDirとhostPathの違い

3479 ワード

参考資料:https://www.cnblogs.com/breezey/p/9827570.html
emptyDirとhostPathの違い
  • volumeタイプ
  • emptyDir
  • hostPath

  • volumeタイプ
     volumeは、kubernetes Pod内の複数のコンテナがアクセスする共有ディレクトリです.volumeはpod上に定義され、このpodの複数の容器によって同じまたは異なる経路の下にマウントされる.volumeのライフサイクルはpodのライフサイクルと同じで、pod内のコンテナが停止したり再起動したりした場合、volumeのデータには影響しません.従って、podによって生成されたデータを永続化するために一般的なvolumeが用いられる.
    Kubernetesは、eemptyDir、hostPath、gcePersistentDisk、awsElasticBlockStore、gitRepo、secret、nfs、iscsi、glusterfs、persistentVolumeClaim、rbd、flexVolume、cinder、cephfs、flocker、downwardAPI、fc、azureFile、configMap、vsphereVolumeなど、多くのvolumeタイプを提供しています.
    emptyDir
    emptyDirタイプのvolumeはpodがnodeに割り当てられたときに作成され、kubernetesはnodeに自動的にディレクトリを割り当てるので、ホストnodeに対応するディレクトリファイルを指定する必要はありません.このディレクトリの初期内容は空で、Podがnodeから削除されるとemptyDirのデータは永続的に削除されます.
    EmptyDir Volumeは、主に一部のアプリケーションで永続的に保存する必要のない一時ディレクトリ、複数のコンテナの共有ディレクトリなどに使用されます.
    実例は本ブログのブログ「kubernetes v 1.14.0-Podコンテナ共有volume」を参照
    hostPath
     hostPath Volumeはpodがホスト上のディレクトリまたはファイルをマウントし、コンテナがホストの高速ファイルシステムを使用して格納できるようにする.欠点:k 8 sではpodは各nodeノード上で動的にスケジューリングされる.あるpodが現在のnodeノードで起動し、hostPathでファイルをローカルに格納した後、次回別のノードにスケジューリングして起動すると、前のノードに格納されたファイルは使用できません.
    apiVersion: v1
    kind: Pod
    metadata:
      name: tomcat
      namespace: admin
    spec:
      containers:
      - name: tomcat9
        image: tomcat:9
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name: tomcat-log
          mountPath: /usr/local/tomcat/logs
        ports:
        - containerPort: 8080
      volumes:
      - name: tomcat-log
        hostPath:
          path: /root/logs
    

     tomcatが存在するノードのディレクトリ/root/logs/はコンテナtomcat 9の/usr/local/tomcat/logs/の下にマウントされ、podが実行されるとログはローカルディレクトリに格納されます.