【云原生技术】kubelet 是否先拉镜像再挂载卷?
下面逐条解答你的问题,并给出一版“顺序修正 + 编号 + 异常标红”的时序图(已避免 Mermaid 语法错误)。答复要点- 是否先拉镜像再挂载卷?- kubelet 会先准备并挂载卷(ConfigMap/Secret/emptyDir 等),再拉取镜像并创建容器。也就是“先卷后镜像后容器”。你之前把镜像拉取放在卷之前,这一点需要调整。- 什么时候把 Pod 注册到注册中心?- 由应用的注册 SD
·
答复要点
- 是否先拉镜像再挂载卷?
- kubelet 会先准备并挂载卷(ConfigMap/Secret/emptyDir 等),再拉取镜像并创建容器。也就是“先卷后镜像后容器”。你之前把镜像拉取放在卷之前,这一点需要调整。
- 什么时候把 Pod 注册到注册中心?
- 由应用的注册 SDK 决定(如 Spring Cloud Alibaba Nacos)。默认不会等 K8s Readiness 成功才注册;通常在“嵌入式 Web 服务器端口已就绪”后立即注册(因为要拿到端口),这往往早于 K8s 将 Pod 标记为 Ready。
- 最佳实践分两种:
- 集群内走 K8s Service 访问:可以允许“先注册后变 Ready”,因为 K8s 只会把 Ready 的 Pod 加入 Endpoints;未 Ready 不会被 kube-proxy 转发。
- 客户端绕过 K8s、直接用注册中心发现并直连:建议“延迟注册”(等应用内部就绪或 K8s Readiness 成功后再注册),否则可能被过早调用。
- “后面注册中心那一块逻辑是否正确?”
- 两点需要修正:
- “拉取远端配置”应来自“配置中心(Nacos Config)”,而不是“注册中心(Nacos Naming)”;而且发生在应用启动早期(bootstrap/config import 阶段),在注册之前。
- 注册默认发生在 Web 服务器端口就绪之后,不强依赖 K8s Readiness;若你要强约束,可显式延迟注册。
- 两点需要修正:
- “拉取远端配置(通过注册中心)”在做什么?顺序对吗?
- 这是从“配置中心”获取应用配置(如数据库、特性开关等)。顺序应当是:应用启动 → 读取本地配置/挂载文件 → 向“配置中心”拉取远端配置 → 构建应用上下文并启动 Web 服务器 → 注册到“注册中心”。
- “暴露健康端点(/actuator/health → 50101)”是什么意思?
- 这是 Spring Boot Actuator 提供的健康检查 HTTP 接口。K8s 的 liveness/readinessProbe 一般就用它。推荐使用 Boot 2.3+ 的专用端点:/actuator/health/liveness 和 /actuator/health/readiness;探针用 HTTP GET 指向正确端口(若 management.server.port 与业务端口不同,要对应配置探针端口)。
更多推荐
所有评论(0)