0%
Loading ...

[開發筆記][Kubernetes / K8s] Kubectl 常用指令小抄

Kubectl 是什麼?

是一個拿來操作 Kubernetes (K8s)的好用工具。

重要概念

說三次!

Context > Namespace !!!
Context > Namespace !!!
Context > Namespace !!!

重要指令

1️⃣ Get 全部 contexts

如果當下是在這個 context 的話,CURRENT 會標 *

kubectl config get-contexts

CURRENT   NAME                                                           CLUSTER                                                        AUTHINFO                                                                  NAMESPACE
*         gke_{project_name}_{zone}-airflow-xx-gke                       gke_{project_name}_{zone}-airflow-xx-gke                       gke_{project_name}_{zone}-airflow-xx-gke

2️⃣ 切換到特定 contexts

kubectl config use-context {context}
# e.g. kubectl config use-context gke_{project_name}_{zone}-airflow-xx-gke

3️⃣ get 「當前 contexts」底下的所有 namespace (可簡寫為 ns)

kubectl get namespace
# kubectl get ns

NAME                                      STATUS   AGE
composer-2-12-1-airflow-2-10-5-xxx.       Active   55d
composer-system                           Active   55d
composer-user-workloads                   Active   55d
default                                   Active   55d

NOTE: 所以如果沒切對 contexts,是永遠找不到你要的 namespace 的

4️⃣ get 特定 namespacesecrets

kubectl get secrets -n composer-2-12-1-airflow-2-10-5-xxx
NAME                          TYPE                             DATA   AGE
airflow-secrets               Opaque                           5      55d

範例:把舊 namespace 的 secrets 給遷移到新 namespace

1️⃣ 匯出舊 Secret

假設舊的 context 是 old-context,namespace 是 old-ns,secret 名稱是 dockerhubsecret

kubectl --context=old-context -n old-ns get secret dockerhubsecret -o yaml > dockerhubsecret.yaml

此時,dockerhubsecret.yaml 應該會長得像這樣

apiVersion: v1
data:
  .dockerconfigjson: {base64 string}
kind: Secret
metadata:
  creationTimestamp: "2025-06-13T09:05:56Z"
  name: dockerhubsecret
  namespace: {old-ns}
  resourceVersion: "1749805556815071002"
  uid: efbecaed-33fa-48ef-a376-cd5c0d2e0836
type: kubernetes.io/dockerconfigjson

2️⃣ 編輯 YAML 檔

打開 dockerhubsecret.yaml,刪掉以下兩個欄位:

  • metadata.resourceVersion
  • metadata.uid

也建議改一下 metadata.namespace 成你要放的新 namespace,比如 new-ns

此時,dockerhubsecret.yaml 應該會長得像這樣

apiVersion: v1
data:
  .dockerconfigjson: {base64 string}
kind: Secret
metadata:
  creationTimestamp: "2025-06-13T09:05:56Z"
  name: dockerhubsecret
  namespace: {new-ns}
type: kubernetes.io/dockerconfigjson

3️⃣ 切換到新 context

kubectl config use-context new-context

4️⃣ 套用 Secret 到新 namespace

kubectl apply -f dockerhubsecret.yaml

✅ 驗證 Secret 是否建立成功

kubectl get secrets -n new-ns

你應該可以看到 dockerhubsecret

數據女巫 𝔻.𝕡𝕪𝕤 🔮

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.