Tasks

Step-by-step instructions for performing operations with Kubernetes.

Edit This Page


title: 配置Pod使用卷作为存储 —

这篇教程指导如何配置Pod使用卷作为存储。

容器的文件系统随着容器的消失而消失,因此当一个容器结束后重启时,文件系统上所作的 修改会完全丢失。若需要独立于容器的永久存储,可以使用Volume. 这对于有状态的应用是相当重要的,比如键值对存储和数据库。Redis就是一个键值对的缓存 和存储。

Before you begin

You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube, or you can use one of these Kubernetes playgrounds:

To check the version, enter kubectl version.

给Pod配置卷

在这个实验里,我们会创建一个Pod运行一个容器,这个Pod有一个emptyDir 类型的卷,这会持续到Pod的整个生命周期,即使容器终结并重启。下面是Pod的配置:

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 create -f https://k8s.io/docs/tasks/configure-pod-container/pod-redis.yaml
    
  2. 验证Pod的容器是否运行,并查看Pod的变动:

    kubectl get pod redis --watch
    

    输出类似下面:

    NAME      READY     STATUS    RESTARTS   AGE
    redis     1/1       Running   0          13s
    
  3. 在另外一个终端里,连接到容器里的shell:

    kubectl exec -it redis -- /bin/bash
    
  4. 在shell里,切换到/data/redis目录,并创建新文件:

    root@redis:/data/redis# echo Hello > test-file
    
  5. 在shell里,列出运行的进程:

    root@redis:/data/redis# ps aux
    

    输出类似下面:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    redis        1  0.1  0.1  33308  3828 ?        Ssl  00:46   0:00 redis-server *:6379
    root        12  0.0  0.0  20228  3020 ?        Ss   00:47   0:00 /bin/bash
    root        15  0.0  0.0  17500  2072 ?        R+   00:48   0:00 ps aux
    
  6. 在shell里,杀死redis进程:

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

    这里的<pid>就是redis的进程ID(PID).

  7. 在你原先的终端里,观察redis Pod的变化。最终你可能会看到的内容如下:

    NAME      READY     STATUS     RESTARTS   AGE
    redis     1/1       Running    0          13s
    redis     0/1       Completed  0         6m
    redis     1/1       Running    1         6m
    

容器结束并重新启动,这是因为redis Pod 的重启策略Always

  1. 在重启后的容器里打开一个shell : kubectl exec -it redis – /bin/bash

  2. 在shell里,切换到/data/redis目录,并验证文件test-file是否还在。

What’s next

Analytics

Create an Issue Edit this Page