第十二章 自动绑定PV和PVC

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 第十二章 自动绑定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可以进行扩展。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
JSON Kubernetes Shell
【Azure K8S | AKS】在不丢失文件/不影响POD运行的情况下增加PVC的大小
【Azure K8S | AKS】在不丢失文件/不影响POD运行的情况下增加PVC的大小
|
存储 Kubernetes 调度
了解pod和pod的生命周期-这一篇文章就够了
了解pod和pod的生命周期-这一篇文章就够了
了解pod和pod的生命周期-这一篇文章就够了
|
6月前
|
运维 Kubernetes Cloud Native
k8s学习-Pod(生命周期、探针、模板、创建、删除等)
k8s学习-Pod(生命周期、探针、模板、创建、删除等)
125 0
|
3月前
|
存储 Kubernetes 调度
在K8S中,PV和PVC是如何关联?
在K8S中,PV和PVC是如何关联?
|
3月前
|
存储 缓存 Kubernetes
在K8S中,有状态服务与无状态服务都是怎么使用pv和pvc?(可以通过应用场景说明一下)
在K8S中,有状态服务与无状态服务都是怎么使用pv和pvc?(可以通过应用场景说明一下)
|
3月前
|
存储 Kubernetes 调度
在k8S中,PV和PVC如何使用?
在k8S中,PV和PVC如何使用?
|
3月前
|
Kubernetes API 调度
在K8S中,Pod生命周期包含哪些?
在K8S中,Pod生命周期包含哪些?
|
5月前
|
存储 Kubernetes 开发工具
程序与技术分享:12.PV、PVC、StrageClass、本地持久存储
程序与技术分享:12.PV、PVC、StrageClass、本地持久存储
36 0
|
5月前
|
存储 Kubernetes 容器
关于PV和PVC的生命周期
【6月更文挑战第11天】Kubernetes中的PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 是用于管理有状态应用的数据持久化存储。
|
6月前
第十三章 绑定StorageClass演示绑定PV和PVC
第十三章 绑定StorageClass演示绑定PV和PVC
57 1