๐Let's understand the concept of virtual cluster inside a "physical cluster in K8S !!"๐
When we are working with a large account/organization we generally come across different types of teams/applications but everything in a single large cluster???? sounds make it very difficult to even imagine. What if we have an isolation between all those and draw some boundaries, set limits and organize?,
There comes a topic called "๐ต๐๐๐๐บ๐๐๐๐"
โจ What is it ?
1๏ธโฃ It is a K8S object which creates virtual clusters inside the physical cluster
2๏ธโฃ It is a way to divide one physical/main cluster into multiple virtual clusters and provides logical boundaries within the cluster and isolates the resources from being mismanaged.
Why do we need Namespaces?
1๏ธโฃ Teams/projects can use the same cluster without interfering eachother.
2๏ธโฃ Makes it easier to group resources like pods/SVC/configMaps.. logically.
3๏ธโฃ We can manage clusters with thousands of resources easily.
4๏ธโฃ It will Allow us to manage permissions and access controls and restrict the access to specific resources.
๐ How NameSpace(NS) work in K8S?
1๏ธโฃ Resource Scope:
โ
NS are applied to namespaced objects like Pods,SVC's, configMaps & Secrets.
โ
Some resources like Nodes & Persistent volumes are cluster wide, not namespaced.
โ
Resources with same name can exist in different NS without conflict.
2๏ธโฃ CPU & Memory limits:
โ
we can restrict/set boundaries that how much amount of resources can be consumed.
โ
we can restrict how many resources can be inside the created Namespace ( ex: 5 pods/10pods).
3๏ธโฃ Managing NS:
โ
It is always ideal to manage the NS with manifest files instead of commands for better flexibility, re-use, simple management and changes are predicted and documented.
4๏ธโฃ Default NameSpaces: (important)โ
โ
๐ซ๐๐๐๐๐๐: Used when we don't mention any specific namespace.
โ
๐ฒ๐๐๐-๐๐๐๐๐๐: Contains critical system components like kube-dns & other controllers. ( Restricted to use until you know what you are doing).
โ
๐ฒ๐๐๐-๐๐๐๐๐๐: Commonly used for cluster-level configuration/information which are meant to be publicly accessible accross the cluster.
โ
๐ฒ๐๐๐-๐๐๐
๐-๐๐๐๐๐: Used to manage the heartbeats of nodes for the node controller.
5๏ธโฃ ResourceQuotas and LimitRanges:
โ ๐น๐๐๐๐๐๐๐๐ธ๐๐๐๐: Enforce overall usage limits for the Namespace ( ex: total CPU/memory/no. of pods can be created).
โ ๐ณ๐๐๐๐๐น๐๐๐๐๐: Define per-resource limits within the Namespace ( ex: max& min CPU/memory per pod/container).
Use Cases:
โจ Large organisations with multiple teams/applications.
โจ managing different environments with in same cluster ( dev/stage/prod)
โจ when permissions and limits required.
Note๐: In detail information of ResourceQuota, LimitRange, Pros, Cons and best practices given in image format.
Comment down your thoughts ๐ญ
Top comments (0)