zoukankan      html  css  js  c++  java
  • Docker Kubernetes 健康检查

    Docker Kubernetes 健康检查

    • 官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

    提供Probe探测机制,有以下两种类型:

    • livenessProbe:如果检查失败,将杀死容器,然后根据Pod的重启策略来决定是否重启(根据Pod的restartPolicy来操作)。
    • readinessProbe:如果检查失败,Kubernetes会把Pod从服务代理的分发后端剔除。

    Probe支持以下三种检查方法:

    • httpGet
    • 发送HTTP请求,返回200-400范围状态码为成功。
    • exec
    • 执行Shell命令返回状态码是0为成功。
    • tcpSocket
    • 发起TCP Socket建立成功。判断端口有没有打开

    环境:

    • 系统:Centos 7.4 x64
    • Docker版本:18.09.0
    • Kubernetes版本:v1.8
    • 管理节点:192.168.1.79
    • 工作节点:192.168.1.78
    • 工作节点:192.168.1.77

    案例一

    1、管理节点:创建yaml文件

    vim check.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.10
        ports:
        - containerPort: 80
        livenessProbe:
          httpGet:
            path: /index.html
            port: 80
    # api版本
    apiVersion: v1
    # 指定创建资源对象
    kind: Pod
    # 源数据、可以写name,命名空间,对象标签
    metadata:
    # 服务名称
      name: nginx-pod
    # 标签
      labels:
    # 标签名
        app: nginx 
    # 容器资源信息
    spec:
    # 容器管理
      containers:
    # 容器名称
      - name: nginx
    # 容器镜像
        image: nginx:1.10
    # 端口管理
        ports:
    # 指定暴露端口
        - containerPort: 80
    # 健康检查模式(httpGet、exec、tcpSocket)
        livenessProbe:
    # 选择健康检查类型
          httpGet:
    # 选择检查文件
            path: /index.html
    # 选择检查暴露端口
            port: 80
    文件注释

    2、管理节点:创建Pod

    kubectl create -f check.yaml
    命令:kubectl describe pods nginx-pod
    
    # 探测端口为80,探测文件名index.html,timeout超市时间为一秒,period每10秒探测一次
        Liveness:       http-get http://:80/index.html delay=0s timeout=1s period=10s #success=1 #failure=3
    查看健康检查pod状态

     案例二

    语法格式

    # 语法格式
    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
        livenessProbe:
          exec:
            command:
            - cat
            - /tmp/healthy
          # 在容器启动五秒之后开始执行健康检查
          initialDelaySeconds: 5
          # 每隔多长时间执行一次
          periodSeconds: 5

    1、通过官方实例测试健康检查

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

    2、执行

    kubectl create -f pod4.yaml

    3、查看测试

    kubectl get pods

    经过一段时间检查重启

    4、查看事件

     kubectl describe pod liveness-exec

    ....
    Events:
      Type     Reason     Age                   From                    Message
      ----     ------     ----                  ----                    -------
      Normal   Scheduled  5m8s                  default-scheduler       Successfully assigned default/liveness-exec to 192.168.1.110
      Normal   Pulled     2m35s (x3 over 5m7s)  kubelet, 192.168.1.110  Successfully pulled image "busybox"
      Normal   Created    2m35s (x3 over 5m6s)  kubelet, 192.168.1.110  Created container
      Normal   Started    2m34s (x3 over 5m6s)  kubelet, 192.168.1.110  Started container
      Warning  Unhealthy  112s (x9 over 4m32s)  kubelet, 192.168.1.110  Liveness probe failed: cat: can't open '/tmp/healthy': No such file or directory
      Normal   Pulling    81s (x4 over 5m7s)    kubelet, 192.168.1.110  pulling image "busybox"
      Normal   Killing    6s (x4 over 3m51s)    kubelet, 192.168.1.110  Killing container with id docker://liveness:Container failed liveness probe.. Container will be killed and recreated.
  • 相关阅读:
    验证码处理 -- 爬虫
    Django知识点总结
    关于sql去重
    tsxt-01
    崔老师爬取top100的源码(会403)
    简单爬取网页源码
    爬取猫眼top100
    python-自动发邮件
    python-装饰器
    Python 爬虫基础Selenium库的使用
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/10012087.html
Copyright © 2011-2022 走看看