为什么掌舵忽略节点端口部分?

时间:2019-07-29 05:01:59

标签: kubernetes kubernetes-helm

我正在尝试在特定端口上安装带有节点端口的头盔图。例如:30005,但忽略了节点端口部分。

==> v1/Service
NAME       TYPE      CLUSTER-IP     EXTERNAL-IP  PORT(S)         AGE
hello-app  NodePort  10.109.69.245  <none>       8080:32146/TCP  0s

我尝试设置特定端口:

helm install --set service.type=NodePort,service.nodePort=30005 --name hello-app /home/ubuntu/hello-app

我的values.yaml“服务”部分。

imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""

service:
  type: NodePort
  port: 8080
  nodePort: 30005

我的预期结果:

==> v1/Service
NAME       TYPE      CLUSTER-IP     EXTERNAL-IP  PORT(S)         AGE
hello-app  NodePort  10.109.69.245  <none>       8080:30005/TCP  0s

2 个答案:

答案 0 :(得分:1)

很显然,您在服务的掌舵模板中的某个地方有错字,或者忽略了变量名称区分大小写的事实。请仔细检查。

还请参见官方参考nginx图表示例,其中service掌舵模板也使typenodePort也可由最终用户配置,这完美地工作了带有头盔覆盖参数(--set)。

您可以在发布安装之前使用以下命令来验证helm渲染的清单文件:

helm template --set service.type=NodePort --set service.nodePort=31000 --debug docs/examples/nginx/

最后一点:

确保由您的nodePort指定的那个尚未被使用。
您可以在--server-dry-run中使用kubectl选项,例如

kubectl apply -f service-31000-nodeport-conflict.yaml --server-dry-run

万一它已经被占用,您会看到类似的错误,该错误是从API服务器返回的:

The Service "release-name-nginx-conflict" is invalid: spec.ports[0].nodePort: Invalid value: 31000: provided port is already allocated

答案 1 :(得分:0)

对不起,我忘记添加到我的/template/service.yaml中

  ports:
    - port: {{ .Values.service.port }}
      nodePort: {{ .Values.service.nodePort }}
      protocol: TCP
      targetPort: 8080
相关问题