企业级容器技术 k8s volumes配置管理

nfs方式挂载卷

首先创建一个nfs(可以在私有仓库的虚拟机,或者新虚拟机)

[root@passyt ~]# mkdir /nfs
[root@passyt nfs]# yum install nfs-utils.x86_64 -y
[root@passyt nfs]# vim /etc/exports  ##编写nfs挂载文件
/nfs    *(rw,sync,no_root_squash)
[root@passyt nfs]# systemctl enable --now rpcbind
[root@passyt nfs]# systemctl enable --now nfs
[root@passyt nfs]# showmount -e ##显示远程挂载目录
Export list for passyt.com:
/nfs *

在server1上编写yaml文件

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - name: test-container
    image: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: test-volume
  volumes:
  - name: test-volume
    nfs:
      server: 192.168.122.3
      path: /nfs

将镜像nginx中的默认发布目录挂载到了/nfs目录中,我们可以使用ip地址进行访问。

[kubeadm@server1 nfs]$ kubectl get pod -o wide
NAME      READY   STATUS    RESTARTS   AGE     IP            NODE      NOMINATED NODE   READINESS GATES
test-pd   1/1     Running   0          3m19s   10.244.2.39   server3   <none>           <none>
[kubeadm@server1 nfs]$ curl 10.244.2.39
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.17.8</center>
</body>
</html>

但是这个时侯我们发现这个访问被拒绝掉了,因为将nginx的目录挂载到了一个目录中,/nfs目录将默认发布目录给覆盖掉了,所以没有发布页面,访问就被拒绝掉了。那如何添加发布页面,直接到私有仓库下的nfs目录进行添加即可。

[root@passyt nfs]# echo passyt.com > index.html

添加完成再进行访问。

[kubeadm@server1 nfs]$ curl 10.244.2.39
passyt.com

这样就可以访问的到了。

pv 持久卷

pv是集群内由管理员提供的网络存储的一部分。pv也是一种资源,一种卷的插件,但是生命周期和pod是相互独立的。
使用pv我们需要pvc(持久卷声明),和pod类似,pod使用node资源,pvc使用pv资源。
pv提供静态和动态两种方式。

创建静态pv

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv1
spec:
  capacity:              ##控制容量
    storage: 1Gi
  volumeMode: Filesystem    ##卷的模式
  accessModes:              ##访问方式
    - ReadWriteOnce   ##一个人可以读写,还有ReadWriteMany多个人读写,ReadOnlyMany多人只读
  persistentVolumeReclaimPolicy: Recycle  ##回收策略,Recycle再利用,Delete删除关联的储存资源,Retain保留手动回收
  storageClassName: nfs
  nfs:
    path: /nfs
    server: 192.168.122.3

编写完成后就可以封装为一个pv了。
查看pv

[kubeadm@server1 nfs]$ kubectl describe pv nfs-pv1
Name:            nfs-pv1
Labels:          <none>
Annotations:     <none>
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    nfs
Status:          Available
Claim:           
Reclaim Policy:  Recycle
Access Modes:    RWO
VolumeMode:      Filesystem
Capacity:        1Gi
Node Affinity:   <none>
Message:         
Source:
    Type:      NFS (an NFS mount that lasts the lifetime of a pod)
    Server:    192.168.122.3
    Path:      /nfs
    ReadOnly:  false
Events:        <none>

再多创建几个pv

[kubeadm@server1 nfs]$ kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
nfs-pv1   1Gi        RWO            Recycle          Available           nfs                     39h
nfs-pv2   2Gi        RWX            Retain           Available           nfs                     39h
nfs-pv3   5Gi        ROX            Delete           Available           nfs                     39h
##Available表示空闲资源,未绑定pvc
##Bound绑定给了某个pv
##Released pvc已经删除但是pv还再回收
##Failed表示回收失败

创建pvc
编写yaml文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc1
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: nfs
  resources:
    requests:
      storage: 1Gi

创建pvc时,从上面的文件中筛选条件,筛选模式,大小等,只有都满足了才可以进行绑定创建。

[kubeadm@server1 nfs]$ kubectl get pvc
NAME   STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
pvc1   Bound    nfs-pv1   1Gi        RWO            nfs            2m25s
[kubeadm@server1 nfs]$ kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM          STORAGECLASS   REASON   AGE
nfs-pv1   1Gi        RWO            Recycle          Bound       default/pvc1   nfs                     39h

pod挂载pv
apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - name: test-container
    image: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: test-volume
  volumes:
  - name: test-volume       ##上面没什么,主要下面挂接,可以直接指定pvc的名称
    persistentVolumeClaim:
      claimName: pvc1

pod使用pvc去识别pv,对pv进行绑定应用

你可能感兴趣的:(企业级容器技术 k8s volumes配置管理)