zoukankan      html  css  js  c++  java
  • kubernetes之配置Pod的Volume存储

    简介

    此文讲解如何使用Volume配置Pod的存储。

    容器的文件系统与容器是同生共死的关系。所以,当容器终止或重启时,文件系统会变化或丢失。为了获得独立于容器的更一致的存储,可以使用Volume。这对于有状态应用程序(例如键值存储(例如Redis)和数据库)尤其重要。

    备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。

    配置Pod的Volume

    创建一个Pod,该Pod之运行了一个容器。此Pod具有类型为emptyDir的Volume,即使容器终止并重新启动,该Volume也会在Pod的整个生命周期内持续存在。文件名:redis.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: redis
    spec:
      containers:
      - name: redis
        image: redis
        volumeMounts:
        - name: redis-storage
          mountPath: /data/redis
      volumes:
      - name: redis-storage
        emptyDir: {}
    

    1、创建Pod

    # kubectl apply -f /root/k8s-example/pods/redis.yaml
    

    2、确认Pod中的容器的运行状态,观测Pod的变化

    # kubectl get pod redis --watch
    

    输出结果如下

    NAME    READY   STATUS    RESTARTS   AGE
    redis   1/1     Running   0          3m17s
    

    3、在另一个终端,用shell进入容器

    # kubectl exec -it redis -- /bin/bash
    

    4、在shell中,进入/data/redis/,创建一个文件

    # kubectl exec -it redis -- /bin/bash
    root@redis:/data# cd /data/redis/
    root@redis:/data/redis# echo Hello > test-file
    

    5、在shell中,列出正在运行的进程

    root@redis:/data/redis# apt update
    root@redis:/data/redis# apt-get install procps
    root@redis:/data/redis# ps aux
    

    输出结果如下:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    redis        1  0.1  0.0  40696  2580 ?        Ssl  08:35   0:01 redis-server *:6379
    root        18  0.0  0.0   3956  2060 pts/0    Ss   08:40   0:00 /bin/bash
    root       332  0.0  0.0   7628  1404 pts/0    R+   08:45   0:00 ps aux
    

    6、在shell中,kill掉 Redis 进程

    root@redis:/data/redis# kill <pid>
    

    <pid>即为 Redis 的进程 ID,可以看出进程ID为1

    7、在原来的终端中,看到Redis的Pod发生改变,如下:

    # kubectl get pod redis --watch
    NAME    READY   STATUS    RESTARTS   AGE
    redis   1/1     Running   0          3m17s
    redis   0/1     Completed   0          11m
    redis   1/1     Running     1          11m
    

    容器被终止和重启,因为Redis的Pod中restartPolicy的值为Always

    1、然后再次进入重启后的Redis Pod的shell中,查看创建的文件依然存在

    # kubectl exec -it redis -- /bin/bash
    

    2、在shell中,进入/data/redis/目录,确认test-file文件是否依然存在

    root@redis:/data/redis# cd /data/redis/
    root@redis:/data/redis# ls
    test-file
    

    3、删除创建的Pod

    # kubectl delete pod redis
    
  • 相关阅读:
    nyoj 题目19 擅长排列的小明
    nyoj 题目20 吝啬的国度
    nyoj 题目17 单调递增最长子序列
    nyoj 题目14 会场安排问题
    nyoj 题目12 喷水装置(二)
    nyoj 题目7 街区最短路径问题
    nyoj 8 一种排序
    nyoj 题目6 喷水装置
    nyoj 题目5 Binary String Matching
    nyoj 1282 部分和问题
  • 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12220850.html
Copyright © 2011-2022 走看看