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