概述
目录
- 1. Kubernetes 网络(云、混合或本地)
- 2. Kubernetes 安全性、合规性和基准
- 3.Kubernetes集群访问
- 4. Kubernetes 高可用性和可扩展性
- 5. Kubernetes 入口
- 6. Kubernetes 备份和恢复策略
- 7. Kubernetes节点&容器镜像打补丁&生命周期管理
- 8. Kubernetes 集群升级
- 9. Kubernetes 集群容量和存储
- 10. Kubernetes 日志和监控
- 结论
本文将讨论在设置 Kubernetes 集群时必须要考虑的一些high-level的Kubernetes 集群的最佳实践。
当我们要设置Kubernetes 集群时,遵循最佳实践是非常的。
以下是10 个 Kubernetes 集群最佳实践。
1. Kubernetes 网络(云、混合或本地)
Kubernetes 网络的设计必须能够适应未来的集群和应用程序需求。
人们经常犯的一个 Kubernetes 网络错误是使用不属于组织网络的 CIDR 范围。将来当希望集群处于混合网络中时,就需要迁移。
最好在最终确定网络设计之前与组织的网络团队讨论。这样,即使你不是混合网络的一部分,你也可以划分和保留 IP 范围。
每个云提供商都为 Node 和 Pod 网络提供了多种选择。例如,Google Kubernetes Engine 提供多集群服务、具有来自同一 VPC 和对等 VPC 的可路由 pod IP 的VPC 原生集群。
但是,如果你不想公开你的 pod IP,你可能需要在集群中使用IP 伪装代理之类的东西,以便传出流量始终将节点 IP 作为源身份。
此外,入口和出口流量设计也是必不可少的。你可能需要从集群应用程序连接 API 网关、本地系统、代理服务器和第三方 API。
你的设计应包括所有访问要求,以便你在实施过程中不会遇到任何访问限制。
2. Kubernetes 安全性、合规性和基准
以下是通用的 Kubernetes 安全最佳实践。
- 根据组织的政策了解合规性要求和安全基准。如果你使用托管服务,请确保它符合组织的合规策略。
- 你可以查看**kubernetes 的 CIS 基准**。此外,Aquasec 有一个名为Kube-bench的实用程序,用于针对 kubernetes 集群检查 CIS 基准。
- 会有任何 PCI/PII 数据应用程序吗?如果是,则根据组织策略在访问和存储方面隔离这些应用程序。
- 实现 pod 安全性(禁用容器 root 访问、特权访问、只读文件系统等)。
- 安全地访问容器注册表。
- 实施网络策略以控制 pod 到 pod 的流量并根据访问要求隔离应用程序。
- 精心设计的 CI/CD管道,以确保仅在集群中部署经过批准的容器镜像。如果镜像扫描未能满足安全要求,则应扫描容器以查找漏洞并通过 CI 流程。
- 在开始实施之前,与组织的安全专家进行讨论并获得设计和工具的批准。
3.Kubernetes集群访问
设计和记录 Kubernetes 集群的访问方式非常重要。
以下是主要考虑因素。
- 限制手动集群管理员访问。相反,仅应通过自动化允许集群管理员访问。
- 实施 RBAC 的授权并将其与组织的 IAM 集成。
- 允许通过具有有限权限的服务帐户访问 Kubernetes API 。
- 使用Open Policy Agent或Kyverno等 cncf 工具为细粒度的访问控制实施基于策略的访问
- 考虑 openID 连接的选项
- 具有良好的审核机制,用于检查角色并删除未使用的用户、角色、服务帐户等。
设计访问级别,以便你可以将职责移交给使用集群的其他团队。这将为每个人节省时间,并且你可以将更多精力放在工程标准上,而不是重复执行任务。
4. Kubernetes 高可用性和可扩展性
高可用性是 Kubernetes 集群中的另一个关键因素。
在这里,你需要考虑跨不同可用区的工作程序节点可用性。
此外,请考虑使用 Pod 拓扑传播约束将 Pod 传播到不同的可用区。
当我们谈论扩展时,它不仅仅是实例或 Pod 的自动扩展。
这意味着你可以如何优雅地缩小和扩大应用程序而不会中断任何服务。
根据需要在 Kubernetes 上托管的应用程序类型,你可以设计部署以在缩减和修补活动期间优雅地驱逐 pod。
此外,考虑在生产前进行混沌工程实验,以检查集群和应用程序的稳定性。
5. Kubernetes 入口
Ingress 是 Kubernetes 集群的重要组成部分。有很多方法可以设置 kubernetes 入口。
此外,还有不同类型的入口控制器。
你可以尝试适合你组织的合规性策略和扩展要求的最佳选项。
几点考虑,
- 为平台工具提供单独的入口控制器。
- 入口端点的 SSL 管理。
- 不要尝试通过同一个入口路由所有应用程序。如果你的应用程序每天都在增长,它们最终可能会出现在一个大的配置文件中,从而产生问题。
6. Kubernetes 备份和恢复策略
无论是托管服务还是自定义 kubernetes 实现,备份集群都是必不可少的。
当我们说备份时,它主要是备份 etcd。
你应该有一个非常好的设计来自动备份 Kubernetes 集群及其相关组件。
此外,还需要用于恢复集群的设计。
还有一些选项可以以 JSON 格式转储现有对象。你可以使用 dump 来恢复相同或不同集群中的对象。
7. Kubernetes节点&容器镜像打补丁&生命周期管理
修补是一个重复的过程。
谈到 Kubernetes,有节点和容器补丁。
确保在 CI/CD 管道中实施 DevSecOps 原则。
以下是一些最佳实践,
- 与容器扫描工具集成的自动化管道,可按月修补容器映像。
- 无需停机即可执行节点修补的自动化管道。
- 用于管理容器映像生命周期的自动化管道。你不想在注册表中保留这么多过时的版本。
8. Kubernetes 集群升级
通常,你可以通过两种方式执行集群升级
- 升级现有集群(就地升级)
- 创建一个新集群并将应用程序迁移到新集群。
你需要一个非常好的自动化管道设计来执行集群升级。
升级期间可能会发生网络、DNS 和其他组件更改。这完全取决于设计和组织政策。
9. Kubernetes 集群容量和存储
集群容量是一个非常重要的讨论话题。
你需要决定需要运行的集群数量。
一些组织更喜欢运行多个集群以减少爆炸半径并易于维护。而其他人则更喜欢具有大量工作节点的大型集群或具有巨大实例容量的较少节点。
你可以根据需要和管理集群的团队规模来决定集群容量。
接下来是存储部分。
计划如何将卷附加到容器。遵循 Kubernetes 上的所有标准存储安全实践。
在云方面,提供开箱即用的存储配置支持,
如果你计划运行有状态集,那么设计存储以获得高吞吐量和最大可用性非常重要。
此外,有状态集的备份和恢复也很重要。
10. Kubernetes 日志和监控
大多数组织将拥有一个集中的日志记录和监控系统,他们更喜欢将 Kubernetes 与这些系统集成。
以下是一些日志记录和监控的最佳实践。
- 找出将生成多少日志数据的估计值。
- 考虑到巨大数据量,将 Kubernetes 日志摄取到日志系统的机制。
- 扩展集群中部署的日志记录和监控组件。
- 根据组织的政策保留数据。
- 定义和记录用于监控的 KPI。
结论
这些是在设置 Kubernetes 集群时经常被遗漏的一些 Kubernetes 设计最佳实践。
在实施 Kubernetes 时缺少这些方面可能会导致整个集群出现问题,并可能对业务造成损害。
这不仅仅是使用自动化创建 Kubernetes 集群,你需要考虑 Kubernetes 集群生命周期管理并相应地计划自动化工作。
理想情况下,解决方案/技术架构师在设计集群架构时应将所有提到的项目(可能有很多但值得考虑)作为清单,以确保它们在 IaaC 开发期间得到实施。
最后
以上就是谨慎小蚂蚁为你收集整理的云原生 | 10 个 Kubernetes 集群最佳实践的全部内容,希望文章能够帮你解决云原生 | 10 个 Kubernetes 集群最佳实践所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复