首页 > 其他分享 >k8s 小记

k8s 小记

时间:2023-02-19 23:33:40浏览次数:34  
标签:容器 HTTP 探针 探测 镜像 pod k8s 小记

一、Pod 常见状态

Unschedulable

pod 不能被调度,kube-scheduler 没有匹配到合适的 node 节点

PodScheduled

pod 正处于调度中,在 kube-scheduler 刚开始调度的时候,还没有将 pod 分配到指定的 node, 在筛选出合适的节点后就会更新 etcd 数据,将 pod 分配到指定的 node

Pending

正在创建 pod,但 pod 中的容器还没有全部被创建完成。处于此状态的 pod 应该检查依赖的存储是否有权限挂载、镜像是否正常等

Failed

pod 中有容器启动失败而导致 pod 工作异常

Unknown

由于某种原因无法获得 pod 的当前状态, 通常是由于与 pod 所在的 node 节点通信错误

Initialized

所有 pod 中的初始化容器已经完成了

Running

pod 内部的容器已经被创建并且启动

Ready

表示 pod 中的容器已经可以提供访问服务

Error

pod 启动过程中发生错误

NodeLost

pod 所在节点失联

Waiting

pod 等待启动

Terminating

pod 正在被销毁

CrashLoopBackOff

pod 之前是启动了,后面又异常退出了,只要 pod 的 restartPolicy 不是 Never 就可能被重启拉起,此时 pod 的 RestartCounts 通常是大于 0 的

ImagePullBackOff

pod 所在的 node 节点下载镜像失败

InvalidImageName

node 节点无法解析镜像名称导致的镜像无法下载

ImageInspectError

无法校验镜像,镜像不完整导致

ErrImageNeverPull

策略禁止拉取镜像,可能镜像中心权限是私有等

RegistryUnavailable

镜像服务器不可用,网络原因或 harbor 宕机

ErrImagePull

镜像拉取出错,超时或下载被强制终止

CreateContainerConfigError

不能创建 kubelet 使用的容器配置

CreateContainerError

创建容器失败

RunContainerError

pod 运行失败,容器中没有初始化 PID 为1的守护进程等

ContainersNotInitialized

pod 没有初始化完毕

ContainersNotReady

pod 没有准备完毕

ContainerCreating

pod 正在创建中

PodInitializing

pod 正在初始化中

DockerDaemonNotReady

node 节点 docker 服务没有启动

NetworkPluginNotReady

网络插件没有启动

二、Pod 探针

2.1 探针类型

  • startupProbe
  • 启动探针,kubernetes v1.16 引入 alpha 版;
  • 判断容器内的应用程序是否已启动完成,如果配置了启动探测,则会先禁用所有其它的探测,直到 startupProbe 检测成功为止,如果 startupProbe 探测失败,则 kubelet 将杀死容器,容器将按照重启策略进行下一步操作,如果容器没有提供启动探测,则默认状态为成功。
  • livenessProbe
  • 存活探针
  • 检测容器容器是否正在运行,如果存活探测失败,则 kubelet 会杀死容器,并且容器将受到其重启策略的影响,如果容器不提供存活探针,则默认状态为 Success,livenessProbe 用于控制是否重启 pod。
  • readinessProbe
  • 就绪探针
  • 如果就绪探测失败,端点控制器将从与 pod 匹配的所有 Service 的端点中删除该 pod 的 IP 地址,初始延迟之前的就绪状态默认为 Failure,如果容器不提供就绪探针,则默认状态为 Success,readinessProbe 用于控制 pod 是否添加至 service。


2.2 探针常用通用配置参数

  • initialDelaySeconds: 120
  • 初始化延迟时间,告诉 kubelet 在执行第一次探测前应该等待多少秒,默认是0秒,最小值是0。
  • periodSeconds: 60
  • 探测周期间隔时间,指定了 kubelet 应该每多少秒执行一次存活探测,默认是 10 秒,最小值是 1。
  • timeoutSeconds: 5
  • 单次探测超时时间,探测的超时后等待多少秒,默认值是1秒,最小值是1。
  • successThreshold: 1
  • 从失败转为成功的重试次数,探测器在失败后,被视为成功的最小连续成功数,默认值是1,存活探测的这个值必须是1,最小值是 1。
  • failureThreshold: 3
  • 从成功转为失败的重试次数,当 pod 启动了并且探测到失败,Kubernetes 的重试次数,存活探测情况下的放弃就意味着重新启动容器,就绪探测情况下的放弃 pod 会被打上未就绪的标签,默认值是3,最小值是1。


2.3 探针http配置参数

HTTP 探测器可以在 httpGet 上配置额外的字段:

  • host
  • 连接使用的主机名,默认是 pod 的 IP,也可以在HTTP头中设置 “Host” 来代替。
  • scheme: http
  • 用于设置连接主机的方式(HTTP 还是 HTTPS),默认是 HTTP。
  • path: /
  • 访问 HTTP 服务的路径。
  • httpHeaders:
  • 请求中自定义的 HTTP 头,HTTP 头字段允许重复。
  • port: 80
  • 访问容器的端口号或者端口名, 如果数字必须在 1 ~ 65535 之间。


2.4 样例

...
startupProbe:
failureThreshold: 3
httpGet:
path: /
port: 8761
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: 8761
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: 8761
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
...


标签:容器,HTTP,探针,探测,镜像,pod,k8s,小记
From: https://blog.51cto.com/belbert/6066963

相关文章

  • k8s--kind 搭建 k8s 集群
    介绍Kind是一个使用Docker容器“节点”运行本地Kubernetes集群的工具。它主要用于测试Kubernetes本身,但也可用于本地开发或CI。顾名思义,就是将Kubernetes所需要的......
  • K8s:通过Velero实现集群备份和恢复
    写在前面分享一个k8s集群容灾备份恢复开源工具Velero博文内容涉及:Velero的简单介绍Velero安装下载备份恢复Demo,以及容灾测试Demo恢复失败情况分析理解不足......
  • K8S的基础概念
    一、Kubernetes介绍1、什么是Kubernetes?Kubernetes(通常称为K8s,K8s是将8个字母“ubernete”替换为“8”的缩写)是一个以容器为中心的基础架构,可以实现在物理集群或虚拟......
  • kubeadm搭建k8s
    一、kubeadm部署K8S集群架构主机名IP地址安装组件master(2C/4G,cpu核心数要求大于2)192.168.160.20docker、kubeadm、kubelet、kubectl、flannelnode01(2C/2G......
  • K8S的kubectl命令详解
    一、kubectl基本命令1、陈述式资源管理方法:1、kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口2、kubectl是官方的CLI命令行工具,用于与a......
  • K8SYaml文件详解
    一、K8S支持的文件格式kubernetes支持YAML和JSON文件格式管理资源对象。JSON格式:主要用于api接口之间消息的传递YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内......
  • K8S中Pod概念
    一、资源限制Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是......
  • K8S中Pod概念
    一、资源限制Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是......
  • 【云原生kubernetes】k8s service使用详解
    一、什么是服务service?在k8s里面,每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失,重启pod的ip地址会发生变化,此时客户如果访问原先的ip地址则会报错;S......
  • k8s学习-记录一次集群kube-controller,scheduler等多个pod重启的问题解决
    问题一次,集群的kube-controller,scheduler等容器重启,查看日志,发现时间很集中,在秒级范围内多个pod同时重启。查看pod状态kubectlgetpod-nkube-system|grepkube-contro......