- Labels are key-value pairs
- When using label selectors to specify node selection you add the following section to the yaml specification:
nodeSelector: accelerator: nvidia-tesla-p100
This example is telling Kubernetes to select only nodes with the label accelerator = nvidia-tesla-p100.
Where accelerator is the is the key and nvidia-tesla-p100 is the value.
- The nodeSelector section comes within the spec: section after the definition of the containers.
- Matching resources must satisfy all of the specified label constraints, although they can have additional labels as well e.g. the above example requires that a node has a label of accelerator with a value of nvidia-tesla-p100 in order to match the selector for the pod but it could also have a label of production with a value of true. The pod does not have to have this label specified in its selector statement.
- Can also create a label on a node using kubectl:
kubectl label node vm-node1 environment=production
- For services and replicationcontrollers targeting a set of pods label selectors are also used in this scenario they use the format:
selector:{ "component": "redis", }
or
selector: component: redis
Can use kubectl with labels using:
kubectl get pods -l environment=production, tier=frontend