go应用必须监听0.0.0.0:8080而非127.0.0.1:8080,因pod内localhost仅指向自身,service流量无法进入;端口须与containerport及targetport严格一致,健康探针路径需真实存在并返回200,否则导致pod反复重启。

Go应用必须监听 0.0.0.0:8080,不是 127.0.0.1:8080
Kubernetes Pod 有自己的 IP 地址,Service 流量通过该 IP 转发到容器端口。如果 Go 服务只监听 127.0.0.1:8080,外部请求根本进不来,readinessProbe 和 livenessProbe 全部失败,Pod 反复重启。
检查你的启动代码,确保类似这样:
http.ListenAndServe(":8080", nil)
或显式绑定:
http.ListenAndServe("0.0.0.0:8080", nil)
- 不要用
localhost:8080或127.0.0.1:8080 - 端口必须和
containerPort一致(如8080) - 若用
gin、echo等框架,确认没在内部硬编码监听地址
resources 的 requests 和 limits 必须分开设,不能只写一个
Kubernetes 调度器靠 requests 分配节点资源,而 limits 控制运行时上限。只设 limits 不设 requests,会导致调度行为不可控;只设 requests 不设 limits,则容器可能吃光节点内存/CPU,影响其他 Pod。
评估 Kubernetes 集群安全态势,覆盖 RBAC、工作负载安全、网络策略、基础设施即代码(IaC)、运行时监控和密钥管理等 30 项控制项……
- 生产环境建议按比例设:例如
requests.cpu: "200m"+limits.cpu: "500m" - 内存限制必须设
limits.memory,否则 OOMKilled 风险极高(Go runtime 对内存回收敏感) - Go 应用实际内存占用常高于
runtime.MemStats.Alloc,建议留 30% 余量,比如业务预估 300Mi,设limits.memory: "400Mi"
健康探针路径必须真实存在且返回 200
Kubernetes 不看进程是否存活,只认 HTTP 状态码。很多 Go 服务只实现了 /,但 readinessProbe 默认访问 /readyz,livenessProbe 默认访问 /healthz —— 路径不存在就 404,直接触发重启。
最简实现(无需额外依赖):
http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) })<br>http.HandleFunc("/readyz", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) })
-
initialDelaySeconds要给足启动时间,尤其带 DB 初始化的 Go 服务,建议 ≥10s -
periodSeconds别设太短(如 2s),避免高频探针压垮小实例 - 就绪探针(
readinessProbe)应反映真实就绪状态,比如检查 DB 连通性;健康探针(livenessProbe)只判断进程是否卡死
镜像构建阶段必须禁用 CGO 并指定 GOOS=linux
Go 编译产物要能在 Alpine 或 scratch 镜像里跑,就必须是纯静态二进制。否则运行时会报错:standard_init_linux.go:228: exec user process caused: no such file or directory —— 实际是找不到 libc.so。
- 构建命令中必须包含:
CGO_ENABLED=0 GOOS=linux go build -a -ldflags="-s -w" -o main ./cmd/app -
-s -w去除调试信息,减小体积(对scratch镜像尤其重要) - 如果用了 SQLite、某些图像库等依赖 C 的包,不能简单关 CGO,得换纯 Go 实现或改用
glibc基础镜像(不推荐)
requests 决定了 Pod 能被调度到哪台节点,而 limits 是它实际能用的天花板。两者差太多(比如 requests.memory=128Mi,limits.memory=2Gi),轻则造成节点资源碎片,重则引发 kube-scheduler 拒绝调度新 Pod。golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










