阶段九:容器编排技术之K8s的存储卷-PV-PVC-动态供给
存储卷
背景介绍
问题一 pod有生命周期,生命周期结束后pod里的数据会消失(如配置文件,业务数据等)。 解决方案 我们需要将数据与pod分离,将数据放在专门的存储卷上。

问题二 pod在k8s集群的节点中是可以调度的, 如果pod挂了被调度到另一个节点,那么数据和pod的联系会中断。 解决方案 所以我们需要与集群节点分离的存储系统才能实现数据持久化。

简单来说: Volume提供了在容器上挂载外部存储的能力
相关分类
kubernetes支持的存储卷类型非常丰富,使用下面的命令查看:
[root@master ~]# kubectl explain pod.spec.volumes命令作用:
- 执行 kubectl 的
explain子命令;请以命令中写出的资源类型、资源名、命名空间和选项确定实际影响范围。
执行结果:
- 成功后应以该命令实际输出、生成的文件或目标服务状态为准;失败时先阅读终端报错,再核对命令参数和运行环境。
关键参数:
注意事项:
本地存储卷指的是利用宿主机的本地磁盘来提供存储服务,其优势在于性能较好。
不过也存在单点故障的风险,并且难以在不同节点间实现数据共享。
应用场景:实现pod内容器之间数据共享
特点:随着pod被删除,该卷也会被删除

metadata: spec: containers: volumeMounts:
volumeMounts:
volumes:
**注意事项:**
#创建emptyDir存储类型的pod关键参数:
注意事项:
**注意事项:**注意事项:
问题一:命令找不到

单词拼写错误,访问不到命令;
运行的时候

删除相应的Pod
**注意事项:**注意事项:
**注意事项:**注意事项:
在每个节点上,都要执行以下命令
最终结果显示,每个节点上,都可以查看挂载

在master节点上,创建yaml文件
metadata:
spec:
selector:
matchLabels:
template:
metadata:
labels:
spec:
containers:
volumeMounts:
volumes:
nfs:注意事项:
**注意事项:**
注意事项:
编写创建pvc的YAML文件
metadata: spec: accessModes: resources: requests:
**注意事项:**注意事项:
metadata: spec: selector: matchLabels: template: metadata: labels: spec: containers: volumeMounts:
volumes: persistentVolumeClaim:
**注意事项:**注意事项:
index.html
index.html
**注意事项:**
**命令拆解:**
| 命令部分 | 重要程度 | 详细解释 |
|---|---|---|
| `-it` | 【普通】 | 同时启用交互输入和伪终端,适合进入 Pod 内的 Shell;退出 Shell 不会删除 Pod。 |
| `--` | 【普通】 | 分隔 kubectl 参数和容器内命令;`--` 后面的 `sh` 或 `bash` 会在 Pod 容器内部执行。 |
| `/bin/sh` | 【普通】 | 容器内命令或参数 `/bin/sh`,它会在目标 Pod 中执行,而不是在宿主机执行。 |
**注意事项:**命令说明:

https://github.com/ceph/ceph-csi/releases/tag/v3.14.0
先通过window下载,再上传到服务器

**注意事项:**
metadata:
data:
config.json: |-
[
{
"192.168.11.212:6789",
"192.168.11.213:6789",
"192.168.11.214:6789"
]
}
]注意事项:
#创建空的KMS配置,跟存储加密有关,没有加密创建一个空的配置文件即可
#替换镜像源,官方镜像无法下载
#创建
**注意事项:**
metadata:
stringData:
metadata:
parameters:
#验证
#回到ceph管理节点,创建文件系统子目录,如果用老师的ceph文件系统就不需要执行注意事项:
metadata: data: my.cnf: |- [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock port=3306 log-error=/usr/local/mysql/data/mysql.err log-bin=/usr/local/mysql/data/binlog server-id=10 character_set_server=utf8mb4 gtid-mode=on log-slave-updates=1 sql_mode=NO_ENGINE_SUBSTITUTION innodb_buffer_pool_size=2G
metadata: spec: selector: matchLabels: template: metadata: labels: spec: #imagePullSecrets: containers: ports: env: volumeMounts: volumes: configMap: volumeClaimTemplates: spec: resources: requests: metadata: spec: selector: ports:
**注意事项:**
#查看服务运行所在节点执行如下命令进行验证注意事项:
**注意事项:**
metadata:
data:
config.json: |-
[
{
"192.168.11.212:6789",
"192.168.11.213:6789",
"192.168.11.214:6789"
]
}
]注意事项:
#创建空的KMS配置,跟存储加密有关,没有加密创建一个空的配置文件即可 #替换镜像源,官方镜像无法下载
**注意事项:**
metadata:
stringData:
#创建stroageclass
metadata:
parameters:注意事项:
metadata: data: my.cnf: |- [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock port=3306 log-error=/usr/local/mysql/data/mysql.err log-bin=/usr/local/mysql/data/binlog server-id=10 character_set_server=utf8mb4 gtid-mode=on log-slave-updates=1 sql_mode=NO_ENGINE_SUBSTITUTION innodb_buffer_pool_size=2G
metadata: spec: selector: matchLabels: template: metadata: labels: spec: #imagePullSecrets: containers: ports: env: volumeMounts: volumes: configMap: volumeClaimTemplates: spec: resources: requests: metadata: spec: selector: ports:
**注意事项:**注意事项: