繁体   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