• kubernetes之pod生命周期,pod重启策略, 镜像拉取策略


    pod声明周期(状态):pending , running, succeeded, failed, unknown

    挂起(Pending):Pod 已被 Kubernetes 系统接受,但有一个或者多个容器镜像尚未创建。等待时间包括调度 Pod 的时间和通过网络下载镜像的时间,这可能需要花点时间。
    运行中(Running):该 Pod 已经绑定到了一个节点上,Pod 中所有的容器都已被创建。至少有一个容器正在运行,或者正处于启动或重启状态。
    成功(Succeeded):Pod 中的所有容器都被成功终止,并且不会再重启。
    失败(Failed):Pod 中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止。
    未知(Unknown):因为某些原因无法取得 Pod 的状态,通常是因为与 Pod 所在主机通信失败。
    

    pod重启策略: 当某个容器异常退出或者健康检查失败, kubelet将根据RestartPolicy的设置来进行相应的操作, 重启策略有Always , OnFailure, Never

    Always: 当容器失效时, 由kubelet自动重启该容器
    OnFailure: 当容器终止运行且退出码不为0时, 由kubelet自动重启该容器
    Never: 不论容器运行状态如何, kubelet都不会重启该容器
    

    kubelet重启失效容器的时间间隔以sync-frequency乘以2n来计算, 例如1丶2丶4丶8倍等, 最长延时5min, 并且在重启后的10min后重置该时间
    pod的重启策略与控制方式息息相关

    RC和DeamonSet必须设置为Always,需要保证该容器持续运行
    Job: OnFailure或Never, 确保容器执行完成后不再重启
    

    镜像拉取策略

    Always: 表示每次都尝试重新拉取镜像
    IfNotPresent: 表示如果本地有镜像, 则使用本地的镜像, 本地不存在时拉取镜像
    Never: 表示仅使用本地镜像
    

    示例

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
      namespace: default 
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
    
        spec:
          restartPolicy: Always
          containers:
          - name: nginx
            image: nginx:1.12
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 80
    
  • 相关阅读:
    Java编程思想:第8章 多态
    Java编程思想:第7章 复用类
    Java编程思想:第6章 访问权限控制
    Java编程思想:第5章 初始化与清理
    Java编程思想:第4章 控制执行流程
    Java编程思想:第3章 操作符
    sqoop常用命令记录
    sqoop从hive导出到mysql报错: failed with state FAILED due to: Task failed
    flink-sql解析canal-json实现实时同步
    hive爬坑
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/11284419.html
Copyright © 2020-2023  润新知