您现在的位置是:首页 >学无止境 >Kubernetes 服务发现与负载均衡网站首页学无止境

Kubernetes 服务发现与负载均衡

iRayCheung 2024-06-26 14:23:52
简介Kubernetes 服务发现与负载均衡

云原生技术公开课笔记

应用的状态可以被实时观测:

  • 健康状态
  • 资源使用
  • 实时日志
  • Liveness Probe(就绪探针)
  • Readness(存活探针)

应用健康状态

探测方式

  • httpGet 发送 HTTP 请求返回200-399状态码表明容器健康
  • Exec 通过执行命令来检查服务是否正常,命令返回0表示容器健康
  • tcpSocket 通过容器的 IP 和端口执行 TCP 检查,如果能够建立 TCP 连接表示容器健康

探测结果

  • Success 容器通过了检查
  • Failure 容器未通过检查
  • Unknown 未能执行检查,不采取任何操作

重启策略

  • Always 总是重启
  • OnFailure 失败才重启
  • Never 永不重启

API 对象

exec

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600;
    livenessProb:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5

httpGet

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/liveness
    args:
    - /server
    livenessProb:
      httpGet:
        path: /healthz
        port: 8000
        httpHeaders:
        - name: Custom-Header
          value: Awesome
      initialDelaySeconds: 5
      periodSeconds: 5

tcpSocket

apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  labels:
    app: goproxy
spec:
  containers:
  - name: goproxy
    image: k8s.gcr.io/goproxy:0.1
    ports:
    - containerPort: 8000
    readnessProbe:
      tcpSocket:
        port: 8000
      initialDelaySeconds: 5
      periodSecond: 10
    livenessProbe:
      tcpSocket:
        port: 8000
      initialDelaySeconds: 5
      periodSecond: 20

参数

  • initialDelaySeconds Pod 启动后延迟多久进行检查
  • periodSeconds 检查的间隔时间
  • timeoutSeconds 探测的超时时间
  • successThreshold 探测失败后再次判断成功的阈值
  • failureThreshold 探测失败的重试次数
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。