K8s生产中如何为不同的业务做资源配置和服务质量保证呢?

对于关键基础组件,可设置等值的 Request 和 Limit 以确保资源稳定性和服务质量。对于资源使用波动的服务,Java 应用,应配置 Request 为稳态需求,Limit 为启动峰值需求,以处理瞬时资源消耗。
在生产环境中,强烈建议为每一个工作负载配置资源限制

工作负载配置资源 Request 和 Limit 有三种情况,分别对应着三种服务质量。
未配置资源配额:服务质量为 BestEffort,意思是“尽力而为”,服务质量中优先级最低,当产生驱逐行为时候,kubernetes 首先驱逐这一类型的 Pod
Request 小于 Limit:服务质量为 Burstable,意思是“突发”,优先级介于 BestEffort 和 Guaranteed 之间
Request 等于 Limit:服务质量为 Guaranteed,字面意思是“保证”,优先级最高

k8s故障自愈能解决哪些问题?
1、当业务进程意外中断、节点产生故障时,系统可以快速识别,自动重启并恢复服务
2、自愈能够自动转移故障,也就是让业务不健康的节点不接收流量,保证用户体验

要实现Kubernetes(k8s)的故障自愈功能,通过以下方式配置:

  1. 定义健康检查
    Kubernetes通过健康检查来判断容器或Pod的状态,常见的健康检查包括:
    Liveness Probe(存活探针):用于判断容器是否存活,如果探针失败,则Kubernetes会重启该容器。
    Readiness Probe(就绪探针):用于判断容器是否准备好接收流量,如果探针失败,则Kubernetes会暂停将流量发送到该容器。
    探针可以通过在Pod配置文件(如Deployment或StatefulSet)中定义来实现。例如:
    apiVersion: v1
    kind: Pod
    metadata:
    name: test
    spec:
    containers:
    name: test
    image: test:v1.0
    livenessProbe:
    httpGet:
    path: /healthz
    port: 8080
    initialDelaySeconds: 3
    periodSeconds: 5
    readinessProbe:
    httpGet:
    path: /ready
    port: 8080
    initialDelaySeconds: 5
    periodSeconds: 10

livenessProbe和readinessProbe分别配置了HTTP GET请求来检查容器的健康状态。
2. 使用控制器和自动重启
Kubernetes中的控制器(Deployment、StatefulSet)负责管理Pod的生命周期,包括自动重启故障的Pod。如果Pod崩溃或节点故障,控制器会负责重新创建Pod,确保应用程序的高可用性。

  1. 节点自动恢复
    Kubernetes具有自动故障转移的能力,即当节点或Pod故障时,Kubernetes可以自动将应用程序的流量转移到健康的节点或Pod上,从而保证服务的连续性和可用性。这需要适当的配置和使用高可用性的组件,如多个副本的Deployment或StatefulSet。