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
满足基础设施即代码的要求:
- 使用特定版本的标签标记镜像,不要将该标签移动到新版本。例如,使用
:v1234
、v1.2.3
、r03062016-1-4
,而不是:latest
(有关详细信息,请参阅配置的最佳实践)。 - 固定到特定的生成器版本,例如
kubectl run --generator=run-pod/v1
。 - 使用基于版本控制的脚本来记录所使用的参数,或者至少使用
--record
参数以便为所创建的对象添加注解,在使用轻度参数化的镜像时,记录下所使用的命令行。 - 使用基于版本控制的脚本来运行包含大量参数的镜像。
- 对于无法通过
kubectl run
参数来表示的功能特性,使用基于源码控制的配置文件,以记录要使用的功能特性。
生成器
您可以使用带有 --generator
参数的 kubectl run
命令创建如下资源:
资源 | API 组 | kubectl 命令 |
---|---|---|
Pod | v1 | kubectl run --generator=run-pod/v1 |
ReplicationController (已弃用) | v1 | kubectl run --generator=run/v1 |
Deployment (已弃用) | extensions/v1beta1 | kubectl run --generator=deployment/v1beta1 |
Deployment (已弃用) | apps/v1beta1 | kubectl run --generator=deployment/apps.v1beta1 |
Job (已弃用) | batch/v1 | kubectl run --generator=job/v1 |
CronJob (已弃用) | batch/v2alpha1 | kubectl run --generator=cronjob/v2alpha1 |
CronJob (已弃用) | batch/v1beta1 | kubectl run --generator=cronjob/v1beta1 |
注意: 不推荐使用run-pod/v1
以外的其他生成器。
如果您显式设置了 --generator
参数,kubectl 将使用您指定的生成器。如果使用 kubectl run
命令但是未指定生成器,kubectl 会根据您设置的其他参数自动选择要使用的生成器。下表列出了如果您自己未指定参数自动使用与之相匹配的生成器:
参数 | 相匹配的资源 |
---|---|
--schedule=<schedule> |
CronJob |
--restart=Always |
Deployment |
--restart=OnFailure |
Job |
--restart=Never |
Pod |
如果不指定生成器,kubectl 将按以下顺序考虑其他参数:
--schedule
--restart
您可以使用 --dry-run
参数预览要发送到集群的对象,而无需真正提交。
kubectl apply
- 您可以使用
kubectl apply
命令创建或更新资源。有关使用 kubectl apply 更新资源的详细信息,请参阅 Kubectl 文档。
反馈
此页是否对您有帮助?
感谢反馈。如果您有一个关于如何使用 Kubernetes 的特定的、需要答案的问题,可以访问 Stack Overflow. 在 GitHub 仓库上登记新的问题 报告问题 或者 提出改进建议.