分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

kubernetes 数据持久化

发布时间:2023-09-06 01:18责任编辑:顾先生关键词:kubernetes

pod本身是无状态,所以很多有状态的应用,就需要将数据进行持久化。

1:将数据挂在到宿主机。但是pod重启之后有可能到另外一个节点,这样数据虽然不会丢但是还是有可能会找不到

apiVersion: v1kind: Podmetadata: ?name: busybox ?labels: ???name: busyboxspec:containers:- image: busybox ?command: ???- sleep ???- "3600" ?imagePullPolicy: IfNotPresent ?name: busybox ?volumeMounts: ???- mountPath: /busybox-data ?????name: datavolumes:- hostPath: ?path: /tmp/dataname: data

2:挂到外部存储,如nfs

apiVersion: v1 kind: ReplicationController metadata: ??name: nginx spec: ??replicas: 2 ??selector: ????app: web01 ??template: ????metadata: ??????name: nginx ??????labels: ????????app: web01 ????spec: ??????containers: ??????- name: nginx ????????image: reg.docker.tb/harbor/nginx ????????ports: ????????- containerPort: 80 ????????volumeMounts: ????????- mountPath: /usr/share/nginx/html ??????????readOnly: false ??????????name: nginx-data ??????volumes: ??????- name: nginx-data ????????nfs: ??????????server: 10.0.10.31 ??????????path: "/data/www-data" 

上述说的是简单的存储方法,直接在deployment中定义了具体的存储,但是这样会存在几个问题。

1:权限管理,任何一个pod都可以动任意一个路径

2:磁盘大小限制,无法对某个存储块进行限制

3:如果NFS的url变了,那么所有的配置都需要修改

为了解决以上的问题,引入了PV-PVC的概念

创建一个卷PV,不属于任何namespaces,可以限制大小,读写权限

apiVersion: v1kind: PersistentVolumemetadata: ?name: pv0001 ?labels: ???app: "my-nfs"spec: ?capacity: ???storage: 5Gi ??accessModes: ???- ReadWriteMany ??persistentVolumeReclaimPolicy: Recycle ?nfs: ???path: "/data/disk1" ???server: 192.168.20.47 ????readOnly: false

再对应的namespace下面创建PVC。

apiVersion: v1kind: PersistentVolumeClaimmetadata: ?name: nfs-pvcspec: ?accessModes: ?- ReadWriteMany ???????resources: ????requests: ??????storage: 1Gi ?selector: ???matchLabels: ????app: "my-nfs"

然后kubectl apply 创建PV,PVC 

最后在应用用使用该PVC

apiVersion: v1kind: Podmetadata: ?name: test-nfs-pvc ?labels: ???name: test-nfs-pvcspec: ?containers: ???- name: test-nfs-pvc ?????image: registry:5000/back_demon:1.0 ???????ports: ???????- name: backdemon ?????????containerPort: 80 ?????command: ???????- /run.sh ?????volumeMounts: ???????- name: nfs-vol ??????????mountPath: /home/laizy/test/nfs-pvc ??volumes: ???- name: nfs-vol ?????persistentVolumeClaim: ???????claimName: nfs-pvc

这样可以方便的限制每个pvc所在的子目录,同时万一nfs迁移后,只需要更改pv中的url即可

kubernetes 数据持久化

原文地址:http://www.cnblogs.com/ssss429170331/p/7686791.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved