此文档中的信息可能已过时

此文档的更新日期比原文晚,因此其中的信息可能已过时。如果能阅读英文,请查看英文版本以获取最新信息: Kubectl user preferences (kuberc)

kubectl 用户偏好设置(kuberc)

特性状态: Kubernetes 1.33 [alpha]

Kubernetes kuberc 配置文件允许你定义 kubectl 的偏好设置,例如默认选项和命令别名。 与 kubeconfig 文件不同,kuberc 配置文件包含集群详情、用户名或密码。

此配置文件的默认位置是 $HOME/.kube/kuberc。 你可以使用 --kuberc 命令行参数指示 kubectl 查找此配置的自定义路径。

aliases

kuberc 配置中,别名(aliases) 允许你为 kubectl 命令定义自定义快捷方式, 并且可以带有预设的命令行参数。

name

别名名称不能与内置命令冲突。

command

指定你的别名将执行的底层内置命令。这包括对如 create role 等子命令的支持。

flags

为命令行参数指定默认值(kuberc 格式中称为 标志(flags))。 如果你在运行 kubectl 时明确指定了命令行参数,那么你提供的值将优先于 kuberc 中定义的默认值。

示例

apiVersion: kubectl.config.k8s.io/v1alpha1
kind: Preference
aliases:
- name: getn
  command: get
  flags:
   - name: output
     default: json

使用此别名,运行 kubectl getn pods 将默认输出 JSON 格式。然而, 如果你执行 kubectl getn pods -oyaml,输出将会是 YAML 格式。

prependArgs

在 kubectl 命令及其子命令(如果有)之后立即插入任意参数。

示例

apiVersion: kubectl.config.k8s.io/v1alpha1
kind: Preference
aliases:
  - name: getn
    command: get
    prependArgs:
      - namespace
    flags:
      - name: output
        default: json

kubectl getn test-ns 将被翻译为 kubectl get namespace test-ns --output json

appendArgs

将任意参数添加到 kubectl 命令的末尾。

示例

apiVersion: kubectl.config.k8s.io/v1alpha1
kind: Preference
aliases:
- name: runx
  command: run
  flags:
    - name: image
      default: busybox
    - name: namespace
      default: test-ns
  appendArgs:
    - --
    - custom-arg

kubectl runx test-pod 将被翻译为 kubectl run test-pod --namespace test-ns --image busybox -- custom-arg.

命令覆盖

kuberc 配置中,命令覆盖允许你为命令行参数指定自定义值。

command

指定内置命令。这包括对如 create role 等子命令的支持。

flags

kuberc 配置中,命令行参数被称为 标志(flags)(即使它们不代表布尔类型)。 你可以使用 flags 来设置命令行参数的默认值。

如果你在终端中显式地指定了一个标志,那么显式指定的值将始终优先于你在 kuberc 中使用 overrides 定义的值。

示例:

apiVersion: kubectl.config.k8s.io/v1alpha1
kind: Preference
overrides:
- command: delete
  flags:
    - name: interactive
      default: "true"

通过此覆盖,运行 kubectl delete pod/test-pod 将默认提示确认。 然而,kubectl delete pod/test-pod --interactive=false 将绕过确认。

kubectl 维护者鼓励你采用具有给定默认值的 kuberc:

apiVersion: kubectl.config.k8s.io/v1alpha1
kind: Preference
overrides:
  - command: apply
    flags:
      - name: server-side
        default: "true"
  - command: delete
    flags:
      - name: interactive
        default: "true"

禁用 kuberc

要临时禁用 kuberc 特性,只需导出环境变量 KUBERC 并将其值设置为 off

export KUBERC=off

或者禁用此特性门控:

export KUBECTL_KUBERC=false
最后修改 June 09, 2025 at 10:47 AM PST: [zh-cn]sync kuberc.md (592ffe1b95)