kubectl - 如何通过命令行将服务规范类型编辑为 LoadBalancer?

kubectl - How to edit service spec type to LoadBalancer via command line?

我有一个 clusterIP 类型的 k8s 服务..我需要通过 CLI 更改以下配置

  1. http 端口到 https 端口
  2. 端口号
  3. 负载均衡器的类型

有什么办法吗..?

您无法删除现有端口,但您可以添加 HTTPs 端口并使用 kubectl patch

更改类型

示例:

kubectl patch svc <my_service> -p '{"spec": {"ports": [{"port": 443,"targetPort": 443,"name": "https"},{"port": 80,"targetPort": 80,"name": "http"}],"type": "LoadBalancer"}}'

如果您不想在命令行上创建 JSON,请像这样创建一个 yaml 文件:

ports:
  - port: 443
    targetPort: 443
    name: "https"
  - port: 80
    targetPort: 80
    name: "http"
  type: LoadBalancer

然后做:

kubectl patch svc <my_service> --patch "$(cat patch.yaml)"

kubectl edit svc <service_name> -n <namespace>

i - 编辑服务

ESC, :wq - 更新您的服务

如果您不需要提示,请使用 kubectl patch svc <service_name> -p '{"spec": ....}'

原方案不适用于powershell。以下是我们需要做的才能让它发挥作用。

kubectl patch

Powershell:

kubectl patch svc <my_service> -p '{\"spec\": {\"ports\": [{\"port\": 443,\"targetPort\": 443,\"name\": \"https\"},{\"port\": 80,\"targetPort\": 80,\"name\": \"http\"}],\"type\": \"LoadBalancer\"}}'.

注意 \ for powershell 用例。

Bash:

kubectl patch svc <my_service> -p '{"spec": {"ports": [{"port": 443,"targetPort": 443,"name": "https"},{"port": 80,"targetPort": 80,"name": "http"}],"type": "LoadBalancer"}}'