资讯动态

【k8s】知识点

发布时间:2026/10/4 2:04:31 来源:尧图企业网站定制
一、Pod 多容器模型Init 容器 / Sidecar 容器1. Init 初始化容器执行顺序串行执行必须全部 Init 容器成功退出才会启动主业务容器生命周期一次性任务执行完就退出不常驻作用前置准备工作拉配置、等待数据库就绪、创建目录、权限初始化失败影响Init 失败会一直重启主容器永远起不来2. Sidecar 容器传统 原生传统 Sidecar和主容器同写在 containers 数组与主容器并行启动、常驻运行但存在不在主容器之前启动的可能所以推出原生Sidecar 容器原生 SidecarK8s1.28单独 sidecarContainers 字段先启动就绪、再启动主容器停止时最后关闭作用持续辅助能力日志采集、流量代理、监控、证书轮换3. 核心区别Init先跑、跑完退出、主容器后启动一次性Sidecar先/同时启动、常驻不退出、全程陪伴业务持续性二、Pod 三大健康检查探针Startup / Liveness / Readiness所有探针都由 kubelet 在 Pod Running 阶段执行属于容器级健康检查。1. startupProbe 启动探针专门给慢启动应用使用启动阶段只跑 startupliveness、readiness 全部暂停一旦成功立刻关闭启动保护开启正常存活/就绪检测失败杀容器、触发重启策略为什么不用调大 initialDelaySeconds 代替 startupProbeinitialDelaySeconds 只是“硬性等待时间”等待期间完全不检测应用卡死也发现不了。而 startupProbe 在启动期间持续探测既给足启动时间启动完成后立刻开启灵敏故障检测。2. livenessProbe 存活探针作用检测应用是否卡死、死锁、崩溃失败结果直接杀死容器 → 按重启策略重启现象Pod名字不变、容器不断重启存活探针两种常用方式区别1exec 命令方式kubelet 在容器内执行命令通过退出码是否为0判断存活无需网络、无需接口适合数据库、后台程序2httpGet 网络请求方式kubelet 从节点发起 HTTP GET 访问容器健康接口200-399 成功4xx/5xx/超时失败适合 Web、微服务必须有健康检查接口3. readinessProbe 就绪探针作用判断容器是否可以接收业务流量失败结果不杀容器、不重启Pod只做一件事将 Pod 从 Service Endpoints 中剔除不再转发流量三、Pod 重启策略 restartPolicyPod 级别配置由 kubelet 执行控制容器退出后是否重启。Always默认无论正常/异常退出都重启Deployment 常驻服务专用OnFailure仅异常退出非0退出码才重启适合任务类程序Never无论成败一律不重启适合一次性任务联动逻辑探针失败 → kubelet 杀容器 → 依据 restartPolicy 重启四、StatefulSet 有状态服务 Terminating 卡死问题1. StatefulSet 特点有序创建0→1→2前一个就绪才创建下一个有序删除2→1→0稳定网络、稳定存储Pod重建保留原PVC2. Namespace 卡在 Terminating 删不掉原因核心Namespace 必须清空内部所有资源才能删除Finalizer 终结器资源删除前要先清理外部资源云盘、存储外部资源清理失败 → Finalizer 无法完成 → 资源删不掉 → NS 一直终止中五、Service 的普通 ClusterIP 和 Headless 无头服务1. 普通 ClusterIP Service分配虚拟集群IPkube-proxy 做四层负载均衡隐藏后端真实PodIP流量随机转发适合无状态服务2. Headless Service 无头服务clusterIP: None无虚拟IP、无kube-proxy转发DNS 解析直接返回所有Pod真实IP用于 StatefulSet、数据库集群、Redis/Mongo副本集原因数据库需要自己选主、同步节点不能被K8s屏蔽IP、不能随机转发六、Ingress 七层网关Service 是四层IP端口不能识别域名、路径Ingress 是七层 HTTP/HTTPS 网关可按域名、路径路由Ingress资源只是规则不干活必须配合 Ingress ControllerNginx生效流量链路外网 → LB/NodePort → Ingress控制器 → 匹配路由规则 → Service → Pod七、静态 Pod StaticPod不由 apiserver 管理由节点 kubelet 直接扫描本机 manifest 文件创建kubelet 自动创建 Mirror Pod镜像Podkubectl 能看不能改、不能删kubectl delete pod 无效删完立刻重建删除方式必须删除节点本地 yaml 文件用途集群控制面组件apiserver、etcd、controller-manager、scheduler全部是静态Pod

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑