kubectl 的用法约定

kubectl 的用法约定

kubectl 的推荐用法约定。

在可重用脚本中使用 kubectl

对于脚本中的稳定输出:

  • 请求一个面向机器的输出格式,例如 -o name-o json-o yaml-o go template-o jsonpath
  • 完全限定版本。例如 jobs.v1.batch/myjob。这将确保 kubectl 不会使用其默认版本,该版本会随着时间的推移而更改。
  • 不要依赖上下文、首选项或其他隐式状态。

子资源

  • 你可以将 --subresource 参数用于 kubectl 命令,例如 getpatcheditapplyreplace 来获取和更新所有支持子资源的资源的子资源。Kubernetes 1.36 版本中, 仅支持 status, scaleresize 子资源。
    • 对于 kubectl edit,不支持 scale 子资源。如果将 --subresourcekubectl edit 一起使用, 并指定 scale 作为子资源,则命令将会报错。
  • 针对子资源的 API 协定与完整资源相同。在更新 status 子资源为一个新值时,请记住, 子资源可能是潜在的由控制器调和为不同的值。

最佳实践

kubectl run

若希望 kubectl run 满足基础设施即代码的要求:

  • 使用特定版本的标签标记镜像,不要将该标签改为新版本。例如使用 :v1234v1.2.3r03062016-1-4, 而不是 :latest(有关详细信息,请参阅 Kubernetes 配置最佳实践)。
  • 使用基于版本控制的脚本来运行包含大量参数的镜像。
  • 对于无法通过 kubectl run 参数来表示的功能特性,使用基于源码控制的配置文件,以记录要使用的功能特性。

你可以使用 --dry-run=client 参数来预览而不真正提交即将下发到集群的对象实例:

kubectl proxy

注意:

通过 kubectl proxy 浏览不受信任的 Pod 或服务端点非常危险, 因为所提供服务的内容会使用代理的凭据隐式访问 Kubernetes API。 使用特权凭据时,请务必谨慎并避免访问不受信任的端点。

为降低风险:

  • 避免使用 kubectl proxy 访问不受信任的 Pod 或服务。
  • 当你只需要查看资源时,请使用 --reject-methods='POST,PUT,PATCH,DELETE' 将代理限制为只读操作。
  • 使用 --reject-paths 限制代理公开的 API 路径。
  • 除非必要,否则不要使用集群管理员凭据运行 kubectl proxy

kubectl apply

  • 你可以使用 kubectl apply 命令创建或更新资源。 有关使用 kubectl apply 更新资源的详细信息,请参阅 Kubectl 文档
最后修改 May 21, 2026 at 4:03 PM PST: [zh-cn]sync conventions kubectl (8c1ac91d97)