Model

1. namespace
Create
vim namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: nextcloud
Apply
kubectl apply -f namespace.yaml
Check
# kubectl get ns
NAME STATUS AGE
kube-system Active 4d
default Active 4d
nextcloud Active 1m
2. pv
Create
vim pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-nextcloud
labels:
name: nfs-nextcloud
spec:
capacity:
storage: 500G
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
server: 192.168.100.255 <---- input your nfs ip
path: "/mnt/HDD/nextcloud"
Apply
kubectl apply -f pv.yaml
Check
# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
nfs-nextcloud 500G RWX Retain Bound nextcloud/nfs-nextcloud 1m
3. pvc
Create
vim pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: nfs-nextcloud
namespace: nextcloud
spec:
volumeName: nfs-nextcloud
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 500G
selector:
matchLabels:
name: nfs-nextcloud
Apply
kubectl apply -f pvc.yaml
4. Service
Create
vim service.yaml
apiVersion: v1
kind: Service
metadata:
name: nextcloud
namespace: nextcloud
spec:
selector:
app: nextcloud
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: 192.168.100.3 <---- input your kubernetes ip
Apply
kubectl apply -f service.yaml
Check
# kubectl get service -n nextcloud
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nextcloud LoadBalancer 10.43.246.253 192.168.100.3 80:30155/TCP 1m
5. deployment
Create
vim deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nextcloud-deployment
namespace: nextcloud
spec:
replicas: 1
selector:
matchLabels:
app: nextcloud
template:
metadata:
labels:
app: nextcloud
spec:
securityContext:
runAsUser: 1000 <---- input nfs user uid
fsGroup: 545 <---- input nfs user gid
containers:
- name: nextcloud
image: nextcloud
ports:
- containerPort: 80
volumeMounts:
- name: nextcloud-storage-volume
mountPath: /var/www/html
volumes:
- name: nextcloud-storage-volume
persistentVolumeClaim:
claimName: nfs-nextcloud
Apply
kubectl apply -f deployment.yaml
Check
# kubectl get po -n nextcloud
NAME READY STATUS RESTARTS AGE
nextcloud-deployment-56c7d676b7-pp584 1/1 Running 0 1m
# kubectl get deploy -n nextcloud
NAME READY UP-TO-DATE AVAILABLE AGE
nextcloud-deployment 1/1 1 1 1m
Member discussion