【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来快速创建单容器部署和服务。 有关示例,请参阅使用服务访问集群中的应用程序。
posted @ 2021-07-29 15:47  Varden  阅读(162)  评论(0编辑  收藏  举报