帮助手册

Kubernetes 指导报表

获取一套最佳实践建议,提升 Kubernetes 资源的成本效益、增强性能并确保可靠性。这些建议按三个优先级别分组:高、中和低。

请按顺序遵循这些建议,以维持高可用性并最大程度降低宕机时间。

最佳实践 

节点

1. 没有标签的资源

优先级:

低

最佳实践:

为工作负载分配适当的标签。

描述:

追踪没有标签的资源会对时间和资源管理产生不利影响。分配标签将提升资源处理效率。

2. 节点 CPU 使用率过高

优先级:

高

最佳实践:

确保节点的 CPU 使用率不超过 90%。

描述:

根据节点容量,为所有倾向于过度使用 CPU 的资源分配合理的限制。

3. 节点内存使用率过高

优先级:

高

最佳实践:

确保节点的内存使用率不超过 90%。

描述:

根据节点容量,为所有倾向于过度使用内存的资源分配合理的限制。

4. 节点 CPU 使用率过低

优先级:

高

最佳实践:

确保节点的 CPU 使用率不低于 10%。

描述:

终止或缩减低使用率节点,以节省资金和资源。分配更少的资源,使操作保持均衡。

5. 节点内存使用率过低

优先级:

高

最佳实践:

确保节点的内存使用率不低于 10%。

描述:

终止或缩减低使用率节点,以节省资金和资源。分配更少的资源,使操作保持均衡。

Pod

1. 没有标签的资源

优先级:

低

最佳实践:

为工作负载分配适当的标签。

描述:

追踪没有标签的资源会对时间和资源管理产生不利影响。分配标签将提升资源处理效率。

2. 没有控制器的 Pod

优先级:

低

最佳实践:

使用适当的控制器部署 Pod。

描述:

没有控制器的 Pod 存在潜在风险,且无法用于扩缩容。控制器可限制 Pod 的访问权限,从而降低安全漏洞风险。在节点发生故障时,这些 Pod 不会被重新调度。

3. 在默认命名空间中运行的工作负载

优先级:

低

最佳实践:

将工作负载移至独立的命名空间或项目

描述:

为工作负载使用不同的命名空间有助于组织对象,并能在 Kubernetes 集群内创建逻辑分区,同时也有助于提升安全性。

Deployment

1. 没有标签的资源

优先级:

低

最佳实践:

为工作负载分配适当的标签。

描述:

追踪没有标签的资源会对时间和资源管理产生不利影响。分配标签将提升资源处理效率。

2. 缺少 CPU 请求

优先级:

中

最佳实践:

为工作负载配置 CPU 请求。

描述:

当工作负载未指定容器 CPU 请求时,集群无法在节点之间均匀分配负载。为所有工作负载配置 CPU 请求,将使集群能够均匀分配负载。

3. 缺少 CPU 限制

优先级:

中

最佳实践:

为工作负载配置 CPU 限制。

描述:

当工作负载未指定容器 CPU 限制时,集群无法在节点之间均匀分配负载。为所有工作负载配置 CPU 限制,将使集群能够均匀分配负载。

4. 缺少内存请求

优先级:

中

最佳实践:

为工作负载配置内存请求。

描述:

当工作负载未指定容器内存请求时,集群无法在节点之间均匀分配负载。为所有工作负载配置内存请求,将使集群能够均匀分配负载。

5. 缺少内存限制

优先级:

中

最佳实践:

为工作负载配置内存限制。

描述:

当工作负载未指定容器内存限制时,集群无法在节点之间均匀分配负载。为所有工作负载配置内存限制,将使集群能够均匀分配负载。

6. 缺少存活探针

优先级:

中

最佳实践:

配置存活探针(liveness probe),在容器状态不就绪时重启容器。

描述:

重启容器与了解其状态同样重要,后者表明容器尚未准备好接收流量。

7. 缺少就绪探针

优先级:

中

最佳实践:

配置就绪探针(readiness probe),以指示容器的就绪状态。

描述:

如果容器的就绪状态未知且处于非就绪状态,流量可能会发生积压。

8. 未指定镜像标签

优先级:

高

最佳实践:

指定稳定的标签,有助于明确管理容器镜像。

描述:

标签使您能够控制应用程序更新的时机,同时降低因镜像版本差异导致意外行为的风险。

9. ImagePullPolicy 未设置为 Always

优先级:

低

最佳实践:

将 ImagePullPolicy 设置为 Always,以确保获取最新版本的镜像。

描述:

当 ImagePullPolicy 设置为 Always 时,每次启动 Kubernetes Pod 时都能确保部署最新版本的镜像。

10. 允许以 Root 身份运行

优先级:

高

最佳实践:

确保不允许 RunAsRoot。

描述:

如果允许 RunAsRoot,Root 用户将拥有所有权限,安全性可能因此受损。

11. 允许以特权模式运行

优先级:

高

最佳实践:

确保不允许 RunAsPrivileged。

描述:

如果允许 RunAsPrivileged,容器将能够访问主机的所有系统资源,包括内核功能和设备。

12. 允许特权提升

优先级:

高

最佳实践:

确保不允许 AllowPrivilegedEscalations。

描述:

如果允许 AllowPrivilegedEscalations,某个随机进程可能获得比其父进程更高的权限。

13. 未设置只读根文件系统

优先级:

高

最佳实践:

将 ReadOnlyRootFileSystem 设置为 True。

描述:

如果 ReadOnlyRootFileSystem 未设置为 True,容器将可以访问并编辑挂载的主机卷。

14. 在默认命名空间中运行的工作负载

优先级:

低

最佳实践:

将工作负载移至独立的命名空间或项目

描述:

为工作负载使用不同的命名空间有助于组织对象,并能在 Kubernetes 集群内创建逻辑分区,同时也有助于提升安全性。

15. 每个 Deployment 只有一个副本

优先级:

中

最佳实践:

为 Deployment 创建多个副本以实现容错。

描述:

如果当前副本发生故障,其他副本将维持工作负载的运行。建议为每个 Deployment 创建多个副本。

DaemonSet

1. 没有标签的资源

优先级:

低

最佳实践:

为工作负载分配适当的标签。

描述:

追踪没有标签的资源会对时间和资源管理产生不利影响。分配标签将提升资源处理效率。

2. 缺少 CPU 请求

优先级:

中

最佳实践:

为工作负载配置 CPU 请求。

描述:

当工作负载未指定容器 CPU 请求时,集群无法在节点之间均匀分配负载。

3. 缺少 CPU 限制

优先级:

中

最佳实践:

为工作负载配置 CPU 限制。

描述:

当工作负载未指定容器 CPU 限制时,集群无法在节点之间均匀分配负载。

4. 缺少内存请求

优先级:

中

最佳实践:

为工作负载配置内存请求。

描述:

当工作负载未指定容器内存请求时,集群无法在节点之间均匀分配负载。

5. 缺少内存限制

优先级:

中

最佳实践:

为工作负载配置内存限制。

描述:

当工作负载未指定容器内存限制时,集群无法在节点之间均匀分配负载。

6. 缺少存活探针

优先级:

中

最佳实践:

配置存活探针(liveness probe),在容器状态不就绪时重启容器。

描述:

重启容器与了解其状态同样重要,后者表明容器尚未准备好接收流量。

7. 缺少就绪探针

优先级:

中

最佳实践:

配置就绪探针(readiness probe),以指示容器的就绪状态。

描述:

如果容器的就绪状态未知且处于非就绪状态,流量可能会发生积压。

8. 未指定镜像标签

优先级:

高

最佳实践:

指定稳定的标签,有助于明确管理容器镜像。

描述:

标签使您能够控制应用程序更新的时机,同时降低因镜像版本差异导致意外行为的风险。

9. ImagePullPolicy 未设置为 Always

优先级:

低

最佳实践:

将 ImagePullPolicy 设置为 Always,以确保获取最新版本的镜像。

描述:

当 ImagePullPolicy 设置为 Always 时,每次启动 Kubernetes Pod 时都能确保部署最新版本的镜像。

10. 允许以 Root 身份运行

优先级:

高

最佳实践:

确保不允许 RunAsRoot。

描述:

如果允许 RunAsRoot,Root 用户将拥有所有权限,安全性可能因此受损。

11. 允许以特权模式运行

优先级:

高

最佳实践:

确保不允许 RunAsPrivileged。

描述:

如果允许 RunAsPrivileged,容器将能够访问主机的所有系统资源,包括内核功能和设备。

12. 允许特权提升

优先级:

高

最佳实践:

确保不允许 AllowPrivilegedEscalations。

描述:

如果允许 AllowPrivilegedEscalations,某个随机进程可能获得比其父进程更高的权限。

13. 未设置只读根文件系统

优先级:

高

最佳实践:

将 ReadOnlyRootFileSystem 设置为 True。

描述:

如果 ReadOnlyRootFileSystem 未设置为 True,容器将可以访问并编辑挂载的主机卷。

14. 在默认命名空间中运行的工作负载

优先级:

低

最佳实践:

将工作负载移至独立的命名空间或项目

描述:

为工作负载使用不同的命名空间有助于组织对象,并能在 Kubernetes 集群内创建逻辑分区,同时也有助于提升安全性。

StatefulSet 

1. 没有标签的资源

优先级:

低

最佳实践:

为工作负载分配适当的标签。

描述:

追踪没有标签的资源会对时间和资源管理产生不利影响。分配标签将提升资源处理效率。

2. 缺少 CPU 请求

优先级:

中

最佳实践:

为工作负载配置 CPU 请求。

描述:

当工作负载未指定容器 CPU 请求时,集群无法在节点之间均匀分配负载。

3. 缺少 CPU 限制

优先级:

中

最佳实践:

为工作负载配置 CPU 限制。

描述:

当工作负载未指定容器 CPU 限制时,集群无法在节点之间均匀分配负载。

4. 缺少内存请求

优先级:

中

最佳实践:

为工作负载配置内存请求。

描述:

当工作负载未指定容器内存请求时,集群无法在节点之间均匀分配负载。

5. 缺少内存限制

优先级:

中

最佳实践:

为工作负载配置内存限制。

描述:

当工作负载未指定容器内存限制时,集群无法在节点之间均匀分配负载。

6. 缺少存活探针

优先级:

中

最佳实践:

配置存活探针(liveness probe),在容器状态不就绪时重启容器

描述:

重启容器与了解其状态同样重要,后者表明容器尚未准备好接收流量。

7. 缺少就绪探针

优先级:

中

最佳实践:

配置就绪探针(readiness probe),以指示容器的就绪状态。

描述:

如果容器的就绪状态未知且处于非就绪状态,流量可能会发生积压。

8. 未指定镜像标签

优先级:

高

最佳实践:

指定稳定的标签,有助于明确管理容器镜像。

描述:

标签使您能够控制应用程序更新的时机,同时降低因镜像版本差异导致意外行为的风险。

9. ImagePullPolicy 未设置为 Always

优先级:

低

最佳实践:

将 ImagePullPolicy 设置为 Always,以确保获取最新版本的镜像。

描述:

当 ImagePullPolicy 设置为 Always 时,每次启动 Kubernetes Pod 时都能确保部署最新版本的镜像。

10. 允许以 Root 身份运行

优先级:

高

最佳实践:

确保不允许 RunAsRoot。

描述:

如果允许 RunAsRoot,Root 用户将拥有所有权限,安全性可能因此受损。

11. 允许以特权模式运行

优先级:

高

最佳实践:

确保不允许 RunAsPrivileged。

描述:

如果允许 RunAsPrivileged,容器将能够访问主机的所有系统资源,包括内核功能和设备。

12. 允许特权提升

优先级:

高

最佳实践:

确保不允许 AllowPrivilegedEscalations。

描述:

如果允许 AllowPrivilegedEscalations,某个随机进程可能获得比其父进程更高的权限。

13. 未设置只读根文件系统

优先级:

高

最佳实践:

将 ReadOnlyRootFileSystem 设置为 True。

描述:

如果 ReadOnlyRootFileSystem 未设置为 True,容器将可以访问并编辑挂载的主机卷。

14. 在默认命名空间中运行的工作负载

优先级:

低

最佳实践:

将工作负载移至独立的命名空间或项目。

描述:

为工作负载使用不同的命名空间有助于组织对象,并能在 Kubernetes 集群内创建逻辑分区,同时也有助于提升安全性。

Job

1. 没有标签的资源

优先级:

低

最佳实践:

为工作负载分配适当的标签。

描述:

追踪没有标签的资源会对时间和资源管理产生不利影响。分配标签将提升资源处理效率。

2. Job 完成后未清理

优先级:

低

最佳实践:

使用 ttlSecondsAfterFinished 参数配置 Job,使其在完成后自动清理。

描述:

ttlSecondsAfterFinished 参数用于限制已完成预期操作的 Job 对象的生命周期。如果 Job 未被清理,将影响集群操作。

本文档对您有帮助吗?

您愿意帮助我们改进文档吗?请告诉我们哪些方面可以做得更好。


很抱歉本文档未能让您满意。我们希望了解可以从哪些方面改进您的体验。


感谢您抽出时间分享反馈。我们将利用您的反馈来改进在线帮助资源。

短链接已复制!