k8s (三)Pod

目录

Pod介绍

Pod生命周期

Pod phase

Pod 容器探针


Pod介绍

  • Pod 是k8s中创建或部署的最小单位;
  • 一个Pod里可以有一个容器,或者多个容器,例如同一个pod中可以同时有一个nginx容器和java容器,nginx通过localhost:port反向代理同一个pod下的java程序容器;
  • pod中容器共享网络IP,你可以通过此ip+不同端口访问到该pod下不同服务容器;
  • Pod中容器共享volume存储;
  • Pod中容器可以自动重启,但Pod本身不会重启,生命周期结束或被删除不会再次启动;
  • Pod的自愈是通过RC、RS、Deployment等实现的,如滚动更新、重新部署;
  • 几乎很少单独创建Pod来部署应用,都是依托于Deployment等控制器来部署Pod的。

Pod生命周期

Pod phase

一个正常或不正常的Pod拥有如下几个phase(生命周期阶段)

  • 挂起(Pending):已创建Pod,但Pod中有一个或多个容器未创建完成,如正在拉取镜像;
  • 运行中(Running):Pod已经绑定在某个节点上,Pod中的容器都已创建,至少有一个容器在运行、启动或重启状态;
  • 成功(Succeeded):Pod中的所有容器都被成功终止,并且不会再重启;
  • 失败(Failed):Pod中容器都以非0状态退出或者被系统终止;
  • 未知(Unknown):由于某些原因无法获得Pod的状态,通常是因为Pod所在主机通信失败。

Pod 容器探针

探针的作用是对容器进行健康检查,如果检查失败则自动重启

探针分为两类

liveness probe(存活探针)

  用于判断容器是否存活,即Pod状态是否为running,如果探寻到容器不健康则通过kubelet将容器kill掉,并根据重启策略决定是否重启容器。如果容器不包含该探针,则kubelet认为容器的该探针返回值永远为成功。

readiness probe(就绪探针)

  用于判断容器是否启动完成,并能接受请求,如果探测失败,将不会被service代理该Pod。

每种探针都支持下面三种探测方式

  • ExecAction:在容器内执行指定命令,命令退出返回码为0则视为诊断成功;
  • TCPSocketAction:对容器端口进行TCP检查,端口打开视为诊断成功;
  • HTTPGetAction:对容器执行HTTP Get请求,返回状态码大于等于200且小于400,视为诊断成功。

示例:

      exec:
        command:
        - cat
        - /tmp/healthy
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20
     httpGet:
       path: /healthz
       port: 8080
       httpHeaders:
       - name: X-Custom-Header
         value: Awesome
       initialDelaySeconds: 3
       periodSeconds: 3

探针探测结果有以下三者之一

  • Success:Container通过检测
  • Failure:Container未通过检测
  • Unknown:未能执行检查,因此不采取任何措施

Pod并不是检测失败就重启,是否重启取决于下面三个策略

  • Always:总是重启
  • OnFailure:如果失败就重启
  • Never:永远不重启

示例:

apiVersion: v1
kind: Pod
metadata:
  name: test
  labels:
    app: test
spec:
  containers:
  - name: test
    image: nginx
    ports:
    - containerPort: 80
    readinessProbe:
      httpGet:
        path: /
        port: 80
        scheme: HTTP
      initialDelaySeconds: 5
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 1
    livenessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 15
      periodSeconds: 20
      successThreshold: 1
      timeoutSeconds: 1
  • initialDelaySeconds:指定容器启动后多少秒后进行探测
  • periodSeconds:每隔多少秒进行探测
  • timeoutSeconds: 探测超时时间
  • successThreshold:探测失败后最少连续几次成功探测才被认定为成功,默认1,liveness存活探针来说必须是1
  • failureThreshold:探测成功后最少连续几次失败才被认定为失败,默认3,最小1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值