Files
Deploy-Laboratory/docs/04-04-nodejs-端口与Service.md
jack 8c43761962 feat: 按 doc_id 重组 ansible/files 与验证框架
- ansible/files 改为与文档 XX-YY 对齐的目录结构,更新相关 playbook 路径
- 新增 scripts/verify.sh 与 ansible/playbooks/verify/*.yml,移除单体 verify-matrix.yml
- 补充 docs/00-02 矩阵状态、00-05 验证框架与流程、00-04 环境与 ylc65 工作机说明
- 增加 k3s 存储准备、Longhorn、local-path 等 playbook 与辅助脚本

Made-with: Cursor
2026-03-26 07:01:14 +08:00

2.8 KiB
Raw Blame History

04-04-nodejs-端口与Service

理清 容器监听端口Service 端口Ingress backend 端口 三者对应关系;在 04-01 基线上做最小调整。

前置条件

  • 已部署 nodejs-demo04-01)。

清单路径(唯一真源)

路径
本篇完整清单(累积至 04-04 ansible/files/04-01-nodejs-demo/04-04-nodejs-demo.yaml
应用 kubectl apply -f ansible/files/04-01-nodejs-demo/04-04-nodejs-demo.yaml

04-04 起,累积清单中应用监听 8080(与 04-01 文档中的 3000 不同,便于与后续探针、分项对齐)。

场景说明(白话)

可以把流量想成「访客 → Ingress → Service → 容器端口」:

位置 字段 04-01 里大概是啥
容器 containerPort 应用实际监听的端口,例:3000
Service port / targetPort 集群内访问 Service 的 port,转发到 Pod 的 targetPort
Ingress backend.service.port.number 填 Service 的 port(数字),不是 targetPort 这个名字

改应用监听端口时:容器监听、containerPorttargetPort 要一致Ingress 只要还指向 Service 的 port: 80,通常不用动。

相对 04-03 的变更(原文 → 新文)

位置 原文(04-03 新文(04-04
容器内监听 .listen(3000) .listen(8080)
containerPort 3000 8080
Service targetPort 3000 8080
Ingress backend.service.port.number 80 80(不变,仍指 Service 的 port

多端口(示意)

YAML 怎么接:仍在 nodejs-demo.yaml 里改——容器多写几个 containerPortService 多写几条 port/targetPortIngress 一般只指向对外那一个 Service 端口即可。

若同一 Pod 既要对外 HTTP又要对内调试端口就属于这种「多端口」场景。

部署与验证

kubectl apply -f ansible/files/04-01-nodejs-demo/04-04-nodejs-demo.yaml
kubectl get svc nodejs-demo -n default -o wide
kubectl get endpoints nodejs-demo -n default
curl -s --max-time 3 http://<节点IP>/node/

预期:endpoints 有 Pod IP:targetPortcurl 正常。

NodePort可选

Servicetype: NodePort 可在节点上暴露高位端口调试;生产通常仍走 Ingress。K3s ServiceLB 行为见工作节点文档。

失败排查

  • 502 / 无 endpointstargetPort 与进程监听不一致selector 与 Pod 标签不一致。
  • 06-01-k3s-networkpolicy-故障排查.md

相关文档