持久化存储

1.为什么需要持久化存储

01.在k8s运行时会出现一些小问题,当没有做持久化时,所有的数据都存在容器中,当容器死掉,容器就会删掉,然后会自动起一个新的容器,但是数据会丢失。

2.k8s引入了两个概念

  • pv :persistent volume (全局资源) node

  • pvc :persisternt volume claim (局部资源)namespace(pod、rc、svc)

3.安装nfs服务端(10.0.0.11)可以是独立的

yum install nfs-utils.x86_64 -y
mkdir /data
vim /etc/exports
/data  10.0.0.0/24(rw,async,no_root_squash,no_all_squash)

systemctl start rpcbind
systemctl start nfs

3.1在node节点安装nfs客户端

yum install nfs-utils.x86_64 -y
showmount -e 10.0.0.11

3.2 master创建pv和pvc

上传yaml配置文件

vim mysql_pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: tomcat-mysql            ###全局唯一
  labels:
    type: nfs001                       ### pvc会根据标签来选择pv
spec:
  capacity:                              ### 可以提供10G的存储
    storage: 10Gi
  accessModes:                       ### 支持多个pod同时挂载存储
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Recycle              ### pvc回收策略(支持回收)
  nfs:
    path: "/data/tomcat-mysql"       ### nfs服务器目录
    server: 10.0.0.11                      ### nfs服务器地址
    readOnly: false                      ###只读类型 (可写)
  

查看yaml值层级关系
kubectl explain pv.spec.persistentVolumeReclaimPolicy
创建共享目录
mkdir -p /data/tomcat-mysql

创建pv
kubectl create -f mysql_pv.yaml 

查看pv
 kubectl get pv -o wide
vim mysql_pvc.yaml
apiVersion: v1
metadata:
  name: tomcat-mysql
spec:
  accessModes:                              ##指定访问模式 多pod读写
    - ReadWriteMany
  resources:                                        ### 需要的资源空间
    requests:  
      storage: 1Gi 


创建pvc
kubectl create -f mysql_pvc.yaml 

查看pvc
 kubectl get pvc -o wide
image.png

image.png

3.3启动一个新mysql pod使用volume

vim mysql-rc-pvc.yml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - name: mysql
          image: 10.0.0.11:5000/mysql:5.7
          ports:
          - containerPort: 3306
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: '123456'
          volumeMounts:
          - name: mysql
            mountPath: /var/lib/mysql
      volumes:
      - name: mysql
        persistentVolumeClaim:
          claimName: tomcat-mysql            ### pvc的名字
 
 kubectl create -f mysql-rc-pvc.yml

持久化数据已成功

image.png
image.png
image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容