Bird
Raised Fist0
Kubernetesdevops~10 mins

Switching namespace context in Kubernetes - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Switching namespace context
Start: Current kubectl context
↓
Check current namespace
↓
Run command: kubectl config set-context --current --namespace=<new-namespace>
↓
Update context namespace
↓
Verify with kubectl config view or kubectl config get-contexts
↓
kubectl commands now use new namespace
↓
END
This flow shows how you change the current kubectl namespace context so commands run in the new namespace.
Execution Sample
Kubernetes
kubectl config set-context --current --namespace=dev
kubectl get pods
Switch current kubectl context to 'dev' namespace, then list pods in 'dev' namespace.
Process Table
StepCommandContext Namespace BeforeActionContext Namespace AfterOutput
1kubectl config get-contexts --no-headers -o namedefaultCheck current context namedefaultcurrent-context-name
2kubectl config view --minify --output 'jsonpath={..namespace}'defaultCheck current namespacedefaultdefault
3kubectl config set-context --current --namespace=devdefaultSet current context namespace to 'dev'devContext updated.
4kubectl config view --minify --output 'jsonpath={..namespace}'devVerify namespace changedevdev
5kubectl get podsdevList pods in new namespacedevNo resources found in dev namespace.
6kubectl config set-context --current --namespace=defaultdevSwitch back to default namespacedefaultContext updated.
7kubectl get podsdefaultList pods in default namespacedefaultpod1 pod2 pod3
8-defaultEnd of demonstrationdefault-
💡 Namespace context switched successfully; kubectl commands now run in the selected namespace.
Status Tracker
VariableStartAfter Step 3After Step 6Final
current_namespacedefaultdevdefaultdefault
Key Moments - 3 Insights
Why do kubectl commands still show resources from the default namespace before switching?
Because the current context's namespace is 'default' initially (see execution_table step 2), so kubectl commands run in 'default' namespace until changed.
Does 'kubectl config set-context --current --namespace=dev' create the namespace 'dev' if it doesn't exist?
No, it only changes the context's namespace setting. The namespace must exist already or kubectl commands may fail or show no resources (see step 5).
How to verify the namespace context has changed?
Use 'kubectl config view --minify --output jsonpath={..namespace}' as shown in steps 2 and 4 to see the current namespace.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the namespace after step 3?
Adefault
Bdev
Ckube-system
Dproduction
💡 Hint
Check the 'Context Namespace After' column in step 3.
At which step does the kubectl command start listing pods in the 'dev' namespace?
AStep 2
BStep 4
CStep 5
DStep 7
💡 Hint
Look at the 'Command' and 'Output' columns to find when pods are listed in 'dev'.
If you run 'kubectl get pods' without switching namespace, which namespace is used by default?
Adefault
Bdev
Ckube-public
Dcustom
💡 Hint
See the 'Context Namespace Before' in step 1 and 2.
Concept Snapshot
Switch namespace context in kubectl:
- Use: kubectl config set-context --current --namespace=<namespace>
- Changes current context's namespace
- Verify with: kubectl config view --minify --output 'jsonpath={..namespace}'
- Commands like 'kubectl get pods' run in new namespace
- Namespace must exist beforehand
Full Transcript
This lesson shows how to switch the namespace context in kubectl. You start by checking your current namespace, usually 'default'. Then you run 'kubectl config set-context --current --namespace=dev' to change the namespace to 'dev'. After that, kubectl commands like 'kubectl get pods' will operate in the 'dev' namespace. You can verify the change by viewing the current namespace in the context. Switching back to 'default' is done the same way. Remember, changing the context does not create namespaces; they must exist already.

Practice

(1/5)
1. What does switching the namespace context in Kubernetes help you do?
easy
A. Work easily within a specific namespace without typing it every time
B. Delete all namespaces at once
C. Create a new Kubernetes cluster
D. Change the Kubernetes version

Solution

  1. Step 1: Understand namespaces in Kubernetes

    Namespaces organize resources so you can separate projects or teams.
  2. Step 2: Understand switching namespace context

    Switching context means your commands default to that namespace, so you don't type it each time.
  3. Final Answer:

    Work easily within a specific namespace without typing it every time -> Option A
  4. Quick Check:

    Switching namespace context = easier work in one namespace [OK]
Hint: Switching namespace saves typing namespace each command [OK]
Common Mistakes:
  • Thinking switching namespace deletes namespaces
  • Confusing namespace with cluster creation
  • Believing it changes Kubernetes version
2. Which of the following is the correct command to switch the current namespace to dev?
easy
A. kubectl set namespace dev
B. kubectl config set-context --current --namespace=dev
C. kubectl switch namespace dev
D. kubectl change context namespace dev

Solution

  1. Step 1: Recall the correct syntax for switching namespace context

    The command uses kubectl config set-context --current --namespace=<name>.
  2. Step 2: Match the command with the namespace dev

    Replace <name> with dev exactly as in kubectl config set-context --current --namespace=dev.
  3. Final Answer:

    kubectl config set-context --current --namespace=dev -> Option B
  4. Quick Check:

    Correct syntax = kubectl config set-context --current --namespace=dev [OK]
Hint: Use 'kubectl config set-context --current --namespace=' [OK]
Common Mistakes:
  • Using non-existent commands like 'kubectl switch namespace'
  • Omitting '--current' flag
  • Using wrong command verbs like 'change' or 'set' alone
3. What will be the output of the command kubectl config view --minify | grep namespace after running kubectl config set-context --current --namespace=testing?
medium
A. namespace: default
B. Error: namespace not found
C. No output
D. namespace: testing

Solution

  1. Step 1: Understand what kubectl config set-context --current --namespace=testing does

    This command sets the current context's namespace to testing.
  2. Step 2: Understand the kubectl config view --minify | grep namespace command

    This shows the current context's namespace setting, which should now be testing.
  3. Final Answer:

    namespace: testing -> Option D
  4. Quick Check:

    Namespace after set-context = testing [OK]
Hint: Check current namespace with 'kubectl config view --minify' [OK]
Common Mistakes:
  • Expecting default namespace after switching
  • Thinking command shows all namespaces
  • Assuming error if namespace does not exist yet
4. You ran kubectl config set-context --current --namespace=prod but your commands still affect the default namespace. What is the likely problem?
medium
A. You did not reload your shell or terminal
B. You used the wrong command to switch namespace
C. Your current context is not set correctly
D. The namespace prod does not exist

Solution

  1. Step 1: Check if the current context is set correctly

    If the current context is not the one you expect, switching namespace won't affect your commands.
  2. Step 2: Understand that namespace switching affects only the current context

    Switching namespace changes the namespace in the current context, so if the context is wrong, commands still use default namespace.
  3. Final Answer:

    Your current context is not set correctly -> Option C
  4. Quick Check:

    Namespace switch affects current context only [OK]
Hint: Verify current context with 'kubectl config current-context' [OK]
Common Mistakes:
  • Assuming shell reload is needed
  • Thinking namespace must exist before switching
  • Using wrong command syntax
5. You want to run multiple commands in the staging namespace without typing --namespace=staging each time. Which sequence of commands correctly sets this up and verifies it?
hard
A. kubectl config set-context --current --namespace=staging kubectl get pods kubectl config view --minify | grep namespace
B. kubectl namespace staging kubectl get pods kubectl config current-context
C. kubectl switch namespace staging kubectl get pods kubectl config get-contexts
D. kubectl set namespace staging kubectl get pods kubectl config get-namespaces

Solution

  1. Step 1: Set the current context's namespace to staging

    Use kubectl config set-context --current --namespace=staging to switch namespace context.
  2. Step 2: Verify by listing pods and checking namespace in current context

    Running kubectl get pods uses the new namespace by default. Checking with kubectl config view --minify | grep namespace confirms the namespace is set.
  3. Final Answer:

    kubectl config set-context --current --namespace=staging kubectl get pods kubectl config view --minify | grep namespace -> Option A
  4. Quick Check:

    Set context namespace then verify with config view [OK]
Hint: Set namespace once with config set-context, then run commands [OK]
Common Mistakes:
  • Using non-existent commands like 'kubectl switch namespace'
  • Not verifying namespace change
  • Confusing context commands with namespace commands
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard