zoukankan      html  css  js  c++  java
  • kubernetes实践之三:深入理解Pod对象

    一.Pod定义

    • 最小部署单元
    • 一组容器集合
    • 一个pod中的容器共享网络命名空间
    • Pod是短暂的

    二.Pod容器分类

    • 基础容器

      维护整个Pod的网络命名空间

    • 初始化容器

      先于业务容器开始执行,在应用启动之前进行初始化操作

    • 业务容器

      并行启动

    三.镜像拉取策略(imagePullPolicy)

    • IfNotPresent:(建议)表示如果本地有该镜像,则使用本地的镜像,本地不存在时下载镜像。
    • Always: 默认值,表示每次都重新下载该镜像。
    • Never: 表示仅使用本地镜像

         认证镜像拉取(例如k8s拉取harbor镜像仓库):

          创建secret 认证:

          # kubectl create secret docker-registry harborkey --docker-username=xubaolong --docker-password=xbl --docker-email=admin@126.com --docker-server="192.168.1.156"

         引用认证:

          sepc.imagePullSecrets:harborkey

    四.资源限制

      Pod和Container的资源请求和限制:

    • spec.containers[].resources.limits.cpu :

      CPU限制,单位core数,将用于docker run --cpu-shares参数

    • spec.containers[].resources.limits.memory

      内存限制,单位可以为MiB/GiB等,将用于docker run --memory参数

    • spec.containers[].resources.requests.cpu

      CPU请求,单位core数,容器启动的初始可用数量

    • spec.containers[].resources.requests.memory

      内存请求, 单位可以为MiB/GiB等,容器启动的初始可用数量

    五.重启策略(restartPolicy)

    • Always:当容器终止退出后,总是重启容器,默认策略。
    • OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。
    • Never:当容器终止退出,从不重启容器。

    六.健康检查(Probe)

      Probe有以下两种类型:

    • livenessProbe

              如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。

    • readinessProbe

              如果检查失败,Kubernetes会把Pod从service endpoints中剔除。

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

    • httpGet

              发送HTTP请求,返回200-400范围状态码为成功。

    • exec

              执行Shell命令返回状态码是0为成功。

    • tcpSocket

              发起TCP Socket建立成功。

    七. 调度约束

        

     

    • nodeName用于将Pod调度到指定的Node名称上
    • nodeSelector用于将Pod调度到匹配Label的Node上 

    八. 故障排查

    描述

    Pending

    Pod创建已经提交到Kubernetes。但是,因为某种原因而不能顺利创建。例如下 载镜像慢,调度不成功。

    Running

    Pod已经绑定到一个节点,并且已经创建了所有容器。至少有一个容器正在运行 中,或正在启动或重新启动。

    Succeeded

    Pod中的所有容器都已成功终止,不会重新启动。

    Failed

    Pod的所有容器均已终止,且至少有一个容器已在故障中终止。也就是说,容器 要么以非零状态退出,要么被系统终止。

    Unknown

    由于某种原因apiserver无法获得Pod的状态,通常是由于Master与Pod所在主机 kubelet通信时出错。

    kubectl describe TYPE/NAME
    kubectl logs TYPE/NAME [-c CONTAINER]
    kubectl exec POD [-c CONTAINER] -- COMMAND [args...]

  • 相关阅读:
    array note
    前端开发规范
    java集合分类
    react native环境
    gulp
    关于如何在海量手机号中刷选出想要的手机号
    生成用户头像插件
    下拉加载
    阿里云人脸人体识别调试心得与备忘
    Sublime text3使用时有卡顿现象
  • 原文地址:https://www.cnblogs.com/521football/p/10595119.html
Copyright © 2011-2022 走看看