首页 > 其他分享 >k8s之存储卷local PV

k8s之存储卷local PV

时间:2024-01-24 22:34:59浏览次数:26  
标签:pv root volumes demo PV k8s local

一、简介

  • local能够作为PV使用的本地存储卷。
  • local卷插件用于将本地存储设备(如磁盘、分区或目录) 配置为卷。
  • hostPath卷在Pod被重建后可能被调试至其它节点而无法再次使用此前的数据,而基于local卷,调度器能自行完成调度绑定。
  • 基于local的PV,需要管理员通过nodeAffinit声明其定义在的节点。
  • local 卷只能用作静态创建的持久卷。不支持动态配置。

二、创建local PV
1、创建存储类

  • 配置PVC绑定local PV时,通常要创建个StorageClass。
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# cat storageclass-local.yaml 
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl apply -f storageclass-local.yaml 
storageclass.storage.k8s.io/local created
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get sc
NAME               PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local              kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  4s

2、创建率属于存储类的PV

  • 进入节点1准备本地磁盘目录,作为local pv的存储卷
root@k8s-node01:~# mkdir /disks/vol1 -pv
mkdir: created directory '/disks'
mkdir: created directory '/disks/vol1'
root@k8s-node01:~# ls /disks/vol1/
  • 创建PV
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# cat local-pv-demo.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pv-demo
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local
  local:
    path: /disks/vol1                                #将本地磁盘作为目录,事先存在。
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname                #匹配的节点标签
          operator: In
          values:
          - k8s-node01                               #PV绑定的节点名称
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl apply -f local-pv-demo.yaml 
persistentvolume/local-pv-demo created
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get pv 
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                  STORAGECLASS       REASON   AGE
local-pv-demo                              5Gi        RWO            Delete           Available                          local                       4s

3、创建PVC

  • 由于PVC是创建的延迟绑定的,所以创建完成后处于Pending 状态
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# cat pvc-localpv-demo.yaml 
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-localpv-demo
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: local
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl apply -f pvc-localpv-demo.yaml 
persistentvolumeclaim/pvc-localpv-demo created
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get pvc
NAME               STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       AGE
data-mysql-0       Bound     pvc-7785640d-623d-4dd6-90ff-0ce026254733   10Gi       RWO            openebs-hostpath   5d13h
pvc-demo           Bound     pv-nfs-demo                                5Gi        RWX                               96m
pvc-localpv-demo   Pending                                                                        local              6s

三、Pod消费PVC

  • 由于可消费的PVC只在节点1,所以Pod被调度到节点1
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# cat pod-with-localpv.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-with-localpv
spec:
  containers:
  - name: redis
    image: redis:7-alpine
    ports: 
    - containerPort: 6379
      name: redis
    volumeMounts: 
    - mountPath: "/data"
      name: data
  volumes:
    - name: data
      persistentVolumeClaim:
        claimName: pvc-localpv-demo
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl apply -f pod-with-localpv.yaml 
pod/pod-with-localpv created
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS      AGE     IP            NODE         NOMINATED NODE   READINESS GATES
pod-with-localpv         1/1     Running   0             22s     10.244.2.32   k8s-node01   <none>           <none>
  • PVC也被Bound
root@k8s-master01:~/learning-k8s/examples/volumes/local-pv-demo# kubectl get pvc
NAME               STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS       AGE
data-mysql-0       Bound    pvc-7785640d-623d-4dd6-90ff-0ce026254733   10Gi       RWO            openebs-hostpath   5d13h
pvc-demo           Bound    pv-nfs-demo                                5Gi        RWX                               104m
pvc-localpv-demo   Bound    local-pv-demo                              5Gi        RWO            local              7m45s

标签:pv,root,volumes,demo,PV,k8s,local
From: https://www.cnblogs.com/OpenSourceSite/p/17985999

相关文章

  • k8s之持久存储卷PV和PVC
    一、简介在前边文章中可以看到,Kubernetes中依赖后端存储包括:NFS、Ceph、块存储等存储设备实现数据的远程存储以及数据持久化。使用这些网络存储资源需要工程师对存储有一定的了解,并需要在工作节点上对接这些存储,对于非专业工程师造成了一些困扰。Kubernetes为了解决这些问题,定......
  • k8s - Promtail 重写日志标签名
    1.Promtail重写日志标签名默认Promtail会导出Pod中的一些元数据,可以通过访问Promtail的web界面,获取可以拿到的原始标签#获取promtailPod的PodIP地址kubectlgetpo-A-owide|greppromtail#输出#lokipromtail-s2c2x......
  • k8s之dns问题
    问题1:描述:pod新建好后,无法ping通域名(无论是外网域名还是内网域名),但是可以ping通IP(包含外网IP和内网IP),不包括kube-dns的IP,和pod同一网段IP可以ping通#cat/etc/resolv.confsearchkube-system.svc.cluster.localsvc.cluster.localcluster.localnameserver10.96.0.1......
  • git pull : 提示 can't lock ref 'xxxx' ,some local refs could not be update
    在执行gitpull操作时可能会遇到can'tlockref'xxxx',somelocalrefscouldnotbeupdate;tryrunninggitremotepruneorigintoremoveanyold,conflictingbranches。出现以上的问题的原因是本地所追踪的远程分支,与本地对应分支不同,导致的gitpull失败。如有一......
  • K8s 常用操作备忘
    #查看pod日志kubectllogs-f--tail100admin-center-server-cbd975547-fjlhs-nprod#查看pod重启前的日志kubectllogs-f-p--tail100admin-center-server-cbd975547-fjlhs-nprod#进入pod中kubectlexec-it-nnginxcfhy-prod-front-7d4d58fd4d-pj9lg--bash......
  • k8s 镜像
    目录k8s镜像镜像名称更新镜像镜像拉取策略默认镜像拉取策略ImagePullBackOff使用私有仓库配置节点向私有仓库进行身份验证config.json说明提前拉取镜像在Pod上指定ImagePullSecrets使用DockerConfig创建Secret使用案例k8s镜像镜像名称容器镜像通常会被赋予pause、ex......
  • k8s系列-minikube操作应用之安装篇
    Minikube是一个轻量级的Kubernetes集群,专为本地开发和测试环境设计。Minikube由Kubernetes社区维护,支持macOS、Linux和Windows等多种操作系统平台。它使用Kubernetes的官方稳定版本,并提供了大部分功能,包括容器编排管理、负载均衡、Ingress以及权限控制等高级特性。......
  • k8s~istio的安装与核心组件
    安装istio在线安装:https://istio.io/latest/docs/setup/getting-started/#download或者直接在这里下载:https://github.com/istio/istio/releases/tag/1.20.2$curl-Lhttps://istio.io/downloadIstio|ISTIO_VERSION=1.20.2TARGET_ARCH=x86_64sh-$cdistio-1.20.2$e......
  • 信息安全管理与评估整理-ipv6无状态地址自动配置
    无状态地址自动配置实验一1.接口下配置ipv6地址,关闭ra消息抑制,没有建立dhcp地址池只在接口下面将o位置一实验过程截图Wriershark抓包数据前缀信息A,O比特数据交换机配置Pc获取到的地址实验二2.接口下配置ipv6地址,关闭ra消息抑制,接口下未再进行其他配置Wireshark抓......
  • 信息安全管理与评估整理--ipv6有状态自动配置
    Ipv6地址池自动配置有状态以下是关闭ra消息抑制,配置前缀地址池方式,有状态自动配置l不自动获取网关,通过修改网卡—高级设置添加默认网关方式建立本地地址池调用l接口下调用通过wireshark抓包,需要将消息开启才能看到M,O为位比特前缀地址池信息A位与O位含义A比特位:f......