Skip to content

Latest commit

 

History

History

update-pv-to-beta

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

local-volume-update-pv-to-beta

local-volume-update-pv-to-beta is used to update local PVs alpha node affinity annotation to beta Below is how to compile and use the tool.

Deployment

Compile the tool

make

Make the container image and push to the registry

make push

Clean the binary

make clean

Create local PV with alpha node affinity

below is an example of local PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-local-pv-1
  annotations:
    "volume.alpha.kubernetes.io/node-affinity": '{
      "requiredDuringSchedulingIgnoredDuringExecution": {
        "nodeSelectorTerms": [
          { "matchExpressions": [
            { "key": "kubernetes.io/hostname",
              "operator": "In",
              "values": ["nickren-14"]
            }
          ]}
         ]}
        }'
spec:
  capacity:
    storage: 200Mi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage
  local:
    path: /mnt/disks/vol/vol1

create PV and describe it

Name:            example-local-pv-1
Labels:          <none>
Annotations:     volume.alpha.kubernetes.io/node-affinity={ "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": [ { "matchExpressions": [ { "key": "kubernetes.io/hostname", "operator": "In", "valu...
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:    local-storage
Status:          Available
Claim:
Reclaim Policy:  Retain
Access Modes:    RWO
Capacity:        200Mi
Node Affinity:   <none>
Message:
Source:
    Type:  LocalVolume (a persistent volume backed by local storage on a node)
    Path:  /mnt/disks/vol/vol1
Events:    <none>

Create ServiceAccount and kubernetes job to update local PV alpha node affinity to beta

kubectl create -f deployment/kubernetes/admin-account.yaml
kubectl create -f deployment/kubernetes/update-pv-to-beta.yaml

Describe the kubernetes job to see if it succeeds

kubectl get job
NAME                   DESIRED   SUCCESSFUL   AGE
local-volume-updater   1         1            10s
kubectl describe job local-volume-updater
Name:           local-volume-updater
Namespace:      default
Selector:       controller-uid=c2a02fe4-3641-11e8-afd6-080027765304
Labels:         app=local-volume-updater
Annotations:    <none>
Parallelism:    1
Completions:    1
Start Time:     Mon, 02 Apr 2018 14:47:50 +0800
Pods Statuses:  0 Running / 1 Succeeded / 0 Failed
Pod Template:
  Labels:           controller-uid=c2a02fe4-3641-11e8-afd6-080027765304
                    job-name=local-volume-updater
  Service Account:  local-storage-update
  Containers:
   updater:
    Image:        quay.io/external_storage/local-volume-update-pv-to-beta:latest
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Events:
  Type    Reason            Age   From            Message
  ----    ------            ----  ----            -------
  Normal  SuccessfulCreate  20s   job-controller  Created pod: local-volume-updater-lb5zs

if error occurs, we can use kubectl get pods and kubectl logs $podID to see the error log and debug

Describe the local PV again to check if the alpha node affinity is updated

Name:              example-local-pv-1
Labels:            <none>
Annotations:       <none>
Finalizers:        [kubernetes.io/pv-protection]
StorageClass:      local-storage
Status:            Available
Claim:
Reclaim Policy:    Retain
Access Modes:      RWO
Capacity:          200Mi
Node Affinity:
  Required Terms:
    Term 0:        kubernetes.io/hostname in [nickren-14]
Message:
Source:
    Type:  LocalVolume (a persistent volume backed by local storage on a node)
    Path:  /mnt/disks/vol/vol1
Events:    <none>

Delete ServiceAccount and kubernetes job

kubectl delete -f deployment/kubernetes/admin-account.yaml
kubectl delete -f deployment/kubernetes/update-pv-to-beta.yaml