Kubernetes - Tenant
Kubernetes supports multiple virtual clusters backed by the same physical cluster. These virtual clusters are called namespaces.
Namespaces are intended for use in environments with many users spread across multiple teams, or projects.
Namespaces are a way to divide cluster resources between multiple users.
root@kubemaster:/# kubectl get namespace
NAME STATUS AGE
default Active 5d22h
kube-node-lease Active 5d22h
kube-public Active 5d22h
kube-system Active 5d22h
root@kubemaster:/# kubectl create namespace production
namespace/production created
root@kubemaster:/# kubectl create namespace development
namespace/development created
root@kubemaster:/# kubectl get namespace
NAME STATUS AGE
default Active 5d22h
kube-node-lease Active 5d22h
kube-public Active 5d22h
kube-system Active 5d22h
production Active 13s
root@kubemaster:/#
Now we creating a deployment under namespace.
root@kubemaster:/kubernetes# kubectl apply --namespace=production -f nginx_1.14.2.yml
deployment.apps/nginx-deployment created
root@kubemaster:/kubernetes# kubectl apply --namespace=development -f nginx_1.14.2.yml
deployment.apps/nginx-deployment created
root@kubemaster:/kubernetes#
root@kubemaster:/kubernetes# kubectl get pods
No resources found in default namespace.
root@kubemaster:/kubernetes#
By default pods are created in "DEFAULT" namespace.
root@kubemaster:/kubernetes# kubectl get pods --namespace=production
NAME READY STATUS RESTARTS AGE
nginx-deployment-6b474476c4-dbxnn 1/1 Running 0 80s
nginx-deployment-6b474476c4-tqfxm 1/1 Running 0 80s
nginx-deployment-6b474476c4-zvmgk 1/1 Running 0 80s
root@kubemaster:/kubernetes# kubectl get pods --namespace=development
NAME READY STATUS RESTARTS AGE
nginx-deployment-6b474476c4-8qt82 1/1 Running 0 78s
nginx-deployment-6b474476c4-bscch 1/1 Running 0 78s
nginx-deployment-6b474476c4-n8tjv 1/1 Running 0 78s
root@kubemaster:/kubernetes#
How to switch between the namespace:
root@kubemaster:/kubernetes# kubectl config set-context --current --namespace=production
Context "kubernetes-admin@kubernetes" modified.
root@kubemaster:/kubernetes# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-6b474476c4-dbxnn 1/1 Running 0 4m
nginx-deployment-6b474476c4-tqfxm 1/1 Running 0 4m
nginx-deployment-6b474476c4-zvmgk 1/1 Running 0 4m
root@kubemaster:/kubernetes#
root@kubemaster:/kubernetes# kubectl config set-context --current --namespace=development
Context "kubernetes-admin@kubernetes" modified.
root@kubemaster:/kubernetes# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-6b474476c4-8qt82 1/1 Running 0 4m36s
nginx-deployment-6b474476c4-bscch 1/1 Running 0 4m36s
nginx-deployment-6b474476c4-n8tjv 1/1 Running 0 4m36s
root@kubemaster:/kubernetes#
Above command will dynamically update the namespace.
contexts:
- context:
cluster: kubernetes
namespace: development
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
Available Commands:
current-context Displays the current-context
delete-cluster Delete the specified cluster from the kubeconfig
delete-context Delete the specified context from the kubeconfig
delete-user Delete the specified user from the kubeconfig
get-clusters Display clusters defined in the kubeconfig
get-contexts Describe one or many contexts
get-users Display users defined in the kubeconfig
rename-context Renames a context from the kubeconfig file.
set Sets an individual value in a kubeconfig file
set-cluster Sets a cluster entry in kubeconfig
set-context Sets a context entry in kubeconfig
set-credentials Sets a user entry in kubeconfig
unset Unsets an individual value in a kubeconfig file
use-context Sets the current-context in a kubeconfig file
view Display merged kubeconfig settings or a specified kubeconfig file
Usage:
root@kubemaster:/kubernetes# kubectl config set-context --current --namespace=production
Context "kubernetes-admin@kubernetes" modified.
root@kubemaster:/kubernetes# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-6b474476c4-dbxnn 1/1 Running 0 6m27s
nginx-deployment-6b474476c4-tqfxm 1/1 Running 0 6m27s
nginx-deployment-6b474476c4-zvmgk 1/1 Running 0 6m27s
root@kubemaster:/kubernetes#
contexts:
- context:
cluster: kubernetes
namespace: production
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
root@kubemaster:/kubernetes# kubectl config set-context --current --namespace=kubernetes-admin@kubernetes
Context "kubernetes-admin@kubernetes" modified.
root@kubemaster:/kubernetes# kubectl get pods
No resources found in kubernetes-admin@kubernetes namespace.
root@kubemaster:/kubernetes#
Comments
Post a Comment