kubectl 的用法约定

kubectl 的推荐用法约定

在可重用脚本中使用 kubectl

对于脚本中的稳定输出:

  • 请求一个面向机器的输出格式,例如 -o name-o json-o yaml-o go template-o jsonpath
  • 完全限定版本。例如 jobs.v1.batch/myjob。这将确保 kubectl 不会使用其默认版本,该版本会随着时间的推移而更改。
  • 在使用基于生成器的命令(例如 kubectl run 或者 kubectl expose)时,指定 --generator 参数以固定到特定行为。
  • 不要依赖上下文、首选项或其他隐式状态。

最佳实践

kubectl run

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

  • 使用特定版本的标签标记镜像,不要将该标签移动到新版本。例如,使用 :v1234v1.2.3r03062016-1-4,而不是 :latest(有关详细信息,请参阅配置的最佳实践)。
  • 固定到特定的生成器版本,例如 kubectl run --generator=run-pod/v1
  • 使用基于版本控制的脚本来记录所使用的参数,或者至少使用 --record 参数以便为所创建的对象添加注解,在使用轻度参数化的镜像时,记录下所使用的命令行。
  • 使用基于版本控制的脚本来运行包含大量参数的镜像。
  • 对于无法通过 kubectl run 参数来表示的功能特性,使用基于源码控制的配置文件,以记录要使用的功能特性。

生成器

您可以使用带有 --generator 参数的 kubectl run 命令创建如下资源:

可以使用 kubectl run 创建的资源
资源API 组kubectl 命令
Podv1kubectl run —generator=run-pod/v1
ReplicationController (已弃用)v1kubectl run —generator=run/v1
Deployment (已弃用)extensions/v1beta1kubectl run —generator=deployment/v1beta1
Deployment (已弃用)apps/v1beta1kubectl run —generator=deployment/apps.v1beta1
Job (已弃用)batch/v1kubectl run —generator=job/v1
CronJob (已弃用)batch/v2alpha1kubectl run —generator=cronjob/v2alpha1
CronJob (已弃用)batch/v1beta1kubectl run —generator=cronjob/v1beta1

注意: 不推荐使用 run-pod/v1 以外的其他生成器。

如果您显式设置了 --generator 参数,kubectl 将使用您指定的生成器。如果使用 kubectl run 命令但是未指定生成器,kubectl 会根据您设置的其他参数自动选择要使用的生成器。下表列出了如果您自己未指定参数自动使用与之相匹配的生成器:

kubectl run 参数及其对应的资源
参数相匹配的资源
—schedule=<schedule>CronJob
—restart=AlwaysDeployment
—restart=OnFailureJob
—restart=NeverPod

如果不指定生成器,kubectl 将按以下顺序考虑其他参数:

  1. --schedule
  2. --restart

您可以使用 --dry-run 参数预览要发送到集群的对象,而无需真正提交。

kubectl apply

  • 您可以使用 kubectl apply 命令创建或更新资源。有关使用 kubectl apply 更新资源的详细信息,请参阅 Kubectl 文档