您现在的位置是:主页 > 数据库技术 > 数据库技术

kubernetes中怎么验证PV和PVC

IDCBT2021-12-31服务器技术人已围观

简介这篇文章主要讲解了“kubernetes中怎么验证PV和PVC”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“kubernetes中怎么验证PV和PVC”

这篇文章主要讲解了“kubernetes中怎么验证PV和PVC”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“kubernetes中怎么验证PV和PVC”吧!

k8s中用PV和PVC分离了存储和使用存储

pv是存储空间,由StorageClass来分类

pvc是存储卷声明,代表用户使用存储的请求,包括空间大小、特定的访问模式等

PVC可作为数据卷的一种,被挂在到容器或容器组中使用

有静态和动态两种方式为PVC提供PV

static: 人为创建好一系列PV,它们包含实际存储的具体信息,且对集群用户可见

dynamic: 在配置有合适的StorageClass且PVC关联了该StorageClass的情况下,k8s集群可为应用程序动态创建PV

当用户创建了一个PVC,k8s将立刻为其匹配一个PV,并将二者绑定在一起。PVC和PV之间的绑定关系是一对一的映射。

若没有合适的PV,PVC将停留在unbound状态,直到有合适的PV可用

这里用NFS服务给nginx提供网页存储,验证PV和PVC
环境是,k8s 1.20.1,master节点上安装nfs服务端,其他node节点安装nfs客户端

一、 ubuntu 18.04上安装nfs

server端:

apt install nfs-kernel-server

创建共享目录

mkdir -p /mnt/nfs

vi /etc/exports

/mnt/nfs *(rw,sync,no_root_squash)

重启服务

systemctl rpcbind restart

systemctl nfs-server status

确认NFS服务器启动成功:

rpcinfo -p

检查 NFS 服务器是否挂载我们想共享的目录/mnt/nfs/

exportfs

showmount -e localhost #显示输出列表

client端:

apt install nfs-common

mount -t nfs -o vers=4.1 192.168.33.10:/mnt/nfs /data

查看服务端共享目录

showmount -e 192.168.33.10

客户端查询挂载情况

df -h

rpcinfo -p 192.168.33.10

查看NFS版本

服务器端使用:nfsstat -s

客户端使用:nfsstat -c

二、  k8s上配置验证PV、PVC

配置文件

vi pv-lb-nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-web
spec:
  selector:
    matchLabels:
      run: nginx-web
  replicas: 1
  template:
    metadata:
      labels:
        run: nginx-web
    spec:
      containers:
      - name: nginx-web
        image: nginx
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: /etc/nginx/conf.d  # nginx容器中的默认配置目录
          name: configfile   #自定义名称1
        - mountPath: /usr/share/nginx/html  # nginx容器中的网页目录
          name: webroot  #自定义名称2
      volumes:
      - name: configfile #须和上面自定义名称1一致
        configMap:
          name: nginx-config #指定configmap的名称
      - name: webroot #须和上面自定义名称2一致
        persistentVolumeClaim:
          claimName: nfs-pvc  #指定pvc的名称
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-web
  labels:
    run: nginx-web
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
    name: http
  selector:
    run: nginx-web
--- #声明pv详细设置
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: 192.168.33.10
    path: "/mnt/nfs"
---  #声明pv需求
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
---     #声明configmap用于nginx配置
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  nginx.conf: |-
    server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    }

标签:

很赞哦! ()

本栏推荐