You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何隐藏Kubernetes LoadBalancer Service中供内部使用的80暴露端口?

解决LoadBalancer Service隐藏80端口仅内部访问的方案

方案1:拆分Service(推荐)

将公网暴露端口与内部专用端口拆分至两个独立Service,符合Kubernetes最佳实践:

  • 保留LoadBalancer类型Service,仅对外暴露需公网访问的6009端口
  • 创建ClusterIP类型Service,专门为内部服务提供80端口访问能力

修改后的完整配置如下:

image:
  repository: ms-test
  pullPolicy: Always

# 公网暴露的LoadBalancer Service
service:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
    - port: 6009
      targetPort: 6009
      protocol: TCP
      name: http-6009

# 内部专用的ClusterIP Service
internal-service:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: 8080
      protocol: TCP
      name: http

network_policy:
  enabled: true
  spec:
    policyTypes:
      - Ingress
    ingress:
      # 允许内部Pod访问80端口,可通过matchLabels限定特定内部服务
      - from:
          - podSelector: {}
        ports:
          - port: 80
            protocol: TCP
      # 允许公网访问6009端口
      - ports:
          - port: 6009
            protocol: TCP

resources:
  requests:
    cpu: 10m
    memory: 150Mi

方案2:通过NetworkPolicy限制80端口访问(不修改Service结构)

若不想拆分Service,可通过完善NetworkPolicy拦截80端口的公网流量,仅允许内部集群访问:

network_policy:
  enabled: true
  spec:
    policyTypes:
      - Ingress
    ingress:
      # 仅允许集群内部网段/Pod访问80端口,需替换为你的集群实际Pod网段
      - from:
          - ipBlock:
              cidr: 10.0.0.0/8
          - podSelector: {}
        ports:
          - port: 80
            protocol: TCP
      # 允许所有流量访问6009端口
      - ports:
          - port: 6009
            protocol: TCP

注意事项

  • 方案1的结构更清晰,LoadBalancer专注于公网暴露,ClusterIP负责内部服务访问,安全性更高
  • 使用方案2时,需确认集群内部Pod网段,避免误拦截合法内部流量
  • 部署后可通过kubectl get services验证:LoadBalancer仅对外暴露6009端口,ClusterIP的80端口仅集群内部可见

内容的提问来源于stack exchange,提问作者nipuna jayawardana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:03:41