k8s中的nfs的部署实验(使用pv、pvc)
实验准备
五台主机
master 192.168.220.104
node-1 192.168.220.105
node-2 192.168.220.106
node-3 192.168.220.107
nfs-web 192.168.220.100
1、每台主机上都要安装好nfs
yum install -y nfs-utils
2、在nfs-web数据共享主机上创建nfs共享文件
[root@nfs ~]# mkdir -p /k8s-volume-nfs/web
[root@nfs ~]# cd /k8s-volume-nfs/web
[root@nfs web]# pwd
/k8s-volume-nfs/web
[root@nfs web]# echo "welcome zjx" >index.html
[root@nfs web]# cat index.html
welcome zjx
3、编写PersistentVolume文件
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-nfs
labels:
type: pv-nfs
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
server: 192.168.220.100
path: "/k8s-volume-nfs/web"
readOnly: false
17:03:59[root@master ~]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv-nfs 5Gi RWX Retain Bound default/pv-claim-nfs nfs 3d2h
4、编写PersistentVolumeClaim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-claim-nfs
spec:
storageClassName: nfs
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
17:04:10[root@master ~]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pv-claim-nfs Bound pv-nfs 5Gi RWX nfs 3d2h
5、编写deploy部署pod的yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nfs
labels:
app: deploy-nfs
spec:
replicas: 3
selector:
matchLabels:
app: deploy-nfs
template:
metadata:
labels:
app: deploy-nfs
spec:
volumes:
- name: deploy-pv-storage
persistentVolumeClaim:
claimName: pv-claim-nfs
containers:
- name: nginx-nfs
image: nginx
ports:
- containerPort: 80
name: "http-sever"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: deploy-pv-storage
17:04:12[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
deploy-nfs-7947b9cb58-9pcx6 1/1 Running 0 33m
deploy-nfs-7947b9cb58-vvgkn 1/1 Running 0 33m
deploy-nfs-7947b9cb58-vw7fb 1/1 Running 0 33m
6、编写service文件进行service暴露
apiVersion: v1
kind: Service
metadata:
name: nginx-nfs
labels:
app: deploy-nfs
spec:
type: NodePort
ports:
- port: 8090
targetPort: 80
protocol: TCP
name: http
selector:
app: deploy-nfs
17:03:24[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 10d
nginx-nfs NodePort 10.1.226.70 <none> 8090:30565/TCP 2d22h
7、查看网页192.168.220.104:30565,此30565是对外暴露的服务端口
实验结果可随 /k8s-volume-nfs/web 下index.html文件的改变而改变
若要学习pv和pvc可查看官方文档学习:https://kubernetes.io/zh-cn/docs/home/