1. 程式人生 > >kubernetes 的數據的存儲 存儲卷

kubernetes 的數據的存儲 存儲卷

volume 分布式 true 分布式存 命令 存儲設備 ota nas 級別

根據應用本身是否 需要持久存儲數據,以及某一此請求和此前的請求是否有關聯性,可以分為四類應用:

  1.有狀態要存儲 2.有狀態無持久存儲 3.無狀態無持久存儲4.無狀態有持久存儲

在k8s上的數據持久性:1.emptyDir:只在節點本地使用,一旦pod刪除存儲卷也刪除。只是用來做臨時目錄,可是做緩存用 沒有任何持久性

           2.hostPath:主機路徑,直接在宿主機上找一個目錄與容器建立關聯關系,也不具有真正意義上的持久性

           3.網絡連接性存儲 1)傳統意義上的存儲設備,本地的san(iscsi),nas(nfs,cifs)

                   2) 分布式存儲 文件系統級別的(glusterfs,cephfs) 塊存儲級別的(ceph) 

                   3)雲存儲 EBS、Azure Disk、

可以通過命令 kubectl explain pod.spec.volumes

一、emptyDir:同一個pod內的多個容器可以共享同一個存儲卷,pod刪除存儲卷也刪除。不能實現數據存儲化

apiVersion: v1
kind: Pod
metadata:
  name: pod-volume
  namespace: default
  labels:
    app: myapp
    tier: frontend
  annotations:
    create_by: yiruiduan
spec:
  containers:
  
- name: nginx image: ikubernetes/myapp:v1 imagePullPolicy: IfNotPresent ports: - name: http containerPort: 80 volumeMounts: - name: html mountPath: /usr/share/nginx/html/ - name: busybox image: busybox:latest imagePullPolicy: IfNotPresent volumeMounts:
- name: html mountPath: /data command: [/bin/sh,-c,"while true;do echo $(date) >>/data/index.html;sleep 2;done"] volumes: - name: html emptyDir: {}

訪問nginx就可以看到動態生成的index.html

二、hostPathsu宿主機路徑,把pod所在的宿主機之上的文件 系統的某一目錄,與pod建立關系,在pod被刪除的時候,這個存儲卷是不會被刪除的。所以只要同一個pod能夠調度到同一個節點上,對應的數據依然是存在的。這只是節點及的持久,節點down了數據也就沒有了。存在數據丟失

apiVersion: v1
kind: Pod
metadata:
  name: pod-vol-hostpath
  namespace: default
spec:
  containers:
  - name: myapp
    image: ikubernetes/myapp:v1
    volumeMounts:
    - name: html
      mountPath: /usr/share/nginx/html

  volumes:
  - name: html
    hostPath:
      path: /data/pod/volume1
      type: DirectoryOrCreate     #如果目錄不存在就創建

三、nfs共享存儲,節點掛在共享存儲。無論調度在那個節點上所有數據能共享訪問。

kubernetes 的數據的存儲 存儲卷