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.
 
 
 
Comments