一、持久化nfs步骤
nfs:网络存储【通过一台服务器来存储】
1、安装nfs
找一台新的服务器nfs服务端
yum install -y nfs-utils
2、创建存放数据的目录
mkdir -p /data/nfs
3、设置挂载路径
vim /etc/exports
添加如下内容
/data/nfs *(rw,no_root_squash)
执行完成后,即部署完我们的持久化服务器
4、node节点安装nfs
yum install -y nfs-utils
5、启动nfs服务端
回到nfs服务端,启动我们的nfs服务
systemctl start nfs
# 或者使用以下命令进行启动
service nfs-server star
6、创建nfs-nginx.yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-dep1
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: wwwroot
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
volumes:
- name: wwwroot
nfs:
server: 192.168.211.131
path: /data/nfs
7、执行安装部署命令
kubectl apply -f nfs-nginx.yaml
8、在nfs服务器上创建文件
最后在data/nfs目录下创建的文件,在容器内部也能看到了
/usr/share/nginx/html -> 192.168.211.131/data/nfs 内容是对应的
kubectl logs nginx-dep1-d6cc5b6df-vm9qb
二、PV和PVC
我们的ip 和端口是直接放在我们的容器上的,这样管理起来可能不方便
这里就需要用到 pv 和 pvc的概念了,方便我们配置和管理我们的 ip 地址等元信息
PV:持久化存储,对存储的资源进行抽象,对外提供可以调用的地方【生产者】
PVC:用于调用,不需要关心内部实现细节【消费者】
PV 和 PVC 使得 K8S 集群具备了存储的逻辑抽象能力。使得在配置Pod的逻辑里可以忽略对实际后台存储 技术的配置,而把这项配置的工作交给PV的配置者,即集群的管理者。存储的PV和PVC的这种关系,跟 计算的Node和Pod的关系是非常类似的;PV和Node是资源的提供者,根据集群的基础设施变化而变 化,由K8s集群管理员配置;而PVC和Pod是资源的使用者,根据业务服务的需求变化而变化,由K8s集 群的使用者即服务的管理员来配置。
实现流程
- PVC绑定PV
- 定义PVC
- 定义PV【数据卷定义,指定数据存储服务器的ip、路径、容量和匹配模式】
kubectl delete -f nfs-nginx.yaml
1、创建pvc.yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-dep1
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: nginx-data
mountPath: /usr/share/nginx/html
ports:
- containerPort: 80
volumes:
- name: nginx-data
persistentVolumeClaim:
claimName: my-pvc---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
创建pv.yaml文件
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
path: /data/nfs
server: 192.168.211.131
创建pod
kubectl apply -f pvc.yaml
kubectl apply -f pv.yaml
查看
kubectl get pv,pvc