wikiv3:wiki_kube
$ 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
wikiv3/wiki_kube.txt · Last modified: by 127.0.0.1
