$ kubectl create namespace wiki
namespace/wiki created
storage-class.yaml
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: wiki-storage
  namespace: wiki
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
$ kubectl apply -f storage-class.yaml
storageclass.storage.k8s.io/wiki-storage created
$ kubectl get sc -n wiki
NAME           PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
wiki-storage   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  46s
$ cat volume-local.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-wiki
  namespace: wiki
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: wiki-storage
  local:
    path: /home/gean/data
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - kube-worker-01.juntotelecom.com.br
$ kubectl apply -f volume-local.yaml
persistentvolume/pv-wiki created
$ kubectl get pv -n wiki
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
pv-wiki   1Gi        RWO            Retain           Available           wiki-storage            35s
$ cat claim-local.yaml
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: volume-claim-wiki
  namespace: wiki
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: wiki-storage
  resources:
    requests:
      storage: 1Gi
$ kubectl apply -f claim-local.yaml
persistentvolumeclaim/volume-claim-wiki created
$ kubectl get sc,pv,pvc -n wiki
NAME                                       PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
storageclass.storage.k8s.io/wiki-storage   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                  13m
 
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
persistentvolume/pv-wiki   1Gi        RWO            Retain           Available           wiki-storage            5m27s
 
NAME                                      STATUS    VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/volume-claim-wiki   Pending                                      wiki-storage   47s
$ cat dokuwiki-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: dokuwiki
  name: dokuwiki
  namespace: wiki
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dokuwiki
  strategy: {}
  template:
    metadata:
      labels:
        app: dokuwiki
    spec:
      containers:
        - image: docker.io/bitnami/dokuwiki:latest
          name: dokuwiki
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080
            - containerPort: 8443
          volumeMounts:
            - mountPath: /bitnami/dokuwiki
              name: dokuwiki-data
      volumes:
        - name: dokuwiki-data
          persistentVolumeClaim:
            claimName: volume-claim-wiki
$ kubectl apply -f dokuwiki-deployment.yaml
deployment.apps/dokuwiki created
$ kubectl get deploy -n wiki -o wide
NAME       READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES                                SELECTOR
dokuwiki   1/1     1            1           4m22s   dokuwiki     docker.io/bitnami/dokuwiki:20200729   app=dokuwiki
$ kubectl get pods -n wiki -o wide
NAME                       READY   STATUS    RESTARTS        AGE     IP          NODE                                 NOMINATED NODE   READINESS GATES
dokuwiki-cbb8db749-j7p98   1/1     Running   5 (2m27s ago)   4m12s   10.85.0.5   kube-worker-01.juntotelecom.com.br   <none>           <none>
$ cat dokuwiki-service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: dokuwiki
  name: dokuwiki
spec:
  ports:
    - name: "80"
      port: 80
      targetPort: 8080
    - name: "443"
      port: 443
      targetPort: 8443
  selector:
    app: dokuwiki
status:
  loadBalancer: {}
$ kubectl apply -f dokuwiki-service.yaml
service/dokuwiki created
$ kubectl patch svc dokuwiki -p '{"spec": {"ports": [{"port": 80},{"port": 443}],"type": "NodePort"}}'
service/dokuwiki patched

Ou:

$ kubectl expose deploy dokuwiki --type="NodePort" --port 8080 -n wiki