K8S数据持久化
K8S实现pod数据持久化前言K8S启动的pod属于容器,当pod删除或者重建,原容器中的数据将丢失,这将是严重的安全事故,本文将讲述K8S数据持久化实现的方法。1.实现方式采用nfs、pv与pvc组合的方式实现数据持久化,同时实现多节点pod数据一致性。2.实现过程2.1 部署nfs服务#安装部署nfs#主节点操作#安装nfs,从节点安装nfs-utils即可yum install -y nfs
·
K8S实现pod数据持久化
前言
K8S启动的pod属于容器,当pod删除或者重建,原容器中的数据将丢失,这将是严重的安全事故,本文将讲述K8S数据持久化实现的方法。
1.实现方式
采用nfs、pv与pvc组合的方式实现数据持久化,同时实现多节点pod数据一致性。
2.实现过程
2.1 部署nfs服务
#安装部署nfs
#主节点操作 #安装nfs,从节点安装nfs-utils即可 yum install -y nfs-utils rpcbind #创建nfs共享目录 mkdir /home/nfs/ ; chmod -R 777 /home/nfs #配置NFS服务程序的配置文件/etc/exports。 echo "/home/nfs/ 172.25.79.109/20(rw,sync,no_all_squash,no_root_squash)" > /etc/exports #此处填写需要加入的从节点IP #启动rpcbind服务并验证 systemctl start rpcinfo systemctl enable rpcinfo rpcinfo -p localhost #所有节点启动nfs服务 systemctl start nfs.service systemctl enable nfs.service #从节点操作 showmount -e 172.25.79.108 #查看是否加载主节点配置,此处填写主节点IP Export list for 172.25.79.108: /home/nfsdir 172.25.79.109/20 #从节点创建nfs目录并挂载 mkdir /home/nfs ; mount 172.25.79.108:/home/nfs /home/nfs #设置开机自动挂载 echo 'mount -t nfs 172.25.79.108:/home/nfs /home/nfs' > /etc/rc.d/rc.local #写文件验证成功,数据互通。(过程略)
2.2 在K8S中配置pv,pvc
1.概念
K8S中pv是对底层存储的抽象化,相当于逻辑卷中的LV。
K8S中pvc是描述Pod想要使用的持久化属性,比如存储大小、读写权限。
2.配置#创建pv的yaml文件 vim nginx-pv.yaml #拿nginx举例 apiVersion: v1 kind: PersistentVolume metadata: name: pv-nginx #pv的名字 spec: capacity: storage: 10Gi #使用的空间大小 volumeMode: Filesystem accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain storageClassName: nfs-nginx #标识,用于pvc绑定pv使用 nfs: path: /home/nfs/pv-nginx #创建的nfs的路径, server: 172.25.79.109 #服务器的地址 #创建pvc的yaml文件 vim nginx-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-pvc spec: storageClassName: nfs-nginx #填写pv的storageClassName项的值。 accessModes: - ReadWriteMany resources: requests: storage: 5Gi #分配给nginx的储存大小 #启动pv、pvc kubectl apply -f nginx-pv.yaml kubectl apply -f nginx-pvc.yaml #查看pv、pvc kubectl get pv,pvc
2.3 pod绑定pvc
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: blog-nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: blog-nginx
tier: frontend
template:
metadata:
labels:
app: blog-nginx
tier: frontend
spec:
nodeSelector:
nginxssr: ssr
containers:
- name: nginx
image: nginx:v2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: nginx
- containerPort: 443
name: nginx-ssl
volumeMounts:
- name: config
mountPath: /etc/nginx/conf.d/
- name: dir
mountPath: /var/www/
resources:
requests:
memory: 300Mi
cpu: 200m
limits:
memory: 800Mi
cpu: 700m
volumes:
- name: config
configMap:
name: nginx-wp-config
- name: dir
persistentVolumeClaim:
claimName: nginx-pvc #填写pvc的名称
更多推荐
已为社区贡献3条内容
所有评论(0)