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 未被清理,将影响集群操作。
-
本页内容
- 节点
- Pod
- Deployment
- DaemonSet
- StatefulSet
- Job
