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

为Kubernetes中的Pod配置供内部使用的DNS记录

Kubernetes中的Pod配置供内部使用的DNS记录

嗨,针对你的问题,其实在Kubernetes里我们很少直接给Pod配置固定的内部DNS——毕竟Pod的生命周期很短,重启或者调度后IP就会变化,没法保证稳定性。正确的姿势是用Service来为你的微服务提供稳定的内部访问入口,同时还能轻松设置自定义的DNS名称哦!

下面结合你的Helm Chart场景,给你一步步说明怎么操作:

  • 第一步:在Helm Chart中添加Service资源
    你需要在你的pod-chart里新增一个Service的模板文件,比如创建templates/service.yaml,内容可以参考下面的示例:

    apiVersion: v1
    kind: Service
    metadata:
      name: {{ .Values.service.name }}
      namespace: {{ .Values.namespace | default .Release.Namespace }}
    spec:
      selector:
        # 这里的labels必须和你Pod模板里的labels完全匹配,Service才能找到对应的Pod
        app: {{ .Values.pod.labels.app }}
      ports:
        - protocol: TCP
          port: {{ .Values.service.port }}  # Service对外暴露的端口
          targetPort: {{ .Values.pod.containerPort }}  # 容器内实际监听的端口
      type: ClusterIP  # 这是默认类型,仅集群内部可访问,完全符合你的内部API调用需求
    
  • 第二步:在values.yaml中配置自定义DNS名称
    打开你的values.yaml,添加对应的Service配置项,把你想要的自定义DNS名称填在service.name里:

    service:
      name: my-microservice-internal  # 这就是其他Pod可以用来访问的自定义内部DNS名称
      port: 8080
    pod:
      labels:
        app: my-microservice
      containerPort: 8080
    
  • 第三步:验证内部访问方式
    部署完这个Helm Chart后,其他Pod就能通过这个自定义DNS访问你的微服务了:

    • 如果是同一命名空间下的Pod,直接用my-microservice-internal就能访问
    • 如果是不同命名空间的Pod,需要用完整的FQDN:my-microservice-internal.<你的命名空间>.svc.cluster.local

另外补充个小提示:如果你的场景需要多个自定义DNS名称,还可以考虑用ExternalName类型的Service或者配置CoreDNS的自定义记录,但绝大多数内部调用场景下,普通的ClusterIP Service就完全够用啦。

备注:内容来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 13:23:08