...
Code Block | ||
---|---|---|
| ||
apiVersion: v1 kind: PersistentVolume metadata: name: local-storage spec: capacity: storage: 10Gi # volumeMode field requires BlockVolume Alpha feature gate to be enabled. volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete storageClassName: local-storage local: path: /var/k8s/LOCAL_STORAGE nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - k8sworker1 - k8sworker2 - k8sworker3 - docker-for-desktop --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: local-storage-claim spec: storageClassName: local-storage accessModes: - ReadWriteOnce resources: requests: storage: 3Gi |
For running on a docker for desktop cluster, you will probably need to update the path to a folder under the users home directory.
ie.
path: /Users/john.mehan/k8s/LOCAL_STORAGE
Apply the yml file
kubectl apply -f localStorage.yml
On each of the worker nodes, create the folder specified in 'path'.
ssh k8sworker1
sudo mkdir -p /var/k8s/LOCAL_STORAGE
Repeat for all worker nodes requiring local storage.From master node
kubectl apply -f localStorage.yml
Create Password File
We will generate a password file to use with our registry. The default username password will be test/testpw.
...
Code Block | ||
---|---|---|
| ||
apiVersion: v1 kind: Pod metadata: name: htpasswd-generator spec: containers: - name: htpasswd-generator image: registry:2 command: ["/usr/bin/htpasswd"] args: ["-Bcb", "/auth/htpasswd", "test", "testpw"] volumeMounts: - mountPath: /auth name: local-vol subPath: registry/auth affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - k8sworker2 - docker-for-desktop volumes: - name: local-vol persistentVolumeClaim: claimName: local-storage-claim restartPolicy: OnFailure |
...
Code Block | ||
---|---|---|
| ||
apiVersion: v1 kind: Pod metadata: name: registry labels: app: registry spec: containers: - name: registry image: registry:2 env: - name: REGISTRY_AUTH value: htpasswd - name: REGISTRY_AUTH_HTPASSWD_REALM value: "Registry Realm" - name: REGISTRY_AUTH_HTPASSWD_PATH value: /auth/htpasswd ports: - containerPort: 5000 volumeMounts: - mountPath: /auth name: local-vol subPath: registry/auth - mountPath: /var/lib/registry name: local-vol subPath: registry/data affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: nodeSelector - matchExpressions: - key: kubernetes.io/hostname operator: In values: - k8sworker2 - docker-for-desktop volumes: - name: local-vol persistentVolumeClaim: claimName: local-storage-claim --- apiVersion: v1 kind: Service metadata: name: registry-ext spec: type: NodePort selector: app: registry ports: - port: 5000 nodePort: 30500 name: registry-ext |
...