是否可以在没有编辑器的情况下将clusterip更改为nodeport命令行?

时间:2018-06-30 08:57:57

标签: kubernetes

NodePort 仅在单节点设置中的开发环境中才建议使用这种访​​问Dashboard的方式。

编辑kubernetes-dashboard服务。

$ kubectl -n kube-system编辑服务kubernetes-dashboard 您应该看到该服务的yaml表示形式。将类型:ClusterIP更改为类型:NodePort并保存文件。

可以在不使用编辑器的情况下将clusterip更改为nodeport命令行吗? 谢谢!

5 个答案:

答案 0 :(得分:10)

您可以这样更改它

kubectl patch svc kubernetes-dashboard --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'

答案 1 :(得分:4)

要另外指定给定的nodePort:

kubectl patch svc my-service --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"},{"op":"replace","path":"/spec/ports/0/nodePort","value":30040}]'

答案 2 :(得分:2)

您可以为此服务获取YAML:

kubectl -n kube-system get service kubernetes-dashboard -o yaml > kube-dash-svc.yaml

进行所需的更改(不使用编辑器)。 例如,

sed 's/ClusterIP/NodePort/' kube-dash-svc.yaml > new-kube-dash-svc.yaml

删除当前服务:

kubectl delete svc kubernetes-dashboard

最后将这个Yaml反馈回Kubernetes控制平面:

kubectl create -f new-kube-dash-svc.yaml

答案 3 :(得分:2)

这是从NodePort转换为ClusterIP的相反情况的答案。

kubectl patch svc my-service --type='json' -p '[{"op":"replace","path":"/spec/type","value":"ClusterIP"},{"op":"replace","path":"/spec/ports/0/nodePort","value":null}]'

答案 4 :(得分:0)

kubectl补丁svc you-svc -p'{“ spec”:{“ type”:“ NodePort”}}''