透過 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

作業系統登入方式:

$ 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 伺服器進行連接,使用應用程式內購買, 或者瀏覽器中的 SSH(使用 IAP)。

您可以從以下位置了解如何啟動 VPN 伺服器執行個體:以下要點( vpn.tf, openvpn-server.sh)。

如果是 IAP 和 SSH-in-browser,您需要新增對連接埠 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

這裡是我嘗試其中一些方法的結果。

相關內容