gpt4 book ai didi

kubernetes - 使用 kubectl 从 gke 应用程序中删除外部 IP 地址

转载 作者:行者123 更新时间:2023-12-02 12:01:25 26 4
gpt4 key购买 nike

之后getting Prometheus up for a gke cluster ,我运行了为 Grafana 添加外部 IP 地址的步骤:

kubectl patch svc "prometheus-1-grafana" --namespace "cluster-1" \
-p '{"spec": {"type": "LoadBalancer"}}'
但现在不再希望 Grafana 通过外部 ip 可用。
我试过用 -p '{"spec": {"type": "ClusterIP"}}' 运行但我只是得到错误:
The Service "prometheus-1-prometheus" is invalid: 
spec.ports[0].nodePort: Forbidden: may not be used when
`type` is 'ClusterIP'
我该怎么做以上 kubectl patch svc命令删除外部IP?

最佳答案

当您将服务更改为 LoadBalancer , 一个 NodePort归因于服务。

为了返回ClusterIP您还需要删除 NodePort .

  • 使用 kubectl patch我们将设置NodePortNULL ,这里是命令:
  • kubectl patch svc "prometheus-1-grafana" --namespace "cluster-1" --type="merge" \
    -p '{"spec":{"ports":[{"nodePort":null,"port":<PORT_NUMBER>}],"type":"ClusterIP"}}'

    注: Kubernetes 不允许您设置 nodePortnull单独,因为 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

    引用文献:
  • Json Patch
  • Update API Object with Kubectl Patch
  • 关于kubernetes - 使用 kubectl 从 gke 应用程序中删除外部 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61355047/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com