Когда вы меняете услугу на LoadBalancer
, службе присваивается NodePort
.
Чтобы вернуться к ClusterIP
, вам также необходимо удалить NodePort
.
- Используя
kubectl patch
, мы установим NodePort
в NULL
, вот команда:
kubectl patch svc "prometheus-1-grafana" --namespace "cluster-1" --type="merge" \
-p '{"spec":{"ports":[{"nodePort":null,"port":<PORT_NUMBER>}],"type":"ClusterIP"}}'
Примечание: Kubernetes не будет позвольте вам установить nodePort
на null
в одиночку, поскольку поле Port
является обязательным, убедитесь, что вы проверили правильный порт и изменили его, в качестве примера я использую http-сервер.
- При желании вы можете создать
patch.yaml
:
spec:
ports:
- port: <PORT_NUMBER>
protocol: TCP
targetPort: <TARGET_PORT_NUMBER>
type: ClusterIP
и применить его:
kubectl patch svc "prometheus-1-grafana" --namespace "cluster-1" \
--type="merge" --patch "$(cat patch.yaml)"
Воспроизведение:
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echo-svc ClusterIP 10.0.13.9 <none> 80/TCP 65m
$ kubectl patch svc "echo-svc" -p '{"spec": {"type": "LoadBalancer"}}'
service/echo-svc patched
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echo-svc LoadBalancer 10.0.13.9 <pending> 80:32021/TCP 65m
$ kubectl patch svc "echo-svc" --type="merge" -p '{"spec":{"ports":[{"nodePort":null,"port":80}],"type":"ClusterIP"}}'
service/echo-svc patched
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echo-svc ClusterIP 10.0.13.9 <none> 80/TCP 66m
$ kubectl patch svc "echo-svc" -p '{"spec": {"type": "LoadBalancer"}}'
service/echo-svc patched
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echo-svc LoadBalancer 10.0.13.9 35.223.145.193 80:30394/TCP 66m
$ cat patch.yaml
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
type: ClusterIP
$ kubectl patch svc "echo-svc" --type="merge" --patch "$(cat patch.yaml)"
service/echo-svc patched
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echo-svc ClusterIP 10.0.13.9 <none> 80/TCP 66m
Ссылки: