管理 Pod 稳定性

本节提供有关如何使用服务质量、优先级类别、驱逐阈值和资源监控来维护集群节点 pod 稳定性的信息。

Kubernetes 集群管理系统资源的分配,并可以驱逐 Pod 以释放系统资源。以下是一些可以配置 Redis Enterprise 节点 Pod 以保持 Pod 稳定性的方法:

保证服务质量

正在运行的 Pod 被分配了服务质量度量,该度量是三种服务质量类别之一:保证、可突发和尽力而为。您可以遵循正确的指导原则,确保将保证类分配给 Redis Enterprise 节点 Pod。

要获得分配的保证服务质量类别:

  • pod中的每个容器都必须有一个内存限制和内存请求,并且它们必须相同。
  • pod中的每个容器都必须有一个CPU限制和一个CPU请求,并且它们必须相同。

如果 Redis Enterprise CRD 中未指定资源限制和请求,则操作员创建的 Redis Enterprise 集群 CRD 的默认版本将满足这些要求。否则,您必须在redisEnterpriseNodeResources CRD 部分中将内存和 CPU 的限制和请求设置为相同的值。

Sidecar 容器还会影响 pod 的服务类别分配质量。

要检查任何正在运行的 Redis Enterprise 节点 pod 的服务质量类别,请运行:

kubectl get pod rec-0 --o jsonpath="{.status.qosClass}"

其中rec-0是与 Redis Enterprise 集群关联的其中一个 pod 的名称。

使用优先级来防止抢占

调度 Redis Enterprise 节点 pod 时,可以使用该 属性 为其分配优先级类priorityClassName。此属性值是集群中必须已存在的优先级类的名称。

足够高的优先级将防止其他优先级较低的工作负载抢占 Redis 企业节点的调度。同样,当优先级较低的工作负载部署在同一集群上时,较高的值也可能防止驱逐。

要成功使用此策略,首先需要创建一个具有非常大的优先级值的优先级类:

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: redis-enterprise-priority
value: 1000000000
globalDefault: false
description: "This priority class should be used for Redis Enterprise pods only."

然后,您可以在 Redis Enterprise 集群 CRD 中按名称引用优先级类:

apiVersion: app.redislabs.com/v1
kind: RedisEnterpriseCluster
metadata:
  name: example-redisenterprisecluster
spec:
  size: 3
  priorityClassName: "redis-enterprise-priority"

或者,您也可以完全禁用抢占

管理驱逐门槛

驱逐阈值通常由 kubelet 参数管理。您可以设置阈值:

我们建议您:

  • 将软驱逐阈值设置 为高于硬驱逐阈值。较高的软阈值使得节点状况更早发生变化,并向管理员发出警报。
  • 设置eviction-max-pod-grace-period得足够高,以允许 RS pod 在被强制杀死之前迁移 Redis 数据库。
  • 设置eviction-soft-grace-period得足够高,以便管理员(或 k8s 自动缩放机制)可以扩大或缩小 k8s。

监控内存和磁盘使用情况

我们建议您监控节点的 MemoryPressure 和 DiskPressure。当这两个条件都为真时,即满足驱逐阈值 ,Pod 将被驱逐。

要检索标志,请运行以下命令:

$kubectl get nodes -o jsonpath='{range .items[*]}name:{.metadata.name}{"\t"}MemoryPressure:{.status.conditions[?(@.type == "MemoryPressure")].status}{"\t"}DiskPressure:{.status.conditions[?(@.type == "DiskPressure")].status}{"\n"}{end}'

name:gke-55d1ac88-213c	MemoryPressure:False	DiskPressure:False
name:gke-55d1ac88-vrpp	MemoryPressure:False	DiskPressure:False
name:gke-7253cc19-42g0	MemoryPressure:False	DiskPressure:False
给此页面评分
返回顶部 ↑