本地存储
1、emptydir
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: write
image: centos
command: ["sh","-c","for i in {1..100};do echo $i >> /data/hello;sleep 1;done"]
volumeMounts:
- name: data
mountPath: /data
- name: read
image: centos
command: ["sh","-c","tail -f /data/hello"]
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
emptyDir: {}
注意command,bash、sh的用法。
一个pod中有两个contrainer,一个读一个写,实现两个容器之间的数据共享。
kubectl logs my-pod -c write
kubectl logs my-pod -c read
hostPath
挂载node文件系统上的文件或者目录到pod中的容器
假如pod是一个监控,需要采集宿主机上的应用,就需要将宿主机上的文件或目录挂载到pod中的容器中
应用场景:Pod中容器需要访问宿主机文件
apiVersion: v1
kind: Pod
metadata:
name: my-pod2
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 36000
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
hostPath:
path: /tmp
type: Directory
查看挂载的node节点
在node节点10.0.3.248上查看挂载点与pod中的文件
node248节点:
pod内部:
网络存储
在非集群服务器中,部署nfs
如在104上部署
yum install -y nfs-utils
# 暴露启动挂载的路径
vi /etc/exports
# ------------
/data/nfs *(rw,no_root_squash)
# ------------
systemctl start nfs
ps -ef |grep nfs
并在每个客户端安装nfs-utils
yum install -y nfs-utils
在master运行nfs.yaml文件:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec: