What this post covers?
In this post we will explore all possible options that can be used for Kubernetes Labels and selectors.
- Adding labels
- Show labels
- Replace labels
- Deleting labels
Adding Labels to Pods
Adding labels while you creating bare pods imperatively using 'kubectl run' command, here I'm using three different images httpd, redis, rabbitmq.
kubectl run web --image=httpd:2.4.54-alpine \
--labels="env=prod,author=pavandeverakonda,component=customer,tier=frontend"
kubectl run db --image=redis:alpine \
--labels="env=prod,author=pavandeverakonda,component=customer,tier=backend"
kubectl run web2 --image=httpd:2.4.54-alpine \
--labels="env=dev,author=pavandeverakonda,component=customer,tier=frontend"
kubectl run db2 --image=redis:alpine \
--labels="env=dev,author=pavandeverakonda,component=customer,tier=backend"
kubectl run msg-pod --image=rabbitmq \
--labels="env=prod,author=ranjan,component=customer,tier=integrat"
#Validate the labels with the pods
kubectl get po --show-labels
|
Create Pod along with Labels |
Show labels for Kubernetes Objects
To see what all labels associated with a kubernetes object use --show-labels option
# for Pods
kubectl get pods --show-labels
# for nodes
kubectl get nodes --show-labels
To filter only the prod environment
kubectl get pods -l env=prod --show-labels
To get without header use --no-headers=true
kubectl get pods -l env=dev --show-labels --no-headers=true
To get the count of the dev environemnt pods we can use wc -l to count lines
kubectl get pods -l env=dev --show-labels --no-headers=true|wc -l
Using --selector option
To get how many pods present in the business unit(bu) as finance, here we can use --selector option
kubectl get pods --selector bu=finance --no-headers=true --show-labels
To get the count of the pods in finance bu
kubectl get pods --selector bu=finance --no-headers=true|wc -l
To find all objects are present in the prod environment including Pods, ReplicaSet and any other
kubectl get all --selector env=prod --show-labels --no-headers=true
To get the count
kubectl get all --selector env=prod --no-headers=true|wc -l
To Identify the Pod which is part of the "prod" environment, the "finance" BU and of "frontend" tier?
kubectl get all --selector env=prod,bu=finance,tier=frontend --no-headers=true
more specific to pods only display
kubectl get pod --selector env=prod,bu=finance,tier=frontend
# Only Pod names
kubectl get pod --selector env=prod,bu=finance,tier=frontend --no-headers=true -o NAME
Deleting labels
a. Edit the Kubernetes Object
b. Using - operator to remove labels
Using - operator to remove labels
Update pod 'web' by removing a label named 'author' (if that label exists with that pod)
kubectl label pods web author-
|
Deleting a label from a Pod |
You can also remove two or more labels at one go, removing env, tier labesl from the web pod:
kubectl label pods web env- tier-
|
Deleting multiple labels from a Pod |
Kubernetes Annotations
Another intresting fact about Kubernetes Objects, they are like labels but they are just metadata not used in the selectors section.
kubectl annotate pod/web contact="admin@vybhavasolutions"
You can also add more number of annotationsto to your a Kubernetes objects anytime like this:
kubectl annotate pod/web whatsapp="9618715457" email="vybhavatechnologies@gmail.com"
viewing Annotations of kubernetes objects
The first option is always using describe kubernetes object, where you could see a section for Annotations is available.
kubectl describe pods web -o yaml |grep -c 3 'annotations'
Keep writing to us for more intresting facts on Kubernetes related errors which you have encountered.
No comments:
Post a Comment