簡體   English   中英

配置kubectl命令訪問azure上的遠程kubernetes集群

[英]Configure kubectl command to access remote kubernetes cluster on azure

我有一個在 azure 上運行的 kubernetes 集群。 從本地 kubectl 命令訪問集群的方式是什么。 我在這里提到但是在 kubernetes 主節點上沒有 kube 配置文件。 此外,kubectl config view 導致

apiVersion: v1
clusters: []
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []

找到了一種無需通過 ssh 連接到集群中的一個節點即可訪問遠程 kubernetes 集群的方法。 您需要編輯 ~/.kube/config 文件如下:

apiVersion: v1 
clusters:    
- cluster:
    server: http://<master-ip>:<port>
  name: test 
contexts:
- context:
    cluster: test
    user: test
  name: test

然后通過執行設置上下文:

kubectl config use-context test

在此之后,您應該能夠與集群進行交互。

注意:要添加認證和密鑰,請使用以下鏈接: http : //kubernetes.io/docs/user-guide/kubeconfig-file/

或者,您也可以嘗試以下命令

kubectl config set-cluster test-cluster --server=http://<master-ip>:<port> --api-version=v1
kubectl config use-context test-cluster

您還可以通過傳入--kubeconfig參數來定義 kubeconfig 的文件路徑。

例如,將遠程 Kubernetes 主機的~/.kube/config復制到您本地項​​目的~/myproject/.kube/config ~/myproject您可以通過運行kubectl get pods --kubeconfig ./.kube/config列出遠程 Kubernetes 服務器的kubectl get pods --kubeconfig ./.kube/config

請注意,從遠程 Kubernetes 服務器復制值時,簡單的kubectl config view是不夠的,因為它不會顯示配置文件的秘密。 相反,您必須執行類似cat ~/.kube/config或使用scp來獲取完整的文件內容。

請參閱: https : //kubernetes.io/docs/tasks/administer-cluster/share-configuration/

對於任何遇到這個問題的人, az cli 解決了這個問題。

az aks get-credentials --name MyManagedCluster --resource-group MyResourceGroup

這將合並本地 .kube\\config 中的 Azure 上下文(如果你已經建立了連接,我的是C:\\Users\\[user]\\.kube\\config )並切換到 Azure Kubernetes 服務連接。

參考

在您的 k8s 機器上找到 .kube 目錄。
在 linux/Unix 上,它將位於 /root/.kube
在 Windows 上,它將位於 C:/User//.kube
將配置文件從 k8s 集群的 .kube 文件夾復制到本地機器的 .kube 文件夾
復制客戶端證書:/etc/cfc/conf/kubecfg.crt
客戶端密鑰:/etc/cfc/conf/kubecfg.key
到本地機器的 .kube 文件夾。
編輯本地機器 .kube 文件夾中的配置文件,更新本地機器上 kubecfg.crt 和 kubecfg.key 的路徑。
/etc/cfc/conf/kubecfg.crt --> C:\\Users\\.kube\\kubecfg.crt
/etc/cfc/conf/kubecfg.key --> C:\\Users\\.kube\\kubecfg.key
現在您應該能夠與集群進行交互。 運行“kubectl get pods”,您將看到 k8s 集群上的 pod。

你是如何設置集群的? 要遠程訪問集群,您需要一個 kubeconfig 文件(看起來您沒有),並且安裝腳本生成本地 kubeconfig 文件作為集群部署過程的一部分(因為否則您剛剛部署的集群將不可用) . 如果其他人部署了集群,您應該按照您鏈接到的頁面上的說明獲取連接到集群所需的客戶端憑據的副本。

Azure 設置僅對外公開 ssh 端口。 這可以在 ./output/kube_xxxxxxxxxx_ssh_conf 下找到。我所做的是通過添加 ssh 端口隧道將 ssh 隧道化為在我的機器上可用。 進入上述文件並在“host *”部分下添加另一行,如下所示:

本地轉發 8080 127.0.0.1:8080

它將我的本地機器端口 8080(其中 kubectl 搜索默認上下文)映射到主機偵聽 api 調用的遠程機器 8080 端口。 當您像常規文檔顯示的那樣打開 ssh 到 kube-00 時,現在可以從本地 kubectl 進行調用,無需任何額外配置。

我試圖在與我最初創建 kops 集群的客戶端不同的客戶端上設置 kubectl。 不確定這是否適用於 Azure,但它適用於 AWS 支持的 (kops) 集群:

kops / kubectl - 如何導入在另一台服務器上創建的狀態?

對於使用 vm 的雲提供商手動創建的集群,只需從~/.kube/config獲取 kubeconfig 。 但是對於像 GKE 這樣的托管服務,您將不得不依賴 gcloud 來獲取在運行時中生成的帶有正確令牌的 kubeconfig。

通常可以創建一個服務帳戶,這將有助於使用為您生成的令牌獲取正確的 kubeconfig。 在 Azure 中也可以找到類似的東西。

如果你有 Windows 檢查你 %HOME% 環境變量,它應該指向你的用戶目錄。 然后在“C:/users/your_user”中創建文件夾“.kube”,並在這樣的文件夾中創建你的“config”文件,如“Phagun Baya”所述。

回聲%HOME%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM