,StorageClass
根据pvc的要求,去自动创建符合要求的pv。
1、按照pvc创建pv
2、减少资源浪费

安装存储库
1, 部署存储类
https://github.com/helm/helm
# 下载helm(helm相当于kubernetes中的yum)
[root@k8s-m-01 ~]# wget https://get.helm.sh/helm-v3.5.3-linux-amd64.tar.gz
[root@k8s-m-01 ~]# tar -xf helm-v3.3.4-linux-amd64.tar.gz
[root@k8s-m-01 ~]# cd linux-amd64/
[root@k8s-m-01 ~]# for i in m1 n1 n2;do scp helm root@$i:/usr/local/bin/; done
helm 100% 38MB 103.4MB/s 00:00
helm 100% 38MB 105.7MB/s 00:00
helm 100% 38MB 73.5MB/s 00:00
测试安装 (出现内容代表安装成功)
[root@k8s-m-01 ~]# helm
The Kubernetes package manager
Common actions for Helm:
- helm search: search for charts
- helm pull: download a chart to your local directory to view
- helm install: upload the chart to Kubernetes
- helm list: list releases of charts
# 安装存储类
## 安装一个helm的存储库
[root@\ k8s-m-01~]# helm repo add ckotzbauer https://ckotzbauer.github.io/helm-charts
"ckotzbauer" has been added to your repositories
[root@\ k8s-m-01~]# helm repo list
NAME URL
ckotzbauer https://ckotzbauer.github.io/helm-charts
百度进入helm官网 --> 应用中心 --> 搜索nfs-client(点击收藏多的,如上图)
方式一:
1) 部署
[root@\ k8s-m-01~]# helm install nfs-client --set nfs.server=172.16.1.31 --set nfs.path=/nfs/v6 ckotzbauer/nfs-client-provisioner
NAME: nfs-client
LAST DEPLOYED: Fri Apr 9 17:13:46 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
2) 查看部署结果,会多出以下这个pod
[root@\ k8s-m-01~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
nfs-client-nfs-client-provisioner-7bf9895898-6lfmb 0/1 ContainerCreating 0 19s
[root@\ k8s-m-01~]# kubectl get storageclasses.storage.k8s.io
等同于
[root@\ k8s-m-01~]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client cluster.local/nfs-client-nfs-client-provisioner Delete Immediate true 57s
方式二:直接使用配置清单(推荐)
[root@\ k8s-m-01/opt/linux-amd64]# helm pull ckotzbauer/nfs-client-provisioner
[root@\ k8s-m-01/opt/linux-amd64]# ll
-rw-r--r--. 1 root root 4802 Apr 9 17:22 nfs-client-provisioner-1.0.2.tgz
[root@\ k8s-m-01/opt/linux-amd64]# tar xf nfs-client-provisioner-1.0.2.tgz
[root@\ k8s-m-01/opt/linux-amd64]# ll
drwxr-xr-x. 3 root root 77 Apr 9 17:22 nfs-client-provisioner
-rw-r--r--. 1 root root 4802 Apr 9 17:22 nfs-client-provisioner-1.0.2.tgz
[root@\ k8s-m-01/opt/linux-amd64]# cd nfs-client-provisioner/
[root@\ k8s-m-01/opt/linux-amd64/nfs-client-provisioner]# ll
-rw-r--r--. 1 root root 538 Nov 16 04:41 Chart.yaml
-rw-r--r--. 1 root root 5874 Nov 16 04:41 README.md
drwxr-xr-x. 2 root root 4096 Apr 9 17:22 templates
-rw-r--r--. 1 root root 1796 Nov 16 04:41 values.yaml
[root@\ k8s-m-01/opt/linux-amd64/nfs-client-provisioner]# vim values.yaml
#修改以下内容
nfs:
server: 172.16.1.51
path: /nfs/v6
storageClass:
accessModes: ReadWriteMany
reclaimPolicy: Retain
# 先卸载掉方式一安装的nfs-client
[root@\ k8s-m-01/opt/linux-amd64/nfs-client-provisioner]# helm uninstall nfs-client ./
[root@\ k8s-m-01/opt/linux-amd64/nfs-client-provisioner]# helm install nfs-client ./
NAME: nfs-client
LAST DEPLOYED: Fri Apr 9 17:28:43 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@\ k8s-m-01/opt/linux-amd64/nfs-client-provisioner]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nfs-client default 1 2021-04-09 17:28:43.309216084 +0800 CST deployed nfs-client-provisioner-1.0.2 3.1.0
测试存储类:
[root@\ k8s-m-01~]# vim sc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-discuz-pvc
spec:
storageClassName: nfs-client
accessModes:
- "ReadWriteMany"
resources:
requests:
storage: "18Gi"
[root@\ k8s-m-01~]# kubectl apply -f sc.yaml
persistentvolumeclaim/pv-discuz-pvc created
[root@\ k8s-m-01~]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pv-discuz-pvc Bound pvc-385e751f-7008-4a7d-b178-4d4adf411bb9 18Gi RWX nfs-client 8m5s
[root@\ k8s-m-01~]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-385e751f-7008-4a7d-b178-4d4adf411bb9 18Gi RWX Retain Bound default/pv-discuz-pvc nfs-client 8m48s
[root@\ k8s-m-01~]# ll /nfs/v6/
drwxrwxrwx. 2 root root 6 Apr 9 19:23 default-pv-discuz-pvc-pvc-385e751f-7008-4a7d-b178-4d4adf411bb9
测试部署discuz
[root@\ k8s-m-01~]# vim discuz-sv.yaml
apiVersion: v1
kind: Namespace
metadata:
name: mysql
---
kind: Service
apiVersion: v1
metadata:
name: mysql-svc
namespace: mysql
spec:
ports:
- port: 3306
targetPort: 3306
name: mysql
protocol: TCP
selector:
app: mysql
deploy: discuz
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-mysql-pvc
namespace: mysql
spec:
storageClassName: nfs-client
accessModes:
- "ReadWriteMany"
resources:
requests:
storage: "20Gi"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
namespace: mysql
spec:
selector:
matchLabels:
app: mysql
deploy: discuz
template:
metadata:
labels:
app: mysql
deploy: discuz
spec:
containers:
- name: mysql
image: mysql:5.7
livenessProbe:
tcpSocket:
port: 3306
readinessProbe:
tcpSocket:
port: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_DATABASE
value: "discuz"
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-data
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: pv-mysql-pvc
---
kind: Namespace
apiVersion: v1
metadata:
name: discuz
---
kind: Service
apiVersion: v1
metadata:
name: discuz-svc
namespace: discuz
spec:
clusterIP: None
ports:
- port: 80
targetPort: 80
name: http
selector:
app: discuz
deploy: discuz
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-discuz-pvc
namespace: discuz
spec:
storageClassName: nfs-client
accessModes:
- "ReadWriteMany"
resources:
requests:
storage: "18Gi"
---
kind: Deployment
apiVersion: apps/v1
metadata:
name: discuz-deployment
namespace: discuz
spec:
replicas: 5
selector:
matchLabels:
app: discuz
deploy: discuz
template:
metadata:
labels:
app: discuz
deploy: discuz
spec:
containers:
- name: php
image: alvinos/php:wordpress-v2
livenessProbe:
tcpSocket:
port: 9000
readinessProbe:
tcpSocket:
port: 9000
volumeMounts:
- mountPath: /usr/share/nginx/html
name: discuz-data
- name: nginx
image: alvinos/nginx:wordpress-v2
livenessProbe:
httpGet:
port: 80
path: /
readinessProbe:
httpGet:
port: 80
path: /
volumeMounts:
- mountPath: /usr/share/nginx/html
name: discuz-data
volumes:
- name: discuz-data
persistentVolumeClaim:
claimName: pv-discuz-pvc
---
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: discuz-ingress
namespace: discuz
spec:
tls:
- hosts:
- www.discuz.cluster.local.com
secretName: discuz-secret
rules:
- host: www.discuz.cluster.local.com
http:
paths:
- backend:
serviceName: discuz-svc
servicePort: 80
[root@\ k8s-m-01~]# kubectl apply -f discuz-sv.yaml
[root@\ k8s-m-01~]# kubectl get pods -n discuz
NAME READY STATUS RESTARTS AGE
discuz-deployment-64777f6694-988zn 2/2 Running 8 33m
PS:
[root@\ k8s-m-01~]# kubectl get sc -n discuz
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client cluster.local/nfs-client-nfs-client-provisioner Retain Immediate true 134m
[root@\ k8s-m-01~]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client cluster.local/nfs-client-nfs-client-provisioner Retain Immediate true 134m
# 以上可以看出pc是集群级资源
[root@\ k8s-m-01~]# cd /nfs/v6/
[root@\ k8s-m-01/nfs/v6]# ll
drwxrwxrwx. 2 root root 6 Apr 9 19:50 discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9
drwxrwxrwx. 6 polkitd root 4096 Apr 9 19:50 mysql-pv-mysql-pvc-pvc-26db2bfc-4c6a-49eb-81e8-5510a4c77188
[root@\ k8s-m-01/nfs/v6]# cd mysql-pv-mysql-pvc-pvc-26db2bfc-4c6a-49eb-81e8-5510a4c77188/
[root@\ k8s-m-01/nfs/v6/mysql-pv-mysql-pvc-pvc-26db2bfc-4c6a-49eb-81e8-5510a4c77188]# ll
-rw-r-----. 1 polkitd input 56 Apr 9 19:50 auto.cnf
-rw-------. 1 polkitd input 1676 Apr 9 19:50 ca-key.pem
-rw-r--r--. 1 polkitd input 1112 Apr 9 19:50 ca.pem
-rw-r--r--. 1 polkitd input 1112 Apr 9 19:50 client-cert.pem
-rw-------. 1 polkitd input 1676 Apr 9 19:50 client-key.pem
drwxr-x---. 2 polkitd input 20 Apr 9 19:50 discuz
-rw-r-----. 1 polkitd input 1359 Apr 9 19:50 ib_buffer_pool
-rw-r-----. 1 polkitd input 79691776 Apr 9 19:50 ibdata1
-rw-r-----. 1 polkitd input 50331648 Apr 9 19:50 ib_logfile0
-rw-r-----. 1 polkitd input 50331648 Apr 9 19:50 ib_logfile1
-rw-r-----. 1 polkitd input 12582912 Apr 9 19:51 ibtmp1
drwxr-x---. 2 polkitd input 4096 Apr 9 19:50 mysql
drwxr-x---. 2 polkitd input 8192 Apr 9 19:50 performance_schema
-rw-------. 1 polkitd input 1676 Apr 9 19:50 private_key.pem
-rw-r--r--. 1 polkitd input 452 Apr 9 19:50 public_key.pem
-rw-r--r--. 1 polkitd input 1112 Apr 9 19:50 server-cert.pem
-rw-------. 1 polkitd input 1680 Apr 9 19:50 server-key.pem
drwxr-x---. 2 polkitd input 8192 Apr 9 19:50 sys
# discuz目录里没有内容
[root@\ k8s-m-01/nfs/v6]# cd discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9/
[root@\ k8s-m-01/nfs/v6/discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9]# ll
total 0
# 把discuz包里的upload目录复制到挂载的当前文件夹
[root@\ k8s-m-01/nfs/v6/discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9]# tar -xf /opt/discuz/discuz.tar.gz -C ./
[root@\ k8s-m-01/nfs/v6/discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9]# ll
total 4
drwxr-xr-x. 12 root root 4096 Jul 27 2017 upload
[root@\ k8s-m-01/nfs/v6/discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9]# mv upload/* .
[root@\ k8s-m-01/nfs/v6/discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9]# ll
total 76
-rw-r--r--. 1 root root 2739 Jul 27 2017 admin.php
drwxr-xr-x. 11 root root 163 Jul 27 2017 api
-rw-r--r--. 1 root root 727 Jul 27 2017 api.php
drwxr-xr-x. 2 root root 23 Jul 27 2017 archiver
drwxr-xr-x. 2 root root 90 Jul 27 2017 config
-rw-r--r--. 1 root root 922 Jul 27 2017 connect.php
-rw-r--r--. 1 root root 253 Jul 27 2017 cp.php
-rw-r--r--. 1 root root 106 Jul 27 2017 crossdomain.xml
drwxr-xr-x. 12 root root 202 Jul 27 2017 data
-rw-r--r--. 1 root root 5558 Jul 27 2017 favicon.ico
-rw-r--r--. 1 root root 2242 Jul 27 2017 forum.php
-rw-r--r--. 1 root root 821 Jul 27 2017 group.php
-rw-r--r--. 1 root root 1290 Jul 27 2017 home.php
-rw-r--r--. 1 root root 5669 Jul 27 2017 index.php
drwxr-xr-x. 5 root root 64 Jul 27 2017 install
-rw-r--r--. 1 root root 1025 Jul 27 2017 member.php
-rw-r--r--. 1 root root 2462 Jul 27 2017 misc.php
-rw-r--r--. 1 root root 1757 Jul 27 2017 plugin.php
-rw-r--r--. 1 root root 988 Jul 27 2017 portal.php
-rw-r--r--. 1 root root 582 Jul 27 2017 robots.txt
-rw-r--r--. 1 root root 1161 Jul 27 2017 search.php
drwxr-xr-x. 10 root root 168 Jul 27 2017 source
drwxr-xr-x. 6 root root 72 Jul 27 2017 static
drwxr-xr-x. 3 root root 38 Jul 27 2017 template
drwxr-xr-x. 7 root root 106 Jul 27 2017 uc_client
drwxr-xr-x. 14 root root 256 Jul 27 2017 uc_server
drwxr-xr-x. 2 root root 6 Apr 9 20:12 upload
-rw-r--r--. 1 root root 1682 Jul 27 2017 userapp.php

当前状态不可写
# 增加挂载目录写权限
[root@\ k8s-m-01/nfs/v6/discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9]# chmod -R o+w /nfs/v6/discuz-pv-discuz-pvc-pvc-de1c756d-4490-41fa-8ace-b57542bbb8b9/

image.png
网友评论