【K8s概念】配置最佳实践
参考:https://kubernetes.io/zh/docs/concepts/configuration/overview/
一般配置提示
-
定义配置时,请指定最新的稳定 API 版本。
-
在推送到集群之前,配置文件应存储在版本控制中。 这允许您在必要时快速回滚配置更改。 它还有助于集群重新创建和恢复。
-
使用 YAML 而不是 JSON 编写配置文件。虽然这些格式几乎可以在所有场景中互换使用,但 YAML 往往更加用户友好。
-
只要有意义,就将相关对象分组到一个文件中。 一个文件通常比几个文件更容易管理。 请参阅guestbook-all-in-one.yaml 文件作为此语法的示例。https://github.com/kubernetes/examples/tree/master/guestbook/all-in-one/guestbook-all-in-one.yaml
-
另请注意,可以在目录上调用许多kubectl命令。 例如,你可以在配置文件的目录中调用kubectl apply。
-
除非必要,否则不指定默认值:简单的最小配置会降低错误的可能性。
-
将对象描述放在注释中,以便更好地进行内省。
容器镜像
imagePullPolicy和镜像标签会影响 kubelet 何时尝试拉取指定的镜像。
- imagePullPolicy: IfNotPresent:仅当镜像在本地不存在时才被拉取。
- imagePullPolicy: Always:每次启动 Pod 的时候都会拉取镜像。
- imagePullPolicy 省略时,镜像标签为 :latest 或不存在,其值自动被设置为 Always。注意,如果镜像标签的值发生改变,imagePullPolicy 的值不会被更新为 IfNotPresent。
- imagePullPolicy 省略时,指定镜像标签并且不是 :latest,其值自动被设置为 IfNotPresent。注意,如果镜像标签的值之后被移除或者修改为 latest,imagePullPolicy 的值不会被更新为 Always。
- imagePullPolicy: Never:假设镜像已经存在本地,不会尝试拉取镜像。
说明: 要确保容器始终使用相同版本的镜像,你可以指定其 摘要, 例如 sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2。 摘要唯一地标识出镜像的指定版本,因此除非您更改摘要值,否则 Kubernetes 永远不会更新它。
说明: 在生产中部署容器时应避免使用 :latest 标记,因为这样更难跟踪正在运行的镜像版本,并且更难以正确回滚。
说明: 只要镜像仓库是可访问的,底层镜像驱动程序的缓存语义能够使即便 imagePullPolicy: Always 的配置也很高效。 例如,对于 Docker,如果镜像已经存在,则拉取尝试很快,因为镜像层都被缓存并且不需要下载。
使用 kubectl
- 使用 kubectl apply -f
。 它在 中的所有 .yaml、.yml 和 .json 文件中查找 Kubernetes 配置,并将其传递给 apply。 - 使用标签选择器进行 get 和 delete 操作,而不是特定的对象名称。
- 请参阅标签选择器和 有效使用标签部分。
- 使用kubectl run和kubectl expose来快速创建单容器部署和服务。 有关示例,请参阅使用服务访问集群中的应用程序。