1. Volume
- Kubernetes中的Volume提供了在容器中掛載外部存儲(chǔ)的能力
- Pod需要設(shè)置卷來源(spec.volume)和掛載點(diǎn)(spec.containers.volumeMounts)兩個(gè)信息后才可以使用相應(yīng)的Volume
2. emptyDir
創(chuàng)建一個(gè)空卷,掛載到Pod中的容器。Pod刪除該卷也會(huì)被刪除。
應(yīng)用場(chǎng)景:Pod中容器之間數(shù)據(jù)共享。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: write
image: centos
command: ["bash","-c","for i in {1..100};do echo $i >> /data/hello;sleep 1;done"]
volumeMounts:
- name: data ---使用的數(shù)據(jù)卷名稱,跟volumes:name要能匹配上
mountPath: /data
- name: read
image: centos
command: ["bash","-c","tail -f /data/hello"]
volumeMounts:
- name: data
mountPath: /data
volumes: ---定義數(shù)據(jù)卷來源,支持定義多個(gè)數(shù)據(jù)卷
- name: data
emptyDir: {}
3. hostPath
掛載Node文件系統(tǒng)上文件或者目錄到Pod中的容器。
應(yīng)用場(chǎng)景:Pod中容器需要訪問宿主機(jī)文件。
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 36000
volumeMounts:
- name: data
mountPath: /data ---容器上的/data目錄
volumes:
- name: data
hostPath:
path: /tmp ---宿主機(jī)上的/tmp目錄
type: Directory ---掛載的是一個(gè)目錄
4. NFS(網(wǎng)絡(luò)存儲(chǔ))
安裝服務(wù)端(最好另外找一臺(tái)機(jī)器專門做存儲(chǔ))
yum install nfs-utils -y
vi /etc/exports
/data/nfs *(rw,no_root_squash) ---暴露/data/nfs 目錄,支持所有的IP來訪問,支持讀寫權(quán)限
systemctl start nfs
安裝客戶端(node節(jié)點(diǎn)都要安裝)
yum install nfs-utils -y
systemctl start nfs
nfs.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: wwwroot
mountPath: /usr/share/nginx/html ---網(wǎng)站根目錄
ports:
- containerPort: 80
volumes:
- name: wwwroot
nfs:
server: 192.168.9.61 ---nfs服務(wù)地址
path: /data/nfs ---nfs暴露的目錄
kubectl apply -f nfs.yaml ---創(chuàng)建nfs的pod