第十二章 自动绑定PV和PVC

简介: 第十二章 自动绑定PV和PVC

注意:上一节说完创建完MYSQL不能运行后来需要创建pv.yaml才运行起来MYSQL。

这一节就是要解决这个问题使用官网的 storage 自动绑定我们就在也不用手动创建了。

#回收策略

1.StorageClass资源的配置

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
  - debug
volumeBindingMode: Immediate
 
 
#回收策略
### 目前的回收策略有:
 
### Retain -- 手动回收
### Recycle -- 需要擦除后才能再次使用
### Delete -- 当用户删除对应的 PersistentVolumeClaim 时,动态配置的 volume 将被自动删除。
 
#一个Volume卷发生的状态:
 
### Available:空闲的资源,未绑定给PVC
### Bound:成功绑定PVC
### Released:PVC已经被删除,但PV还没有被集群回收
### Failed:PV回收失败

storage.yaml 解释:

  1. apiVersion: storage.k8s.io/v1
  2. kind: StorageClass: 定义资源类型,即StorageClass
  3. provisioner: kubernetes.io/aws-ebs:指定了用于提供存储的Provisioner
  4. parameters:
    type: gp2: 指定EBS的存储类型为gp2。AWS的gp2类型表示高性能的SSD存储。
  5. reclaimPolicy: Retain 当PersistentVolume被删除时,其对应的存储资源将被保留。删除PV不会释放存储资源。
  6. allowVolumeExpansion: true 允许已存在的PersistentVolumes进行扩展。如果超过了当前的容量,Kubernetes可以自动扩展它。
  7. mountOptions:
  • - debug: 挂载选项,在挂载时启用调试模式。
  1. volumeBindingMode: Immediate 定义PV请求如何绑定到可用的存储。Immediate 一旦存储被请求,它就会自动绑定。

2.使用Helm 把 nfs-client-provisioner 拉取到本地我们进行查看

# 命令格式
helm search repo <应用名>
# 仓库中搜索应用
 
[root@master01 nfs]# helm search repo nfs-client-provisioner
NAME                            CHART VERSION   APP VERSION     DESCRIPTION
stable/nfs-client-provisioner   1.2.11          3.1.0           DEPRECATED - nfs-client is an automatic provisi..

3.拉取到本地

# 拉取
[root@master01 hpro]# helm pull stable/nfs-client-provisioner
 
[root@master01 hpro]# ls
mychart  nfs-client-provisioner-1.2.11.tgz  pv.yaml
 
# 解压
[root@master01 hpro]# tar -zvxf nfs-client-provisioner-1.2.11.tgz
nfs-client-provisioner/Chart.yaml
nfs-client-provisioner/values.yaml
nfs-client-provisioner/templates/_helpers.tpl
nfs-client-provisioner/templates/clusterrole.yaml
nfs-client-provisioner/templates/clusterrolebinding.yaml
nfs-client-provisioner/templates/deployment.yaml
nfs-client-provisioner/templates/persistentvolume.yaml
nfs-client-provisioner/templates/persistentvolumeclaim.yaml
nfs-client-provisioner/templates/podsecuritypolicy.yaml
nfs-client-provisioner/templates/role.yaml
nfs-client-provisioner/templates/rolebinding.yaml
nfs-client-provisioner/templates/serviceaccount.yaml
nfs-client-provisioner/templates/storageclass.yaml
nfs-client-provisioner/.helmignore
nfs-client-provisioner/README.md
nfs-client-provisioner/ci/test-values.yaml
 
# 可以看到解压包
[root@master01 hpro]# ls
mychart  nfs-client-provisioner  nfs-client-provisioner-1.2.11.tgz  pv.yaml

4.编辑 nfs-client-provisioner 中的 values.yaml

#### 只编辑这些
nfs:
  server: 192.168.1.19    #####  nfs-server地址
  path: /mnt/nfs    #####  nfs配置的共享目录
  mountOptions:
  # Set a StorageClass name
  # Ignored if storageClass.create is false
  # 名字修改成自己的
  name: nfs-client

5.使用k8s命令创建一个命名空间

# 创建命名空间
[root@master01 nfs-client-provisioner]# kubectl create ns nfs-pro
namespace/nfs-pro created
 
# 查看命名空间
[root@master01 nfs-client-provisioner]# kubectl get ns
NAME              STATUS   AGE
default           Active   30d
kube-node-lease   Active   30d
kube-public       Active   30d
kube-system       Active   30d
nfs-pro           Active   59s
 

6.使用Helm 命令启动nfs-client-provisioner

# 命令 -n nfs-pro 表示安装的命名空间
 
[root@master01 hpro]# helm install nfs-provisioner ./nfs-client-provisioner -n nfs-pro
WARNING: This chart is deprecated
NAME: nfs-provisioner
LAST DEPLOYED: Tue Jan 16 06:23:15 2024
NAMESPACE: nfs-pro
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@master01 hpro]#
 
# 查看nfs-pro命名空间下已经Running   
[root@master01 hpro]# kubectl get pod -n nfs-pro
NAME                                                     READY   STATUS    RESTARTS   AGE
nfs-provisioner-nfs-client-provisioner-d9b94b899-wh6r5   1/1     Running   0          21s
 
# 使用Helm查看也已经 deployed     状态了
[root@master01 hpro]# helm list  -n nfs-pro
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
nfs-provisioner nfs-pro         1               2024-01-16 06:23:15.499168458 -0800 PST deployed        nfs-client-provisioner-1.2.11   3.1.0

7.使用 k8s 查看StorageClass

# sc 是 StorageClass 缩写
 
kubectl get sc
[root@master01 hpro]#  kubectl get sc
NAME         PROVISIONER                                            RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client   cluster.local/nfs-provisioner-nfs-client-provisioner   Delete          Immediate           true                   3m44s

存储属性包括:

  • ReclaimPolicy:删除。当PersistentVolume被删除时,其存储资源会被释放。
  • VolumeBindingMode:立即(Immediate)。一旦存储被请求,就会被绑定。
  • AllowVolumeExpansion:true。已存在的PersistentVolumes可以进行扩展。
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
5月前
|
运维 Kubernetes Cloud Native
k8s学习-Pod(生命周期、探针、模板、创建、删除等)
k8s学习-Pod(生命周期、探针、模板、创建、删除等)
61 0
|
9天前
|
存储 Kubernetes 容器
|
1月前
第十三章 绑定StorageClass演示绑定PV和PVC
第十三章 绑定StorageClass演示绑定PV和PVC
15 1
|
1月前
|
存储 Kubernetes 容器
【CKA模拟题】综合案例演示如何创建pv和pvc
【CKA模拟题】综合案例演示如何创建pv和pvc
78 1
|
1月前
|
存储 Kubernetes 应用服务中间件
【CKA模拟题】综合演练演示Pod如何引用PVC的资源
【CKA模拟题】综合演练演示Pod如何引用PVC的资源
111 2
|
2月前
|
存储 运维 Kubernetes
K8S基于NFS来动态创建PV【亲测可用】
K8S基于NFS来动态创建PV【亲测可用】
82 2
|
9月前
|
存储 Kubernetes Perl
pv和pvc的区别、关系,如何设置使用的步骤
PV(Persistent Volume)和 PVC(Persistent Volume Claim)是 Kubernetes 中用于管理持久化存储的两个关键概念。 PV 是集群中的一个持久化存储资源,它是由集群管理员预先创建和配置的。PV 可以是物理存储设备、存储阵列、网络存储等。PV 有自己的生命周期,并且可以被多个 Pod 共享。 PVC 是 Pod 对 PV 的请求,它用于声明 Pod 对存储的需求。PVC 描述了 Pod 所需的存储容量、访问模式等属性。当创建 PVC 时,Kubernetes 会尝试将其与可用的 PV 进行匹配和绑定。一旦 PVC 成功绑定到 PV,Pod 就可
293 0
|
5月前
|
Kubernetes 网络协议 Cloud Native
k8s学习-网络策略NetworkPolicy(概念、模版、创建、删除等)
k8s学习-网络策略NetworkPolicy(概念、模版、创建、删除等)
51 0
|
5月前
|
存储 Kubernetes Unix
k8s教程(Volume篇)-CSI存储机制详解
k8s教程(Volume篇)-CSI存储机制详解
325 0
k8s教程(Volume篇)-CSI存储机制详解
|
6月前
|
存储 Kubernetes 应用服务中间件
k8s教程(pod篇)-容器共享volume
k8s教程(pod篇)-容器共享volume
89 0