针对上篇文章"kubernetes探索-Pod面试"做一点点补充...
1. 简述Pod的删除流程
1) kube-apiserver接收到用户的删除指令,默认等待30s(优雅退出时间),随后认为pod已死亡,将其标记为Terminating状态;
2) kubelet监控到pod标记为Terminating,启动关闭过程:
① endpoints-controller从service的endpoints列表中移除与此pod相关的endpoint;
② 若该pod定义了停止前的钩子函数,则会在pod内部调用该函数;
③ pod内的容器进程被发送TREM信号(kill -14);
④ 超过优雅退出时间后,pod内的所有进程会被发送SIGKIll信号(kill -9)
2. Pod一直处于pending状态原因有哪些?如何排查?
## 排查pod执行详情 kubectl describe pod_name
情况1:pod开始创建时,本身会处于pending状态,pod内部可能正在拉取镜像/创建容器;
情况2:调度器调度失败,Scheduer调度器无法为pod分配一个合适的node节点
1)node节点有cpu,内存压力,导致无节点可调度;
2)pod定义了资源,而无满足资源的node节点;
3)node节点上有污点,而pod未定义容忍;
4)pod定义了亲和性/反亲和性,而没有满足此亲和性/反亲和性的node节点
情况3:pvc,pv无法动态创建
3. Pod的镜像拉取策略有哪几种?
通过'imagePullPolicy'字段配置Pod的镜像拉取策略,可取以下值:
- IfNotPresent:仅当本地没有对应镜像时,才从目标仓库中拉取镜像。
- Always:总是重新拉取,即每次创建pod都会重新从镜像仓库拉取一次镜像。
- Never:永不主动拉取镜像,仅使用本地镜像。
默认的镜像下载策略是:
当镜像标签是latest时,默认策略是Always;
当镜像标签是自定义时(也就是标签不是latest),那么默认策略是IfNotPresent。
4.存活探针和就绪探针的属性参数有哪些?
属性名 | 注释 | 默认值 |
initialDelaySeconds | 延迟探测秒数,即容器启动多少秒后开始探测 | 0 |
periodSeconds | 执行探测的频率 | 10 (≥1) |
timeoutSeconds | 探测响应超时时间,超过该时间表示探测失败 | 1(≥1) |
filureThreshold | 连续探测失败次数等于该值时,视为本次探测失败 | 3(≥1) |
successThreshold | 连续探测成功次数等于该值时,视为本次探测成功 | 1(≥1) |
上一篇: kubernetes探索-Pod面试