Docker
掛載持久卷時,Kubernetes pod 中的內容為空
持久卷聲明和持久卷 yaml 文件
apiVersion: v1 kind: PersistentVolume metadata: name: my-volume labels: type: local spec: storageClassName: manual capacity: storage: 5Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/datatypo" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-claim spec: storageClassName: manual volumeName: my-volume accessModes: - ReadWriteOnce resources: requests: storage: 3Gi
部署 yaml 文件
apiVersion: v1 kind: Service metadata: name: typo3 labels: app: typo3 spec: type: NodePort ports: - nodePort: 31021 port: 80 targetPort: 80 selector: app: typo3 --- apiVersion: apps/v1 kind: Deployment metadata: name: typo3 spec: selector: matchLabels: app: typo3 replicas: 1 template: metadata: labels: app: typo3 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: app operator: In values: - typo3 containers: - image: image:typo3 name: typo3 imagePullPolicy: Never ports: - containerPort: 80 volumeMounts: - name: my-volume mountPath: /var/www/html/ volumes: - name: my-volume persistentVolumeClaim: claimName: my-claim
注意:如果未添加持久卷,則內容顯示在 pod 內(在 中
var/www/html
)。但是在添加持久卷之後,它不會顯示同一文件夾和外部掛載路徑中的任何內容/mnt/datatypo
。
這是預期的行為:安裝持久卷時,它會覆蓋
mountPath
.因此,您有兩種選擇:
- 已經在您的主機上顯示了該目錄的內容
- 掛載
hostPath
到容器中的另一個目錄,然後將內容複製到最終目標文件夾。(可以通過容器中的命令來實現)您也可以掛載單個文件,有不同的選項
hostPath types
。請熟悉hostPath 類型。**筆記!**使用
hostPath
mount 只能用於在本地測試某些功能,在生產系統中這是非常不安全的方法:警告:HostPath 卷存在許多安全風險,最好的做法是盡可能避免使用 HostPath。當必須使用 HostPath 卷時,它的範圍應僅限於所需的文件或目錄,並以 ReadOnly 方式掛載