通過卷在容器間共享數據
emptyDir:當pod刪除時卷也被刪除,用於存放臨時數據
pod實例fortune.yaml
apiVersion: v1
kind: Pod
metadata:
name: fortune
spec:
containers:
- image: luksa/fortune
name: html-generator
volumeMounts:
- name: html
mountPath: /var/htdocs
- image: nginx:alpine
name: web-server
volumeMounts:
- name: html
mountPath: /usr/share/nginx/html
readOnly: true
ports:
- containerPort: 80
protocol: TCP
volumes:
- name: html
emptyDir: {}
kubectl create -f fortune.yaml
kubectl logs fortune html-generator
kubectl logs fortune web-server
kubectl exec -it fortune -c web-server /bin/sh
hostPath:指向節點文件系統的特定目錄
[root@mes2 k8study]# kubectl get pods --namespace kube-system
[root@mes2 k8study]# kubectl describe pods kube-addon-manager-minikube --namespace kube-system
Name: kube-addon-manager-minikube
Namespace: kube-system
Priority: 0
Node: minikube/172.27.14.222
Start Time: Fri, 23 Aug 2019 05:37:36 -0400
Labels: component=kube-addon-manager
kubernetes.io/minikube-addons=addon-manager
version=v9.0
Annotations: kubernetes.io/config.hash: 5327162914655af67829868f3ab76393
kubernetes.io/config.mirror: 5327162914655af67829868f3ab76393
kubernetes.io/config.seen: 2019-08-23T05:37:15.210580764-04:00
kubernetes.io/config.source: file
Status: Running
IP: 172.27.14.222
Containers:
kube-addon-manager:
Container ID: docker://0069f20fe82b89a890f89b13e6f812dca78d81d83ecec0534dc9aaded79a7fd3
Image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager:v9.0
Image ID: docker-pullable://registry.cn-hangzhou.aliyuncs.com/google_containers/kube-addon-manager@sha256:672794ee3582521eb8bc4f257d0f70c92893f1989f39a200f9c84bcfe1aea7c9
Port: <none>
Host Port: <none>
State: Running
Started: Tue, 17 Mar 2020 23:23:17 -0400
Last State: Terminated
Reason: Error
Exit Code: 137
Started: Fri, 23 Aug 2019 05:37:37 -0400
Finished: Tue, 17 Mar 2020 23:23:11 -0400
Ready: True
Restart Count: 1
Requests:
cpu: 5m
memory: 50Mi
Environment:
KUBECONFIG: /var/lib/minikube/kubeconfig
Mounts:
/etc/kubernetes/ from addons (ro)
/var/lib/minikube/ from kubeconfig (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
addons:
Type: HostPath (bare host directory volume)
Path: /etc/kubernetes/
HostPathType:
kubeconfig:
Type: HostPath (bare host directory volume)
Path: /var/lib/minikube/
HostPathType:
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: :NoExecute
Events: <none>
使用持久存儲
[root@mes2 k8study]# cat mongonhostpath_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: mongodb
spec:
volumes:
- name: mongodb-data
hostPath:
path: /data/nfs
type: Directory
containers:
- image: mongo
name: mongodb
volumeMounts:
- name: mongodb-data
mountPath: /data/db
ports:
- containerPort: 27017
protocol: TCP
通過底層持久化存儲使用其它類型存儲nfs卷
[root@mes2 k8study]# cat mongonfs_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: mongodb
spec:
volumes:
- name: mongodb-data
nfs:
server: 172.27.14.223
path: /root/data
containers:
- image: mongo
name: mongodb
volumeMounts:
- name: mongodb-data
mountPath: /data/db
ports:
- containerPort: 27017
protocol: TCP
持久卷將底層存儲與POD解耦
卷---持久卷---持久卷聲明---POD卷
集羣管理員將存儲卷通過KubenetsAPI服務器創建註冊持久卷PV
用戶將持久卷聲明提交KubenetsAPI服務器匹配到持久捲進行綁定PVC
mongodb-pv-nfs.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongodb-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
gcePersistentDisk:
pdName: mongodb
fsType: ext4
創建持久卷聲明獲取持久卷
mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc
spec:
resources:
requests:
storage: 1Gi
accessModes:
- ReadWriteOnce
storageClassName: " "
手動回收持久卷:將persistentVolumeReclaimPolicy設置爲Retain
自動回收持久卷:recycle刪除卷內容並再次用於卷聲明,delete刪除底層存儲
持久卷的動態配置storageclass
storageclass-fast-gcepd.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd
zone: europe-west1-b
請求特定存儲類的PVC定義
mongodb-pvc-pd.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc
spec:
storageClassName: fast
resources:
requests:
storage: 100Mi
accessModes:
- ReadWriteOnce
創建不指定存儲類型的持久卷聲明
mongodb-pvc-pd-nostorageclass.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc2
spec:
resources:
requests:
storage: 100Mi
accessModes:
- ReadWriteOnce
檢查存儲類
[root@mes2 ~]# kubectl get sc
NAME PROVISIONER AGE
standard (default) k8s.io/minikube-hostpath 242d
[root@mes2 ~]# kubectl get sc standard -o yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "true"
creationTimestamp: "2019-08-23T09:37:55Z"
labels:
addonmanager.kubernetes.io/mode: EnsureExists
name: standard
resourceVersion: "358"
selfLink: /apis/storage.k8s.io/v1/storageclasses/standard
uid: 9d6be323-c93d-44f4-bc05-c068cf0897de
provisioner: k8s.io/minikube-hostpath
reclaimPolicy: Delete
volumeBindingMode: Immediate