Kubernetes最佳实践生产检查清单

22-11-24 banq

此清单提供了可操作的最佳实践,用于在 Kubernetes 上部署安全、可扩展且有弹性的服务。
内容是开源的,可以在这个存储库中找到。

1. 应用开发

  • 健康检查
  • 信息
  • 容器有就绪探测
  • 出现致命错误时容器会崩溃
  • 配置被动 Liveness 探测Liveness 探测值与 Readiness 不同
  • 应用程序是独立的信息
  • 就绪探测器是独立的该应用程序重试连接到相关服务
  • 优雅关机信息该应用程序不会在 SIGTERM 上关闭,但会正常终止连接该应用程序仍在宽限期内处理传入的请求
  • 中的CMDDockerfile将SIGTERM转发给进程关闭所有空闲的保活套接字容错性信息为您的 Deployment 运行多个副本
  • 避免 Pod 被放置在单个节点中
  • 设置 Pod 中断预算资源利用信息为所有容器设置内存限制和请求
  • 将 CPU 请求设置为 1 个 CPU 或以下
  • 禁用 CPU 限制——除非你有很好的用例命名空间有一个 LimitRange为 Pod 设置适当的服务质量 (QoS)标记资源信息资源定义了技术标签
  • 部署.yaml资源定义了业务标签
  • 部署.yaml
  • 资源定义了安全标签
  • 部署.yaml记录信息
  • 应用程序登录stdout并stderr
  • 避免使用 sidecars 进行日志记录(如果可以的话)缩放信息容器不在本地文件系统中存储任何状态将 Horizo​​ntal Pod Autoscaler 用于具有可变使用模式的应用程序请勿在 Vertical Pod Autoscaler 仍处于测试阶段时使用它
  • 如果您的工作负载变化很大,请使用 Cluster Autoscaler配置和秘密信息外部化所有配置将 Secrets 安装为卷,而不是环境变量


2.治理

  • 命名空间限制信息
  • 命名空间有 LimitRange
  • 命名空间有 ResourceQuotas
  • Pod 安全策略信息
  • 启用 Pod 安全策略
  • 禁用特权容器在容器中使用只读文件系统
  • 防止容器以 root 身份运行
  • 限制能力防止特权升级网络政策信息启用网络策略
  • 每个命名空间中都有一个保守的 NetworkPolicy基于角色的访问控制 (RBAC) 策略信息禁用默认 ServiceAccount 的自动挂载RBAC 策略设置为所需的最少权限
  • RBAC 策略是细粒度的且不共享
  • 自定义策略信息
  • 仅允许从已知注册表部署容器强制 Ingress 主机名的唯一性入口.yaml仅在 Ingress 主机名中使用批准的域名入口.yaml


3.集群配置
本节正在进行中。您对应该包括哪些内容有意见吗?

  • 提出问题。批准的 Kubernetes 配置信息
  • 集群通过 CIS 基准测试狂欢
  • 禁用元数据云提供商元数据 API
  • 限制对 alpha 或 beta 功能的访问验证信息使用 OpenID (OIDC) 令牌作为用户身份验证策略基于角色的访问控制 (RBAC)信息ServiceAccount 令牌仅适用于应用程序和控制器记录设置信息有日志的保留和归档策略
  • 日志是从节点、控制平面、审计中收集的更喜欢每个节点上的守护进程来收集日志而不是边车提供日志聚合工具