Kubectl 使用者偏好設定 (kuberc)
Kubernetes 1.34 [beta]
Kubernetes kuberc
配置檔案允許您為 kubectl 定義偏好設定,例如預設選項和命令別名。與 kubeconfig 檔案不同,kuberc
配置檔案不包含叢集詳細資訊、使用者名稱或密碼。
此配置檔案的預設位置是 $HOME/.kube/kuberc
。要為 kubectl 提供自定義 kuberc 檔案的路徑,請使用 --kuberc
命令列選項,或設定 KUBERC
環境變數。
使用 kubectl.config.k8s.io/v1beta1
格式的 kuberc
允許您定義兩種型別的使用者偏好設定:
別名
在 kuberc
配置中,別名部分允許您為 kubectl 命令定義自定義快捷方式,可選擇預設命令列引數和標誌。
下一個示例為 kubectl get
子命令定義了一個 kubectl getn
別名,並另外指定了 JSON 輸出格式:--output=json
。
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
aliases:
- name: getn
command: get
options:
- name: output
default: json
在此示例中,使用了以下設定:
name
- 別名必須與內建命令不衝突。command
- 指定您的別名將執行的底層內建命令。這包括對create role
等子命令的支援。options
- 指定選項的預設值。如果您在執行kubectl
時顯式指定了某個選項,您提供的值將優先於kuberc
中定義的預設值。
使用此別名,執行 kubectl getn pods
將預設使用 JSON 輸出。但是,如果您執行 kubectl getn pods -oyaml
,輸出將是 YAML 格式。
完整的 kuberc
架構可在此 處獲取。
prependArgs
下一個示例將擴充套件上一個示例,引入 prependArgs
部分,該部分允許在 kubectl 命令及其子命令(如果存在)之後立即插入任意引數。
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
aliases:
- name: getn
command: get
options:
- name: output
default: json
prependArgs:
- namespace
在此示例中,使用了以下設定:
name
- 別名必須與內建命令不衝突。command
- 指定您的別名將執行的底層內建命令。這包括對create role
等子命令的支援。options
- 指定選項的預設值。如果您在執行kubectl
時顯式指定了某個選項,您提供的值將優先於kuberc
中定義的預設值。prependArgs
- 指定將放置在命令之後的顯式引數。這裡,這將轉換為kubectl get namespace test-ns --output json
。
appendArgs
下一個示例將引入一個與 prepending arguments 類似的機制,但這次我們將引數附加到 kubectl 命令的末尾。
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
aliases:
- name: runx
command: run
options:
- name: image
default: busybox
- name: namespace
default: test-ns
appendArgs:
- --
- custom-arg
在此示例中,使用了以下設定:
name
- 別名必須與內建命令不衝突。command
- 指定您的別名將執行的底層內建命令。這包括對create role
等子命令的支援。options
- 指定選項的預設值。如果您在執行kubectl
時顯式指定了某個選項,您提供的值將優先於kuberc
中定義的預設值。appendArgs
- 指定將放置在命令末尾的顯式引數。這裡,這將轉換為kubectl run test-pod --namespace test-ns --image busybox -- custom-arg
。
defaults
在 kuberc
配置中,defaults
部分允許您為命令列引數指定預設值。
下一個示例使互動式移除成為呼叫 kubectl delete
的預設模式。
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
defaults:
- command: delete
options:
- name: interactive
default: "true"
在此示例中,使用了以下設定:
command
- 內建命令,包括對create role
等子命令的支援。options
- 指定選項的預設值。如果您在執行kubectl
時顯式指定了某個選項,您提供的值將優先於kuberc
中定義的預設值。
使用此設定,執行 kubectl delete pod/test-pod
將預設提示確認。但是,kubectl delete pod/test-pod --interactive=false
將繞過確認。
建議的預設值
kubectl 的維護者鼓勵您採用以下預設值的 kuberc。
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
defaults:
# (1) default server-side apply
- command: apply
options:
- name: server-side
default: "true"
# (2) default interactive deletion
- command: delete
options:
- name: interactive
default: "true"
在此示例中,強制執行了以下設定:
- 預設使用 Server-Side Apply。
- 預設情況下,呼叫
kubectl delete
時進行互動式移除,以防止意外從叢集中移除資源。
停用 kuberc
要暫時停用 kuberc
功能,請將環境變數 KUBERC
設定(並匯出)為 off
。
export KUBERC=off
或停用功能門
export KUBECTL_KUBERC=false