Annotations
- Kubernetes provide us annotation feature with labels.
- Annotations are basically words that explanations or comment on something.
- For example, annotation can be used to write the creator’s name or contact or about the application is running.
- Labels are meant to hold limited information whereas we can have larger annotation with any resource.
- Annotations are the way to add some extra information to the resource but they cannot be used to group or filter like labels.
Overlapping Labels
- With labels it is easy is to group resources.
- But what if any label overlap, for example,
- type = frontend is assigned to a few pods with app_name_web and env_development
- type = frontend is assigned to a few pods with app_name_web and env_development
- The name of a particular resource will always be unique, what about setting a similar environment as production within the development, QA phase.
- But what about times when you want to split objects into separate, non-overlapping groups? We may want to only operate inside one group at a time.
Namespace
- Kubernetes also groups objects into namespaces.
- A namespace is a kind of virtual box that isolates self contain resources with another namespace.
- We can easily separate the scope of resources using namespaces. e.g Resource in the namespace for the development phase cannot harm resources in the namespace for production.
- Similarly, we can split them into multiple namespaces, which also allows us to use the same resource names multiple times (across different namespaces)
Creating namespace
- Kubectl create namespace production
- Kubectl get ns
- Kubectl create ns development
- Kubectl get ns
Pod inside namespace
- nano my first pod. yaml
- Kubectl creates -f my first pod. yaml
- Kubectl get pods –namespace = production
- Kubectl run nsexample –image = ahmedmansoor/helloworld –port = 80 –restart = Never –namespace = development
- Kubectl get pods
- Kubectl get pods -n production
- Kubectl get pods -n development
Listing pod from All Namespaces
- Kubectl get pods — all-namespaces
Deleting Resource
- Kubectl delete pod myfirstpod
- Kubectl get pods –all-namespaces
- Kubectl delete pod myfirstpod –namespace = production
- Kubectl delete ns development
- kubectl get ns
- Kubectl get pod — show-labels
- Kubectl delete pods-l type = backend
- Kubectl delete pod –all
Replica Sets
- A replica set is also one of the resources in Kubernetes like pods and others are. It is often used to guarantee the availability of a specified number of identical Pods.
- A replica set is a resource that helps create and manage multiple copies of applications (replicas) in Kubernetes.
- When we create any pod through Replica set it ensures its pods are always kept running.
- If the pod removes for any reason, such as
- if the worker node disappears from the cluster
- If the pod was evicted from the worker node
- The replica set notes the missing pod and creates a replacement pod.