首页 > 其他分享 >使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(PV&PVC)

使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(PV&PVC)

时间:2022-11-10 13:56:31浏览次数:78  
标签:pv Kubernetes -- pvc nginx PVC PV root Running

使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- 持久化存储(NFS网络存储)
NFS 存在一个弊端,需要知道NFS服务器的地址,配在 yaml 中
PV:持久化存储,对存储资源进行抽象,对外提供可以调用的地方
PVC:用于调用,不需要关心内部实现细节

PV(PersistentVolume):是集群中由管理员配置的一段网络存储。 它是集群中的资源, 就像节点是集群资源一样。 PV 是容量插件, 如 Volumes, 但其生命周期独立于使用 PV 的任何单个 pod。 此 API 对象捕获存储实现的详细信息, 包括 NFS, iSCSI 或特定于云提供程序的存储系统。
PVC(PersistentVolumeClaim):是由用户进行存储的请求。 它类似于 pod。 Pod 消耗节点资源, PVC 消耗 PV 资源。 Pod 可以请求特定级别的资源( CPU 和内存) 。 声明可以请求特定的大小和访问模式( 例如, 可以一次读/写或多次只读) 。

虽然 PersistentVolumeClaims 允许用户使用抽象存储资源, 但是 PersistentVolumes 对于不同的问题, 用户通常需要具有不同属性( 例如性能) 。 群集管理员需要能够提供各种PersistentVolumes 不同的方式, 而不仅仅是大小和访问模式, 而不会让用户了解这些卷的实现方式。 对于这些需求, 有 StorageClass 资源。
StorageClass 为管理员提供了一种描述他们提供的存储的“ 类” 的方法。 不同的类可能映射到服务质量级别, 或备份策略, 或者由群集管理员确定的任意策略。 Kubernetes 本身对于什么类别代表是不言而喻的。 这个概念有时在其他存储系统中称为“ 配置文件” 。

PVC 和 PV 是一一对应的
PV 是群集中的资源。 PVC 是对这些资源的请求, 并且还充当对资源的检查。 PV 和 PVC 之间
的相互作用遵循以下生命周期:
Provisioning ——-> Binding ——– >Using——>Releasing——>Recycling

应用部署 、定义PVC(绑定PV)、定义PV(数据存储服务器IP,路径)

创建YAML文件

pvc.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-pvc
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - name: wwwroot
          mountPath: /usr/share/nginx/html
        ports:
        - containerPort: 80
      volumes:
      - name: wwwroot
        persistentVolumeClaim:
          claimName: my-pvc

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi

pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  nfs:
    path: /nfs/pv
    server: 172.16.3.181
# 创建目录
[root@k8smaster ~]# mkdir -p /nfs/pv
# 创建 pvc.yaml ,内容见上
[root@k8smaster ~]# vi pvc.yaml
# 创建 pv.yaml ,内容见上
[root@k8smaster ~]# vi pv.yaml
[root@k8smaster ~]# kubectl apply -f pvc.yaml
deployment.apps/nginx-pvs created
persistentvolumeclaim/my-pvc created
[root@k8smaster ~]# kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
javademo1-d7856c75c-czv2g    1/1     Running   0          22h
javademo1-d7856c75c-n28rs    1/1     Running   0          22h
javademo1-d7856c75c-xzqjc    1/1     Running   0          22h
nginx-f89759699-5hkdw        1/1     Running   0          26d
nginx-nfs-788564fbc8-z9srr   1/1     Running   0          129m
nginx-pvc-58b7bf955f-5clzg   0/1     Pending   0          7s
nginx-pvc-58b7bf955f-lhvx4   0/1     Pending   0          7s
nginx-pvc-58b7bf955f-z2cg6   0/1     Pending   0          7s
[root@k8smaster ~]# kubectl apply -f pv.yaml
persistentvolume/my-pv created
[root@k8smaster ~]# kubectl get pv,pvc
NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE
persistentvolume/my-pv   5Gi        RWX            Retain           Bound    default/my-pvc                           39s

NAME                           STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/my-pvc   Bound    my-pv    5Gi        RWX                           2m13s
[root@k8smaster pv]# pwd
/nfs/pv
[root@k8smaster pv]# vi index.html
hello pvc
[root@k8smaster ~]# kubectl get pods
NAME                         READY   STATUS    RESTARTS   AGE
javademo1-d7856c75c-czv2g    1/1     Running   0          22h
javademo1-d7856c75c-n28rs    1/1     Running   0          22h
javademo1-d7856c75c-xzqjc    1/1     Running   0          22h
nginx-f89759699-5hkdw        1/1     Running   0          26d
nginx-nfs-788564fbc8-z9srr   1/1     Running   0          133m
nginx-pvc-58b7bf955f-5clzg   1/1     Running   0          3m17s
nginx-pvc-58b7bf955f-lhvx4   1/1     Running   0          3m17s
nginx-pvc-58b7bf955f-z2cg6   1/1     Running   0          3m17s
[root@k8smaster ~]# kubectl exec -it nginx-pvc-58b7bf955f-5clzg bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead. 
root@nginx-pvc-58b7bf955f-5clzg:/# ls /usr/share/nginx/html/
index.html
root@nginx-pvc-58b7bf955f-5clzg:/# cat /usr/share/nginx/html/index.html
hello pvc
root@nginx-pvc-58b7bf955f-5clzg:/#

image

标签:pv,Kubernetes,--,pvc,nginx,PVC,PV,root,Running
From: https://www.cnblogs.com/vipsoft/p/16873429.html

相关文章

  • CDH集群内存不够?先别急着加机器
    我们在使用CDH集群的时候,经常会跑一些spark、flink等任务,通常会占用集群较高的内存;随着业务进展,数据量增加,可能会并行跑一些任务,或者是给历史任务分配的内存不足以运行现......
  • 白嫖永久服务器1668059148445
    阿贝云服务器注册免费领取1核1g内存5m宽带10g内存的云服务器,对于个人来说完全够用了。还有免费备案和虚拟主机,免备案对于搭建个人博客就很方便,部署了小项目上去,运行流畅不......
  • 3.两个栈实现一个队列
    两个栈实现一个队列方法一:时间复杂度:push O(1)pop O(n)peek O(n)查看队头元素empty O(1)方法二:pop和peek的时间复杂度为O(n)是因为访问了队头(都位......
  • vue v-for 使用
    html<divv-for="(item,index)informData.liuchengs":key="index"><el-form-itemlabel="流程:":prop="'liuchengs.'+index+'.no'":rules="{requ......
  • Linux安装JDK并配置环境变量
    1.前往JDK官网,地址:https://www.oracle.com/java/technologies/downloads/下载需要的版本(优先java8)   2. 使用cd进入指定目录下,使用mkdir新建一个文件夹,继续使......
  • nginx代理带后缀名的静态文件
      server{listen8000;#监听端口号server_nameloaclhost;#/#域名、主机名#location/cache_app{//匹配路径#r......
  • 09-Go语言的指针和结构体
    指针的声明funcmain(){ a:=10 varp1*int p1=&a //指针保存的地址 fmt.Println(p1) //指针本身的地址 fmt.Println(&p1) //指针指向保存的数据 fmt.Print......
  • @excel 注解_Java读写Excel原来这么简单
    前言相信现在很多搞后端的同学大部分做的都是后台管理系统,那么管理系统就肯定免不了Excel的导出导入功能,今天我们就来介绍一下Java如何实现Excel的导入导出功能。Jav......
  • golang - go文件编码
    必须为utf-8格式win系统一般默认CRLF模式但是如果在linux系统会不支持CRLF模式因此最好使用LF,两个环境都兼容,这样就不会头疼了,不然需要单独转一下 ......
  • SQLServer比较两个数据库的对象
     两个变量,表示要比较的数据库名:@SourceDatabase@DestinationDatabaseDECLARE@SourceDatabaseVARCHAR(50)DECLARE@DestinationDatabaseVARCHAR(50)DECLARE@SQL......