Kubernetes使用卷存储

2023-12-25 33

Kubernetes中,卷(Volume)是一种独立于容器的持久化存储方式。与容器的文件系统不同,卷的生命周期并不依赖于容器的生命周期。即使容器终止并重新启动,对卷的改动也不会丢失。 对于独立于容器的持久化存储,可以使用卷。 这对于有状态应用程序尤为重要,例如键值存储(如 Redis)和数据库。

一、准备

必须拥有一个 Kubernetes 的集群,同时必须配置 kubectl 命令行工具与集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 如果还没有集群,可以通过 Minikube 构建一个自己的集群,或者可以使用下面的 Kubernetes 练习环境之一:

  • Killercoda
  • 玩转 Kubernetes

要获知版本信息,请输入 kubectl version.

二、 Pod配置卷

在本练习中,将创建一个运行 Pod,该 Pod 仅运行一个容器并拥有一个类型为 emptyDir 的卷, 在整个 Pod 生命周期中一直存在,即使 Pod 中的容器被终止和重启。以下是 Pod 的配置:

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: {}

创建 Pod:

kubectl apply -f https://k8s.io/examples/pods/storage/redis.yaml

验证 Pod 中的容器是否正在运行,然后留意 Pod 的更改:

kubectl get pod redis --watch

输出如下:

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

在另一个终端,用 Shell 连接正在运行的容器:

kubectl exec -it redis -- /bin/bash

在 Shell 中,切换到 /data/redis 目录下,然后创建一个文件:

root@redis:/data# cd /data/redis/
root@redis:/data/redis# echo Hello > test-file

在 Shell 中,列出正在运行的进程:

root@redis:/data/redis# apt-get 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.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
在 Shell 中,结束 Redis 进程:
root@redis:/data/redis# kill <pid>

其中 <pid> 是 Redis 进程的 ID (PID)。

在原先终端中,留意 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 的 restartPolicy 为 Always。

用 Shell 进入重新启动的容器中:

kubectl exec -it redis -- /bin/bash

在 Shell 中,进入到 /data/redis 目录下,并确认 test-file 文件是否仍然存在。

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

删除为此练习所创建的 Pod:

kubectl delete pod redis
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
Kubernetes使用卷存储
下一篇: Debian安装