通过 SSH 进入私有集群上的 GKE 节点

通过 SSH 进入私有集群上的 GKE 节点

我在 GKE 上创建了一个私有集群,并且与集群一起配置了 NAT。我还设置了一个堡垒来访问私有集群。我试图通过 SSH 进入其中一个节点,但由于私有节点没有外部 IP,因此无法这样做。有什么方法可以做到这一点吗?

答案1

您可以使用“云端“假设 GCP 防火墙规则已到位,则命令通过 SSH 进入您的实例。

gcloud compute ssh example-instance --zone=us-central1-a

答案2

通过 ssh 进入 GKE 节点的方式与通过 ssh 进入 GCE 实例的方式没有什么不同 (AFAICT)。

基本上有两种方法(除非我遗漏了什么):

在第一种情况下您添加USER:$(cat ~/.ssh/id_rsa.pub)到实例元数据(或者如果您想让自己访问所有项目虚拟机,则添加到项目元数据):

$ gcloud compute instances add-metadata INSTANCE \
  --metadata="ssh-keys=me:`cat ~/.ssh/id_rsa.pub`" \
  --zone ZONE --project PROJECT_ID

将源 IP 添加到防火墙规则:

$ gcloud compute firewall-rules create allow-ssh \
  --source-ranges SOURCE_IP --allow tcp:22 \
  --project PROJECT_ID

并连接到节点:

$ ssh me@EXTERNAL_IP

用于gcloud compute instances list --project PROJECT_ID --filter name:NAME了解外部IP。

或者你可以连接:

$ gcloud compute ssh [USER@]INSTANCE \
  --zone ZONE --project PROJECT_ID

它会自动将您的密钥添加到项目元数据中。要使其首先添加到实例元数据集block-project-ssh-keys = true

$ gcloud compute instances add-metadata INSTANCE \
  --metadata=block-project-ssh-keys=true \
  --zone ZONE --project PROJECT_ID

OS登录方式:

$ gcloud compute instances add-metadata INSTANCE \
  --metadata=enable-oslogin=true \
  --zone ZONE --project PROJECT_ID
$ gcloud compute ssh INSTANCE \
  --zone ZONE --project PROJECT_ID

对于私有节点上述内容仍然适用,但你还需要通过节点子网中运行的 VPN 服务器进行连接,使用 IAP, 或者浏览器中的 SSH(使用 IAP)。

您可以从遵循要点vpn.tfopenvpn-server.sh)。

如果是 IAP 和浏览器中的 SSH,您需要从以下位置添加对端口 22 的访问权限35.235.240.0/20

$ gcloud compute firewall-rules create allow-ssh \
  --source-ranges 35.235.240.0/20 --allow tcp:22 \
  --project PROJECT_ID

并添加--tunnel-through-iap

$ gcloud compute ssh INSTANCE --tunnel-through-iap \
  --zone ZONE --project PROJECT_ID

这里是我尝试了这些方法的结果。

相关内容