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

在deployment.yaml中应将NodePort规范配置在哪个位置?

核心问题说明

NodePort是Kubernetes Service资源的配置字段,不属于Deployment的配置范畴,不能写在deployment.yaml文件里,你需要单独创建Service资源来对外暴露端口。

具体配置步骤

1. 先修正Deployment的小问题

你当前deployment.yaml中LDAP端口的协议配置为UDP,ApacheDS默认LDAP服务走TCP协议,先调整端口配置,避免协议不匹配导致访问失败:

ports:
  - name: admin-port
    containerPort: 8080
    hostPort: 8080
    protocol: TCP
  - name: ldap-port
    containerPort: 10389
    hostPort: 10389
    protocol: TCP # 确认你确实需要UDP的话可以保留原值

另外你配置的存活探针用curl检测LDAP端口不太准确,curl默认不支持ldap协议,建议后续换成nc -zv localhost 10389或者ldap客户端工具检测。

2. 新建Service配置文件

如果你是通过helm create生成的标准Chart结构,Chart的templates目录下默认有service.yaml文件,直接替换内容即可;如果没有就新建templates/service.yaml文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: {{ include "buildchart.fullname" . }}
  labels:
    {{- include "buildchart.labels" . | nindent 4 }}
spec:
  type: NodePort
  selector:
    # 直接复用Chart的选择器标签,和Deployment的matchLabels完全匹配
    {{- include "buildchart.selectorLabels" . | nindent 4 }}
  ports:
    # 暴露LDAP服务端口
    - name: ldap-port
      port: 10389       # 集群内部访问Service的端口
      targetPort: ldap-port # 对应Pod中containerPort的名称,也可以直接写10389
      nodePort: 30007   # 节点侧暴露的端口,必须在K8s默认的30000-32767端口范围内
      protocol: TCP
    # 如果需要对外暴露8080管理端口,可以保留下面这段,不需要就删掉
    - name: admin-port
      port: 8080
      targetPort: admin-port
      nodePort: 30080
      protocol: TCP

如果不需要固定NodePort端口,可以删掉nodePort字段,Kubernetes会自动分配可用端口,避免手动配置的端口被占用。

3. 部署验证

修改完成后执行helm upgrade更新你的Helm release即可,部署完成后,你可以通过节点IP:30007访问LDAP服务,在容器所在节点本地也可以用127.0.0.1:30007直接访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:54:04