一. 在集群上使用资源配置文件编排运行 demoapp,并使用 Service 完成 Pod 发现和服务发布。
#demoapp yaml配置文件
root@k8s-master01:~/20230206# cat demoapp.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: demoapp
spec:
replicas: 2
selector:
matchLabels:
app: demoapp
template:
metadata:
labels:
app: demoapp
spec:
containers:
- name: demoapp
image: ikubernetes/demoapp:v1.0
ports:
- containerPort: 80
-
#demoapp svc yaml服务配置文件
root@k8s-master01:~/20230206# cat demoapp_svc.yaml
apiVersion: v1
kind: Service
metadata:
name: demoapp
spec:
selector:
app: demoapp
type: NodePort
ports:
- port: 8080
targetPort: 80
nodePort: 30080
#创建pods,service服务命令
root@k8s-master01:~/20230206# kubectl create -f .
deployment.apps/demoapp created
#查看创建的pods
root@k8s-master01:~/20230206# kubectl get pods
NAME READY STATUS RESTARTS AGE
demoapp-687765d54c-q62l7 1/1 Running 0 2m28s
demoapp-687765d54c-z2csq 1/1 Running 0 2m28s
#查看创建的svc服务
root@k8s-master01:~/20230206# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demoapp NodePort 10.97.242.187 <none> 8080:30080/TCP 11s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d
#登录node节点IP,端口:30080,查看运行的demoapp服务
二. 要求以配置文件的方式,在集群上编排运行 nginx、wordpress 和 mysql,并使用 Service 完成 Pod 发现和服务发布。
提示:使用 Secret 的方式的为 wordpress 指定要使用 mysql 服务器地址、数据库名称、用户名称和用户密码;
nginx Service:定义为 NodePort 类型;
nginx 的配置文件:要通过 ConfigMap 提供;
wordpress 和 mysql 的数据要保存于 PVC 上。
#mysql secret配置文件,创建secret资源
root@k8s-master01:~/learning-k8s/wordpress/mysql# cat 01-secret-mysql.yaml
apiVersion: v1
kind: Secret
metadata:
creationTimestamp: null
name: mysql-user-pass
data:
database.name: d3BkYg==
root.password: TUBnZUVkdQ==
user.name: d3B1c2Vy
user.password: bWFnZURVLmMwbQ==
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl create -f 01-secret-mysql.yaml
secret/mysql-user-pass created
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl get secret
NAME TYPE DATA AGE
mysql-secret Opaque 4 101m
mysql-user-pass Opaque 4 9s
nginx-ssl-secret kubernetes.io/tls 2 173m
#mysql pvc配置文件,创建pvc资源
root@k8s-master01:~/learning-k8s/wordpress/mysql# cat 02-pvc-mysql-data.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-data
spec:
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: nfs-csi
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl create -f 02-pvc-mysql-data.yaml
persistentvolumeclaimroot@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-data Bound pvc-5c08567b-fcc9-4fd7-a0d2-9358c2f4c0ed 10Gi RWO nfs-csi 21h
pvc-nfs-dynamic Bound pvc-579e0432-afb7-4459-a433-2cb24632e89a 10Gi RWX nfs-csi 2d21hmysql-data created
#mysql service配置文件,创建SVC资源
root@k8s-master01:~/learning-k8s/wordpress/mysql# cat 03-service-mysql.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: mysql
name: mysql
spec:
ports:
- name: mysql
port: 3306
protocol: TCP
targetPort: 3306
selector:
app: mysql
type: ClusterIP
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl create -f 03-service-mysql.yaml
service/mysql created
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
mysql ClusterIP 10.102.182.97 <none> 3306/TCP 21h
#引用mysql secret配置,mysql deployment的配置文件,创建deployment资源
root@k8s-master01:~/learning-k8s/wordpress/mysql# cat 04-deploy-mysql.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql
name: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:8.0
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: root.password
- name: MYSQL_USER
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: user.name
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: user.password
- name: MYSQL_DATABASE
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: database.name
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql/
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql-data
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl create -f 04-deploy-mysql.yaml
deployment.apps/mysql created
root@k8s-master01:~/learning-k8s/wordpress# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
mysql 1/1 1 1 21h
#进入到创建的mysql pods里,查看数据库env配置,正常
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl get pods
NAME READY STATUS RESTARTS AGE
configmaps-env-demo 1/1 Running 2 (22h ago) 46h
configmaps-volume-demo 1/1 Running 2 (74m ago) 46h
mysql-97b69dcc8-j7f7r 1/1 Running 1 (74m ago) 22h
secrets-env-demo 1/1 Running 1 (22h ago) 23h
secrets-volume-demo 1/1 Running 1 (74m ago) 23h
volumes-nfs-csi-demo 1/1 Running 3 (22h ago) 2d21h
wordpress-664cfb496b-v22cn 1/1 Running 0 6m1s
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl exec -it mysql-97b69dcc8-j7f7r -- /bin/sh
sh-4.4# env
MYSQL_PASSWORD=mageDU.c0m
MYSQL_PORT_3306_TCP_PROTO=tcp
HOSTNAME=mysql-97b69dcc8-j7f7r
MYSQL_DATABASE=wpdb
MYSQL_SERVICE_PORT_MYSQL=3306
KUBERNETES_PORT_443_TCP_PROTO=tcp
MYSQL_SERVICE_PORT=3306
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
MYSQL_ROOT_PASSWORD=M@geEdu
MYSQL_PORT=tcp://10.102.182.97:3306
KUBERNETES_PORT=tcp://10.96.0.1:443
MYSQL_PORT_3306_TCP=tcp://10.102.182.97:3306
#wordpress service配置文件,创建SVC资源
root@k8s-master01:~/learning-k8s/wordpress/wordpress# cat 01-service-wordpress.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: wordpress
name: wordpress
spec:
ports:
- name: fpm
port: 9000
protocol: TCP
targetPort: 9000
selector:
app: wordpress
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl create -f 01-service-wordpress.yaml
service/wordpress created
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
mysql ClusterIP 10.102.182.97 <none> 3306/TCP 21h
wordpress ClusterIP 10.110.198.82 <none> 9000/TCP 15s
#wordpress pvc配置文件,创建PVC资源
root@k8s-master01:~/learning-k8s/wordpress/wordpress# cat 02-pvc-wordpress-app-data.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wordpress-app-data
spec:
volumeMode: Filesystem
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: nfs-csi
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl create -f 02-pvc-wordpress-app-data.yaml
persistentvolumeclaim/wordpress-app-data created
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-data Bound pvc-5c08567b-fcc9-4fd7-a0d2-9358c2f4c0ed 10Gi RWO nfs-csi 22h
pvc-nfs-dynamic Bound pvc-579e0432-afb7-4459-a433-2cb24632e89a 10Gi RWX nfs-csi 2d21h
wordpress-app-data Bound pvc-68c167ab-30c0-4e62-83be-9ea876b9c3d3 10Gi RWX nfs-csi 18s
#wordpress deployment配置文件,创建deployment资源。注意WORDPRESS_DB_HOST,填mysql的service 名字或IP地址
root@k8s-master01:~/learning-k8s/wordpress/wordpress# cat 03-deployment-wordpress.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: wordpress
name: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- image: wordpress:5.8-fpm
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: mysql
- name: WORDPRESS_DB_USER
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: user.name
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: user.password
- name: WORDPRESS_DB_NAME
valueFrom:
secretKeyRef:
name: mysql-user-pass
key: database.name
volumeMounts:
- name: wordpress-app-data
mountPath: /var/www/html/
volumes:
- name: wordpress-app-data
persistentVolumeClaim:
claimName: wordpress-app-data
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl create -f 03-deployment-wordpress.yaml
deployment.apps/wordpress created
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
mysql 1/1 1 1 22h
wordpress 0/1 1 0 8s
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-97b69dcc8-j7f7r 1/1 Running 0 3m26s
secrets-env-demo 1/1 Running 0 108m
secrets-volume-demo 1/1 Running 0 60m
volumes-nfs-csi-demo 1/1 Running 2 (24h ago) 47h
#验证wordpress容器里,环境配置和mysql容器里环境配置一致
root@k8s-master01:~/learning-k8s/wordpress/mysql# kubectl exec -it mysql-97b69dcc8-j7f7r -- /bin/sh
sh-4.4# env
MYSQL_PASSWORD=mageDU.c0m
MYSQL_PORT_3306_TCP_PROTO=tcp
HOSTNAME=mysql-97b69dcc8-j7f7r
MYSQL_DATABASE=wpdb
MYSQL_SERVICE_PORT_MYSQL=3306
KUBERNETES_PORT_443_TCP_PROTO=tcp
MYSQL_SERVICE_PORT=3306
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
MYSQL_ROOT_PASSWORD=M@geEdu
MYSQL_PORT=tcp://10.102.182.97:3306
KUBERNETES_PORT=tcp://10.96.0.1:443
MYSQL_PORT_3306_TCP=tcp://10.102.182.97:3306
PWD=/
HOME=/root
MYSQL_MAJOR=8.0
GOSU_VERSION=1.16
MYSQL_USER=wpuser
MYSQL_PORT_3306_TCP_PORT=3306
KUBERNETES_SERVICE_PORT_HTTPS=443
MYSQL_PORT_3306_TCP_ADDR=10.102.182.97
KUBERNETES_PORT_443_TCP_PORT=443
MYSQL_VERSION=8.0.32-1.el8
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
configmaps-env-demo 1/1 Running 2 (22h ago) 47h 10.244.2.46 k8s-node02 <none> <none>
configmaps-volume-demo 1/1 Running 2 (124m ago) 47h 10.244.3.48 k8s-node03 <none> <none>
mysql-97b69dcc8-j7f7r 1/1 Running 1 (124m ago) 22h 10.244.2.48 k8s-node02 <none> <none>
secrets-env-demo 1/1 Running 1 (22h ago) 24h 10.244.2.45 k8s-node02 <none> <none>
secrets-volume-demo 1/1 Running 1 (124m ago) 23h 10.244.3.47 k8s-node03 <none> <none>
volumes-nfs-csi-demo 1/1 Running 3 (22h ago) 2d22h 10.244.3.49 k8s-node03 <none> <none>
wordpress-664cfb496b-v22cn 1/1 Running 0 55m 10.244.3.50 k8s-node03 <none> <none>
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl exec -it wordpress-664cfb496b-v22cn -- /bin/sh
#env
WORDPRESS_DB_USER=wpuser
WORDPRESS_PORT_9000_TCP_PORT=9000
WORDPRESS_PORT_9000_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
MYSQL_PORT_3306_TCP_ADDR=10.102.182.97
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
WORDPRESS_SERVICE_HOST=10.110.198.82
MYSQL_PORT_3306_TCP_PORT=3306
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
MYSQL_SERVICE_HOST=10.102.182.97
MYSQL_PORT_3306_TCP_PROTO=tcp
MYSQL_SERVICE_PORT_MYSQL=3306
WORDPRESS_DB_NAME=wpdb
WORDPRESS_PORT_9000_TCP=tcp://10.110.198.82:9000
WORDPRESS_SERVICE_PORT=9000
WORDPRESS_PORT=tcp://10.110.198.82:9000
MYSQL_PORT=tcp://10.102.182.97:3306
MYSQL_SERVICE_PORT=3306
MYSQL_PORT_3306_TCP=tcp://10.102.182.97:3306
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_SERVICE_HOST=10.96.0.1
#验证wordpress 和 mysql 的数据保存于 PVC 上,创建pvc后,PV自动创建,并且已匹配
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl get pvc -o wide
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE VOLUMEMODE
mysql-data Bound pvc-5c08567b-fcc9-4fd7-a0d2-9358c2f4c0ed 10Gi RWO nfs-csi 23h Filesystem
pvc-nfs-dynamic Bound pvc-579e0432-afb7-4459-a433-2cb24632e89a 10Gi RWX nfs-csi 2d22h Filesystem
wordpress-app-data Bound pvc-68c167ab-30c0-4e62-83be-9ea876b9c3d3 10Gi RWX nfs-csi 72m Filesystem
root@k8s-master01:~/learning-k8s/wordpress/wordpress# kubectl get pv -o wide
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE VOLUMEMODE
pvc-579e0432-afb7-4459-a433-2cb24632e89a 10Gi RWX Delete Bound default/pvc-nfs-dynamic nfs-csi 2d22h Filesystem
pvc-5c08567b-fcc9-4fd7-a0d2-9358c2f4c0ed 10Gi RWO Delete Bound default/mysql-data nfs-csi 23h Filesystem
pvc-68c167ab-30c0-4e62-83be-9ea876b9c3d3 10Gi RWX Delete Bound default/wordpress-app-data nfs-csi 72m Filesystem
#nginx configmap配置文件,创建cm资源
root@k8s-master01:~/learning-k8s/wordpress/nginx# cat 01-configmap-nginx-conf.yaml
apiVersion: v1
data:
nginx.conf: |
server {
listen 80;
listen [::]:80;
server_name magedu.com www.magedu.com;
index index.php index.html index.htm;
root /var/www/html;
location ~ /.well-known/acme-challenge {
allow all;
root /var/www/html;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off; access_log off;
}
location = /robots.txt {
log_not_found off; access_log off; allow all;
}
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}
kind: ConfigMap
metadata:
creationTimestamp: null
name: nginx-conf
root@k8s-master01:~/learning-k8s/wordpress/nginx# kubectl create -f 01-configmap-nginx-conf.yaml
configmap/nginx-conf created
root@k8s-master01:~/learning-k8s/wordpress/nginx#
root@k8s-master01:~/learning-k8s/wordpress/nginx# kubectl get cm
NAME DATA AGE
demoapp-cfg 2 2d2h
demoapp-config 2 2d
kube-root-ca.crt 1 11d
nginx-cfg-001 2 2d2h
nginx-conf 1 7s
nginx-config-files 3 2d2h
nginx-sslvhosts-confs 3 24h
#nginx service配置文件,创建service资源
root@k8s-master01:~/learning-k8s/wordpress/nginx# cat 02-service-nginx.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx
spec:
ports:
- name: http-80
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: NodePort
externalIPs:
- 172.29.100.100
root@k8s-master01:~/learning-k8s/wordpress/nginx# kubectl create -f 02-service-nginx.yaml
service/nginx created
root@k8s-master01:~/learning-k8s/wordpress/nginx# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 11d
mysql ClusterIP 10.102.182.97 <none> 3306/TCP 23h
nginx NodePort 10.96.100.121 192.168.6.100 80:32177/TCP 9s
wordpress ClusterIP 10.107.196.134 <none> 9000/TCP 5m37s
#nginx deployment配置文件,创建deployment资源
root@k8s-master01:~/learning-k8s/wordpress/nginx# cat 03-deployment-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: nginx
spec:
volumes:
- name: ngxconf
configMap:
name: nginx-conf
- name: wordpress-app-data
persistentVolumeClaim:
claimName: wordpress-app-data
containers:
- image: nginx:1.20-alpine
name: nginx
volumeMounts:
- name: ngxconf
mountPath: /etc/nginx/conf.d/
- name: wordpress-app-data
mountPath: /var/www/html/
root@k8s-master01:~/learning-k8s/wordpress/nginx# ls
01-configmap-nginx-conf.yaml 02-service-nginx.yaml 03-deployment-nginx.yaml
root@k8s-master01:~/learning-k8s/wordpress/nginx# kubectl create -f 03-deployment-nginx.yaml
deployment.apps/nginx created
root@k8s-master01:~/learning-k8s/wordpress/nginx# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
mysql 1/1 1 1 23h
nginx 0/1 1 0 13s
wordpress 1/1 1 1 77m
三. pvc 依赖的 pv 要动态置备
1.在Kubernetes集群上部署NFS
Server
运行如下命令,在Kubernetes集群上部署一个可用的Nlocal install(基于当前项目的部署,其默认配置已经修改dnsPolicy)FS服务;
kubectl create namespace nfs
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/deploy/example/nfs-provisioner/nfs-server.yaml --namespace nfs
2.Install NFS CSI Driver on a kubernetes cluster
local install(基于当前项目的部署,其默认配置已经修改dnsPolicy)
git clone https://github.com/iKubernetes/learning-k8s.git
cd learning-k8s
kubectl apply -f csi-driver-nfs/deploy/02-csi-driver-nfs-4.1/
#check pods status:
root@k8s-master01:~/learning-k8s/csi-driver-nfs/deploy# kubectl -n kube-system get pod -o wide -l 'app in (csi-nfs-node,csi-nfs-controller)'
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
csi-nfs-controller-67dd4499b5-tz22p 3/3 Running 0 6m30s 192.168.6.102 k8s-node02 <none> <none>
csi-nfs-node-5wvvn 3/3 Running 0 6m30s 192.168.6.100 k8s-master01 <none> <none>
csi-nfs-node-9q8dc 3/3 Running 0 6m30s 192.168.6.102 k8s-node02 <none> <none>
csi-nfs-node-jf5bs 3/3 Running 0 6m30s 192.168.6.103 k8s-node03 <none> <none>
csi-nfs-node-pltmn 3/3 Running 0 6m30s 192.168.6.101 k8s-node01 <none> <none>
3.Storage Class Usage (Dynamic Provisioning)
#Create a storage class
change server, share with your existing NFS server address and share name
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
#server: nfs-server.default.svc.cluster.local
server: nfs-server.nfs.svc.cluster.local
share: /
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- hard
- nfsvers=4.1
root@k8s-master01:~/learning-k8s/csi-driver-nfs# kubectl create -f nfs-csi-storageclass.yaml
storageclass.storage.k8s.io/nfs-csi created
#查看storage class
root@k8s-master01:~/learning-k8s/csi-driver-nfs# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-csi nfs.csi.k8s.io Delete Immediate false 14s
root@k8s-master01:~/learning-k8s/csi-driver-nfs# ls
deploy nfs-csi-storageclass.yaml nfs-pvc-dynamic.yaml README.md volumes-nfs-demo.yaml
#创建一个PVC进行测试
root@k8s-master01:~/learning-k8s/csi-driver-nfs# kubectl create -f nfs-pvc-dynamic.yaml
persistentvolumeclaim/pvc-nfs-dynamic created
root@k8s-master01:~/learning-k8s/csi-driver-nfs# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-nfs-dynamic Bound pvc-579e0432-afb7-4459-a433-2cb24632e89a 10Gi RWX nfs-csi 9s
root@k8s-master01:~/learning-k8s/csi-driver-nfs# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-579e0432-afb7-4459-a433-2cb24632e89a 10Gi RWX Delete Bound default/pvc-nfs-dynamic nfs-csi 12s
#Create a deployment
root@k8s-master01:~/learning-k8s/csi-driver-nfs# kubectl create -f volumes-nfs-demo.yaml
pod/volumes-nfs-csi-demo created
root@k8s-master01:~/learning-k8s/csi-driver-nfs# kubectl get pods
NAME READY STATUS RESTARTS AGE
volumes-nfs-csi-demo 1/1 Running 0 69s