配置kubectl命令以访问azure上的远程kubernetes集群

时间:2016-03-30 11:02:40

标签: azure kubernetes

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

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

9 个答案:

答案 0 :(得分:45)

找到一种方法来访问远程kubernetes集群而无需ssh到集群中的一个节点。您需要编辑〜/ .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

答案 1 :(得分:7)

您还可以通过传入--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/

答案 2 :(得分:6)

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

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

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

Reference

答案 3 :(得分:0)

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

答案 4 :(得分:0)

Azure安装程序仅在外部公开ssh端口。 这可以在./output/kube_xxxxxxxxxx_ssh_conf下找到 我所做的是通过添加一个ssh端口隧道将ssh隧道化到我的机器上。 进入上面的文件并在&#34;主机*&#34;部分添加另一行如下:

LocalForward 8080 127.0.0.1:8080

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

在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集群上看到pods。

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

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

回声%HOME%