k8s之存储卷

k8s之存储卷 

存储卷-----数据卷

容器内的目录和宿主机的目录进行挂载

容器在系统上的生命周期是短暂的,delete,k8s用控制创建的pod,delete相当于重启,容器的状态也会恢复到初始状态

一旦回到初始状态,所有的后天编辑的文件都会消失

容器和节点之间创建一个可以持久保存容器内文件的存储卷,即使容器被销毁,删除,重启,节点上的存储卷的数据依然存在,后续可以继续使用。可以继续将容器内目录和宿主机挂载,保存的数据继续使用

1、emptyDir:

容器内部共享存储卷,k8s系统当中,是一个pod当中的多个容器共享一个存储卷目录

emptyDir卷可以使pod当中容器在这个存储卷上读取和写入

emptyDir是不能挂载到节点的,随着pod的生命周期结束,emptyDir也会结束,数据也不会保留

容器内部共享,lnmp

apiVersion: apps/v1

kind: Deployment

metadata:

  labels:

    app: nginx

  name: nginx

spec:

  replicas: 3

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - image: nginx:1.22

        name: nginx1

        volumeMounts:

        - name: html

          mountPath: /usr/share/nginx/html

#第一个name,存储卷的名称,可以自定义,mountPath是定义容器内的挂载点,和节点,或者其他容器的共享>目录

      - image: nginx:1.22

        name: nginx2

        volumeMounts:

        - name: html

          mountPath: /data

#引用上一个挂载的名称,表示我将和/usr/share/nginx/html这个目录挂载,由data目录和他挂载

        command: ["/bin/bash", "-c", "while true; do echo $(date) >> /data/index.html; sleep 2; done"]

      volumes:

      - name: html

        emptyDir: {}

kubectl apply -f pod-emptydir.yaml

kubectl exec -it nginx-dir-86ccb4cd78-pttv4 -c nginx1 bash

kubectl exec -it nginx-dir-86ccb4cd78-pttv4 -c nginx2 bash

kubectl get pods -o wide

NAME           READY   STATUS    RESTARTS   AGE   IP            NODE     NOMINATED NODE   READINESS GATES

pod-emptydir   2/2     Running   0          36s   10.244.2.19   node02   <none>           <none>

//在上面定义了2个容器,其中一个容器是输入日期到index.html中,

然后验证访问nginx的html是否可以获取日期。以验证两个容器之间挂载的emptyDir实现共享。

curl 10.244.2.19

Thu May 27 18:17:11 UTC 2021

Thu May 27 18:17:13 UTC 2021

Thu May 27 18:17:15 UTC 2021

Thu May 27 18:17:17 UTC 2021

Thu May 27 18:17:19 UTC 2021

Thu May 27 18:17:21 UTC 2021

Thu May 27 18:17:23 UTC 2021

题:

污点设置为NoExecute,节点上的pod会被驱逐,那么文件数据在不在?

答:1、在的,pod被驱逐,并不是node节点被销毁,所有数据还保留在节点上

2、pod被驱逐(基于控制器创建的)会在其他节点重新部署,又会在其他节点生成一个新的存储卷,数据依然可以持久化

emptyDir的共享数据,会丢失

2、hostPath:

将容器内部的挂载点和节点上的目录进行挂载,hostPath可以实现数据的持久化。node节点如果被销毁,那么数据也会丢失

apiVersion: apps/v1

kind: Deployment

metadata:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值