如何更改 kubectl 用于建立连接的本地端口?

如何更改 kubectl 用于建立连接的本地端口?

我想让 kubectl 使用不同的本地端口(不是 22)。这可以配置吗?这是我必须在 ssh 中配置的吗?

我想先使用 IAP 创建一个 ssh 隧道,然后让 kubeclt 使用它连接到私有集群。

I create the tunnel like this:

gcloud compute start-iap-tunnel --project "myproject" \
    "nodex-default-pool-abc123-1xc8" 22 --local-host-port=localhost:2200

现在我想让 kubectl 使用它通过本地端口进行连接2200

我想避免使用堡垒虚拟机并仅利用 IAP。

我尝试设置 HTTPS_PROXY,但似乎不起作用:

HTTPS_PROXY=localhost:2200 kubectl get pods
Unable to connect to the server: malformed HTTP response "SSH-2.0-OpenSSH_8.5"

编辑:我也尝试打开到控制平面的隧道,但看起来 GKE 不支持 IAP 进行身份验证?

PROJECT_ID=myproject
ZONE=us-central1-b
REGION=us-central1
NETWORK=mynetwork

MASTER_IP=$(gcloud container clusters describe mycluster --zone $ZONE --project $PROJECT_ID --format=json | jq .endpoint -r)

gcloud alpha compute start-iap-tunnel $MASTER_IP 443 --project $PROJECT_ID --network=$NETWORK --region=$REGION \
         --local-host-port=localhost:4444

Testing if tunnel connection works.
ERROR: (gcloud.alpha.compute.start-iap-tunnel) While checking if a connection can be made: Error while connecting [4033: 'not authorized'].

也许 IAP 需要 DNS 名称来启动 google auth 之类的东西?我也尝试过直接连接到集群名称本身,但返回了连接错误。

答案1

有一个文章与您使用 IAP 连接到私有集群的担忧有关。其中,他们解释了可能的解决方法。在随附的文章中,在客户端计算机上提供命令之前,需要满足一些先决条件。

相关内容