首页 > Web开发 > 详细

4.kubernetes数据持久化

时间:2020-05-04 22:42:48      阅读:70      评论:0      收藏:0      [点我收藏+]

1.数据持久化

 

 1.1emptyDir

emptyDir   跟随pod创建一个空目录 ,随着pod的删除,跟着删除

 

说明:

yaml里字段:

kubectl explain pod.xxx   查看pod下的个个字段

-required:必须的

字段值类型:

<boolean> false true
<Object> 有下一级缩进
<[ ]Object> 有下一级缩减    数组形式,有多个值  以-开头 或者和第一个值(有可能是键值对)对齐空一格(就是出现   - 的原因)
<string> 字符串

 https://www.cnblogs.com/wn1m/p/11286109.html

 

 实验:

tomcat+mysql   tomcat的数据都会提交给mysql   mysql的数据目录在: /var/lib/mysql

所以持久化修改mysql即可

格式:

声名需要持久化的目录

  volumeMounts: 
            - name: tomcat-db     ##卷的名字
              mountPath: /var/lib/mysql   ##挂载目录

  声明持久化的方式

volumes:
        - name: tomcat-db
          emptyDir: {}


mysql.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      volumes:
        - name: tomcat-db
          emptyDir: {}
      containers:
        - name: mysql
          image: 10.0.0.11:5000/mysql:5.7
          volumeMounts: 
            - name: tomcat-db
              mountPath: /var/lib/mysql
          ports:
          - containerPort: 3306
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: ‘123456‘

  其余按照tomcat里的一样就可以,可以修改nodeName

 

页面访问并添加数据

http://10.0.0.12:30008/demo/

技术分享图片

mysql所起的节点上删容器  

 docker rm -f $(docker ps -a -q)

 

会发现数据并没用丢失   删除pod   数据丢失

 

 

持久化目录:

[root@k8s-node2 ~]# find /var/lib/kubelet/pods/ -name ‘mysql‘

/var/lib/kubelet/pods/04ea3aad-5d0d-11ea-a583-000c29393d50/volumes/kubernetes.io~empty-dir/tomcat-db/mysql

/var/lib/kubelet/pods/04ea3aad-5d0d-11ea-a583-000c29393d50/containers/mysql

 

  5.5

 

 

 

 

 

 

 

 

 

 

 

1.数据持久化


 1.1emptyDiremptyDir   跟随pod创建一个空目录 ,随着pod的删除,跟着删除

说明:yaml里字段:
kubectl explain pod.xxx   查看pod下的个个字段
-required:必须的字段值类型:<boolean> false true<Object> 有下一级缩进<[ ]Object> 有下一级缩减    数组形式,有多个值  以-开头 或者和第一个值(有可能是键值对)对齐空一格(就是出现   - 的原因)<string> 字符串
https://www.cnblogs.com/wn1m/p/11286109.html
实验:tomcat+mysql   tomcat的数据都会提交给mysql   mysql的数据目录在: /var/lib/mysql所以持久化修改mysql即可格式:声名需要持久化的目录          volumeMounts:             - name: tomcat-db     ##卷的名字              mountPath: /var/lib/mysql   ##挂载目录

声明持久化的方式volumes:        - name: tomcat-db          emptyDir: {}

mysql.yamlapiVersion: v1kind: ReplicationControllermetadata:  name: mysqlspec:  replicas: 1  selector:    app: mysql  template:    metadata:      labels:        app: mysql    spec:      volumes:        - name: tomcat-db          emptyDir: {}      containers:        - name: mysql          image: 10.0.0.11:5000/mysql:5.7          volumeMounts:             - name: tomcat-db              mountPath: /var/lib/mysql          ports:          - containerPort: 3306          env:          - name: MYSQL_ROOT_PASSWORD            value: ‘123456‘
其余按照tomcat里的一样就可以,可以修改nodeName
页面访问并添加数据http://10.0.0.12:30008/demo/
在mysql所起的节点上删容器   docker rm -f $(docker ps -a -q)
会发现数据并没用丢失   删除pod   数据丢失

持久化目录:[root@k8s-node2 ~]# find /var/lib/kubelet/pods/ -name ‘mysql‘/var/lib/kubelet/pods/04ea3aad-5d0d-11ea-a583-000c29393d50/volumes/kubernetes.io~empty-dir/tomcat-db/mysql/var/lib/kubelet/pods/04ea3aad-5d0d-11ea-a583-000c29393d50/containers/mysql





2.hostPathhostPath  删除pod也不影响数据持久化把宿主机目录挂载到容器里volumes:        - name: tomcat-db          hostPath:               path: /mnt    #没用会自动创建
缺点:这个类型不能跨宿主机    如果跨宿主机,他会发现没用目录,就会重新初始化   创建/mnt    所以hostPath需要固定下  nodeName



3.nfs持久化
创建NFS,修改yaml即可volumes:        - name: tomcat-db          nfs:               path: /mnt    #nfs的文件              server: 10.0.0.11













nfs
pv和pvcpv  :全局资源pvc :局部资源为什么引入pv和pvcpod --> pvc    自动选择    pv -->nfspod--nfs     需要创建所对应的文件等等使用pvc  ,yml文件更通用,更容易移植

pv配置文件apiVersion: v1kind: PersistentVolumemetadata:  name: pv1  labels:    type: nfs001spec:  capacity:    storage: 10Gi   accessModes:                ##允许多个pod读写    - ReadWriteMany   persistentVolumeReclaimPolicy: Recycle           ##允许回收   pvc删除后  nfs:                        ##指定后端存储    path: "/goose1/pv1"    server: 10.0.0.11
pvcapiVersion: v1metadata:  name: tomcat-mysql  namespace: tomcatspec:  accessModes:    - ReadWriteMany  resources:    requests:      storage: 10Gi
启动即可   pvc会自动选择符合的pvtomcat(因为是后期补的笔记 并且没用做dns,所以需要先创建mysql-svc获得vip  id地址如下   )192.168.100.14 master192.168.100.15 node1192.168.100.16 node2
[root@k8s-master pvc]# cat tomcat-rc.yml apiVersion: v1kind: ReplicationControllermetadata:  name: mywebspec:  replicas: 1  selector:    app: myweb  template:    metadata:      labels:        app: myweb    spec:      containers:        - name: myweb          image: 192.168.100.14:5000/tomcat-app:v2          ports:          - containerPort: 8080          env:          - name: MYSQL_SERVICE_HOST            value: ‘10.254.45.227‘          - name: MYSQL_SERVICE_PORT            value: ‘3306‘

tomcat-svc[root@k8s-master pvc]# cat tomcat-svc.yml apiVersion: v1kind: Servicemetadata:  name: mywebspec:  type: NodePort  ports:    - port: 8080      nodePort: 30008  selector:    app: myweb



mysql[root@k8s-master pvc]# cat mysql-rc-pvc.yml apiVersion: v1kind: ReplicationControllermetadata:  name: mysqlspec:  replicas: 1  selector:    app: mysql  template:    metadata:      labels:        app: mysql    spec:      containers:        - name: mysql          image: 192.168.100.14:5000/mysql:5.7          ports:          - containerPort: 3306          env:          - name: MYSQL_ROOT_PASSWORD            value: ‘123456‘          volumeMounts:          - name: data            mountPath: /var/lib/mysql      volumes:      - name: data        persistentVolumeClaim:          claimName: tomcat-mysql

mysql-svc[root@k8s-master pvc]# cat mysql-svc.yml apiVersion: v1kind: Servicemetadata:  name: mysqlspec:  ports:    - port: 3306      targetPort: 3306  selector:    app: mysql


注意点:请确保开启端口转发,并且都安装了客户端

4.kubernetes数据持久化

原文:https://www.cnblogs.com/hsgoose/p/12828387.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!