A.2. Deploying the Containers
Execute the following commands to deploy the Red Hat Gluster Storage container on the nodes:
- List out the hostnames of the nodes on which the Red Hat Gluster Storage container has to be deployed:
# oc get nodes
For example:# oc get nodes NAME STATUS AGE node1.example.com Ready 12d node2.example.com Ready 12d node3.example.com Ready 12d master.example.com Ready,SchedulingDisabled 12d
- Execute the following command to label all nodes that will run Red Hat Gluster Storage pods:
# oc label node <NODENAME> storagenode=glusterfs
For example:# oc label nodes 192.168.90.3 storagenode=glusterfs node "192.168.90.3" labeled
Repeat this command for every node that will be in the GlusterFS cluster.Verify the label has set properly by running the following command:# oc get nodes --show-labels 192.168.90.2 Ready 12d beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=192.168.90.2,storagenode=glusterfs 192.168.90.3 Ready 12d beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=192.168.90.3,storagenode=glusterfs 192.168.90.4 Ready 12d beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=192.168.90.4,storagenode=glusterfs 192.168.90.5 Ready,SchedulingDisabled 12d beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=192.168.90.5
- Execute the following command to deploy the Red Hat Gluster Storage pods:
# oc process glusterfs | oc create -f - daemonset "glusterfs" created
Note
This does not initialize the hardware or create trusted storage pools. That aspect will be taken care by heketi which is explained in the further steps. - Execute the following command to grant the heketi Service Account the neccessary privileges:
# oc policy add-role-to-user edit system:serviceaccount:<project_name>:heketi-service-account
For example:# oc policy add-role-to-user edit system:serviceaccount:storage-project:heketi-service-account
- Execute the following command to determine the mountable secret you should use for the heketi pods:
# oc describe sa heketi-service-account Name: heketi-service-account Namespace: storage-project Labels: none Image pull secrets: heketi-service-account-dockercfg-jmxyz Mountable secrets: heketi-service-account-dockercfg-jmxyz heketi-service-account-token-fvhmb Tokens: heketi-service-account-token-fvhmb heketi-service-account-token-lzifj
You should select a secret that is mountable, in your project namespace, and of typekubernetes.io/service-account-token
. You can use the following command to inspect a given secret:# oc describe secret <secret name>
For example:# oc describe secret heketi-service-account-token-fvhmb Name: heketi-service-account-token-fvhmb Namespace: storage-project Labels: none Annotations: kubernetes.io/service-account.name=heketi-service-account kubernetes.io/service-account.uid=3afe5e84-c863-11e6-8736-525400556335 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1070 bytes namespace: 4 bytes service-ca.crt: 2186 bytes token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJhcGxvIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Imhla2V0aS1zZXJ2aWNlLWFjY291bnQtdG9rZW4tZnZobWIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiaGVrZXRpLXNlcnZpY2UtYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjNhZmU1ZTg0LWM4NjMtMTFlNi04NzM2LTUyNTQwMDU1NjMzNSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDphcGxvOmhla2V0aS1zZXJ2aWNlLWFjY291bnQifQ.OesojdalmQ9pAGR6CQ03vJizrVOGTrKYwvzVbEsms422YkJ1vFLI0idlA3Sxw3C_ZXamOEidYfD7n5A8099qjSyfbEhSZDpaYDfpH-o5gnyjNFpuBkZwPGE9KAEmStOGMtNhO-xAEtrD0UkHtDvy8JKnlrzMStP7NCfpGLL36X4qMx9exL3WGlWcth0kV0mGb3m-NWxr2w7twZK8xP-N8sMbdyD4s-N8naEBxBGAbNxufBBj6FXzzQSg5d1vIYls_ZgqbZV9Dn7fz9aB_GD9UfxI42EER8bzpobyNhxmu5GFfhX1TqE0kqfq1GR7P_Y6TuXrP2aYKPcR9ngZ56grLA
- Execute the following command to deploy heketi:
# oc process deploy-heketi -v \ HEKETI_KUBE_NAMESPACE=<Project name> \ HEKETI_KUBE_APIHOST='<OpenShift master endpoint address>' \ HEKETI_KUBE_SECRETNAME=<heketi-service-account secret> | oc create -f -
For example:# oc process deploy-heketi -v \ HEKETI_KUBE_NAMESPACE=storage-project \ HEKETI_KUBE_APIHOST='https://master.example.com:8443' \ HEKETI_KUBE_INSECURE=y \ HEKETI_KUBE_SECRETNAME=heketi-service-account-token-fvhmb | oc create -f - service "deploy-heketi" created route "deploy-heketi" created deploymentconfig "deploy-heketi" created
- Execute the following command to verify that the containers are running:
# oc get pods
For example:# oc get pods NAME READY STATUS RESTARTS AGE storage-project-router-1-pj9ea 1/1 Running 0 1d deploy-heketi-1-m7x8g 1/1 Running 0 1m glusterfs-41lfl 1/1 Running 0 1m glusterfs-dtyr4 1/1 Running 0 1m glusterfs-ral2d 1/1 Running 0 1m