【问题标题】:Configure kubectl command to access remote kubernetes cluster on azure配置 kubectl 命令以访问 azure 上的远程 kubernetes 集群
【发布时间】:2016-07-18 08:13:38
【问题描述】:

我有一个在 azure 上运行的 kubernetes 集群。从本地 kubectl 命令访问集群的方法是什么。我提到了here,但是在 kubernetes 主节点上没有 kube 配置文件。此外,kubectl 配置视图会导致

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

【问题讨论】:

    标签: azure kubernetes


    【解决方案1】:

    找到了一种无需通过 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
    

    【讨论】:

    • 如何为 GKE 执行此操作?我从哪里获得密钥和证书? Cloud shell 使用 gcloud 进行设置
    • kubectl config view --minify --flatten -通过这个命令我得到了远程集群的配置信息。然后我将此信息复制到本地用户的 ~/.kube/config 文件中,并且它有效。
    • @harpratap 对于 GKE,gcloud CLI 命令处理上述 kubectl 设置。您可以通过gcloud container clusters get-credentials &lt;your-gke-cluster-name&gt; 设置上下文。另见官方文档:《为kubectl配置集群访问》cloud.google.com/kubernetes-engine/docs/how-to/…
    【解决方案2】:

    也可以通过传入--kubeconfig参数来定义kubeconfig的文件路径。

    例如,将远程 Kubernetes 主机的~/.kube/config 复制到本地项目的~/myproject/.kube/config。在 ~/myproject 中,您可以通过运行 kubectl get pods --kubeconfig ./.kube/config 列出远程 Kubernetes 服务器的 pod。

    请注意,从远程 Kubernetes 服务器复制值时,简单的 kubectl config view 是不够的,因为它不会显示配置文件的秘密。相反,您必须执行cat ~/.kube/config 之类的操作或使用scp 来获取完整的文件内容。

    见:https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/

    【讨论】:

    【解决方案3】:

    对于遇到此问题的任何人,az cli 可以解决问题。

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

    这将在您的本地 .kube\config 中合并 Azure 上下文(如果您已经建立了连接,我的是 C:\Users\[user]\.kube\config)并切换到 Azure Kubernetes 服务连接。

    Reference

    【讨论】:

      【解决方案4】:

      在您的 k8s 机器上找到 .kube 目录。
      在 linux/Unix 上,它将位于 /root/.kube
      在 Windows 上,它将位于 C:/User/&lt;username&gt;/.kube
      将 k8s 集群的 .kube 文件夹中的配置文件复制到本地机器的 .kube 文件夹
      复制 客户证书:/etc/cfc/conf/kubecfg.crt
      客户端密钥:/etc/cfc/conf/kubecfg.key
      到本地计算机的.kube 文件夹。
      编辑本地机器.kube文件夹中的配置文件,更新本地机器上kubecfg.crtkubecfg.key的路径。
      /etc/cfc/conf/kubecfg.crt --> C:\Users\&lt;username&gt;\.kube\kubecfg.crt
      /etc/cfc/conf/kubecfg.key --> C:\Users\&lt;username&gt;\.kube\kubecfg.key

      现在您应该可以与集群进行交互了。运行'kubectl get pods',你会看到k8s集群上的pods。

      【讨论】:

      • 这可能是 minikube 设置最简单的解决方案
      【解决方案5】:

      您是如何设置集群的?要远程访问集群,您需要一个 kubeconfig 文件(看起来您没有),并且安装脚本会在集群部署过程中生成一个本地 kubeconfig 文件(因为否则您刚刚部署的集群不可用) .如果其他人部署了集群,您应该按照链接到的页面上的说明获取连接到集群所需的客户端凭据的副本。

      【讨论】:

      • 我正在使用以下链接启动集群kubernetes.io/docs/getting-started-guides/coreos/azure,但找不到指向 kubeconfig 文件的指针。
      • 通读示例,看起来演练让您在主节点上运行 kubectl 命令。你可以登录到master并尝试在那里运行命令吗?
      • 是的,我可以从主节点访问集群。但我需要远程访问它的帮助(无需 ssh'ing 到主节点)。
      • 我从未亲自尝试过 Azure 指南,所以我在这里有点盲目,但您应该首先检查您的 apiserver 是否暴露在互联网上。它应该在端口 443(使用 TLS)上侦听所有传入连接。你能在外部达到那个(即使它拒绝你的请求)?如果没有,您的第一步将是进行设置。接下来,您需要查看您的 apiserver 接受哪些类型的身份验证。然后,您可以按照问题链接到的文档中的步骤手动生成 kubeconfig 文件。
      【解决方案6】:

      Azure 设置仅对外公开 ssh 端口。 这可以在 ./output/kube_xxxxxxxxxx_ssh_conf 下找到 我所做的是通过添加 ssh 端口隧道来隧道 ssh 在我的机器上可用。 进入上述文件并在“host *”部分下添加另一行,如下所示:

      本地转发 8080 127.0.0.1:8080

      它将我的本地机器端口 8080(kubectl 搜索默认上下文)映射到远程机器 8080 端口,master 监听 api 调用。 当您像常规文档显示的那样打开 ssh 到 kube-00 时,现在可以从本地 kubectl 进行调用,而无需任何额外配置。

      【讨论】:

        【解决方案7】:

        我试图在与我最初创建 kops 集群的客户端不同的客户端上设置 kubectl。不确定这是否适用于 Azure,但它适用于 AWS 支持的 (kops) 集群:

        kops / kubectl - how do i import state created on a another server?

        【讨论】:

          【解决方案8】:

          对于使用 vm 的云提供商手动创建的集群,只需从 ~/.kube/config 获取 kubeconfig。但是,对于像 GKE 这样的托管服务,您将不得不依赖 gcloud 来获取运行时生成的带有正确令牌的 kubeconfig。

          通常可以创建一个服务帐户,这将有助于获得正确的 kubeconfig 以及为您生成的令牌。在 Azure 中也可以找到类似的东西。

          【讨论】:

            【解决方案9】:

            如果您有 Windows,请检查您的 %HOME% 环境变量,它应该指向您的用户目录。然后在“C:/users/your_user”中创建文件夹“.kube”,并在该文件夹中创建“Phagun Baya”所述的“config”文件。

            回显 %HOME%

            【讨论】:

              猜你喜欢
              • 2021-07-20
              • 1970-01-01
              • 2017-10-03
              • 2019-03-21
              • 2020-02-20
              • 2016-08-23
              • 2022-01-15
              • 1970-01-01
              • 2016-04-06
              相关资源
              最近更新 更多