在 azure 上配置 kubectl 命令访问远程 kubernetes 集群
Configure kubectl command to access remote kubernetes cluster on azure
我在 azure 上有一个 kubernetes 集群 运行。从本地 kubectl 命令访问集群的方式是什么。我提到了 here 但在 kubernetes 主节点上没有 kube 配置文件。此外,kubectl config view 结果为
apiVersion: v1
clusters: []
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
您是如何设置集群的?要远程访问集群,您需要一个 kubeconfig 文件(看起来您没有),并且设置脚本会在集群部署过程中生成一个本地 kubeconfig 文件(否则您刚刚部署的集群将不可用) .如果其他人部署了集群,您应该按照您链接到的页面上的说明获取连接到集群所需的客户端凭据的副本。
找到一种方法来访问远程 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
在此之后,您应该能够与集群进行交互。
注意:要添加认证和密钥使用,请遵循 link: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
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 进行调用而无需任何额外配置。
你也可以通过传入--kubeconfig
参数来定义kubeconfig的文件路径
例如,将远程 Kubernetes 主机的 ~/.kube/config
复制到本地项目的 ~/myproject/.kube/config
。在 ~/myproject
中,您可以通过 运行 kubectl get pods --kubeconfig ./.kube/config
.
列出远程 Kubernetes 服务器的 pods
请注意,当从远程 Kubernetes 服务器复制值时,简单的 kubectl config view
是不够的,因为它不会显示配置文件的秘密。相反,您必须执行 cat ~/.kube/config
之类的操作或使用 scp
来获取完整的文件内容。
参见:https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/
我试图在与我最初创建 kops 集群的客户端不同的客户端上设置 kubectl。不确定这是否适用于 Azure,但它适用于 AWS 支持的 (kops) 集群:
在您的 k8s 机器上找到 .kube
目录。
在 linux/Unix 它将在 /root/.kube
在 windows 它将在 C:/User/<username>/.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\<username>\.kube\kubecfg.crt
/etc/cfc/conf/kubecfg.key
--> C:\Users\<username>\.kube\kubecfg.key
现在您应该可以与集群进行交互了。 运行 'kubectl get pods' 你会在k8s集群上看到pods。
对于使用云提供商的虚拟机手动创建的集群,只需从 ~/.kube/config
获取 kubeconfig。然而,对于像 GKE 这样的托管服务,您将不得不依赖 gcloud 来获取在运行时使用正确令牌生成的 kubeconfig。
通常可以创建一个服务帐户,这将有助于获得正确的 kubeconfig 以及为您生成的令牌。在 Azure 中也可以找到类似的东西。
如果你有 windows 检查你的 %HOME% 环境变量,它应该指向你的用户目录。然后在 "C:/users/your_user" 中创建 folfer“.kube”,并在该文件夹中创建 "config" 文件,如 "Phagun Baya" 所述。
回显%HOME%
对于任何遇到这个问题的人,az
cli 解决了这个问题。
az aks get-credentials --name MyManagedCluster --resource-group MyResourceGroup
这将合并您本地的 Azure 上下文。kube\config(如果您已经建立连接,我的是 C:\Users\[user]\.kube\config
)并切换到 Azure Kubernetes 服务连接。
我在 azure 上有一个 kubernetes 集群 运行。从本地 kubectl 命令访问集群的方式是什么。我提到了 here 但在 kubernetes 主节点上没有 kube 配置文件。此外,kubectl config view 结果为
apiVersion: v1
clusters: []
contexts: []
current-context: ""
kind: Config
preferences: {}
users: []
您是如何设置集群的?要远程访问集群,您需要一个 kubeconfig 文件(看起来您没有),并且设置脚本会在集群部署过程中生成一个本地 kubeconfig 文件(否则您刚刚部署的集群将不可用) .如果其他人部署了集群,您应该按照您链接到的页面上的说明获取连接到集群所需的客户端凭据的副本。
找到一种方法来访问远程 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
在此之后,您应该能够与集群进行交互。
注意:要添加认证和密钥使用,请遵循 link: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
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 进行调用而无需任何额外配置。
你也可以通过传入--kubeconfig
参数来定义kubeconfig的文件路径
例如,将远程 Kubernetes 主机的 ~/.kube/config
复制到本地项目的 ~/myproject/.kube/config
。在 ~/myproject
中,您可以通过 运行 kubectl get pods --kubeconfig ./.kube/config
.
请注意,当从远程 Kubernetes 服务器复制值时,简单的 kubectl config view
是不够的,因为它不会显示配置文件的秘密。相反,您必须执行 cat ~/.kube/config
之类的操作或使用 scp
来获取完整的文件内容。
参见:https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/
我试图在与我最初创建 kops 集群的客户端不同的客户端上设置 kubectl。不确定这是否适用于 Azure,但它适用于 AWS 支持的 (kops) 集群:
在您的 k8s 机器上找到 .kube
目录。
在 linux/Unix 它将在 /root/.kube
在 windows 它将在 C:/User/<username>/.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\<username>\.kube\kubecfg.crt
/etc/cfc/conf/kubecfg.key
--> C:\Users\<username>\.kube\kubecfg.key
现在您应该可以与集群进行交互了。 运行 'kubectl get pods' 你会在k8s集群上看到pods。
对于使用云提供商的虚拟机手动创建的集群,只需从 ~/.kube/config
获取 kubeconfig。然而,对于像 GKE 这样的托管服务,您将不得不依赖 gcloud 来获取在运行时使用正确令牌生成的 kubeconfig。
通常可以创建一个服务帐户,这将有助于获得正确的 kubeconfig 以及为您生成的令牌。在 Azure 中也可以找到类似的东西。
如果你有 windows 检查你的 %HOME% 环境变量,它应该指向你的用户目录。然后在 "C:/users/your_user" 中创建 folfer“.kube”,并在该文件夹中创建 "config" 文件,如 "Phagun Baya" 所述。
回显%HOME%
对于任何遇到这个问题的人,az
cli 解决了这个问题。
az aks get-credentials --name MyManagedCluster --resource-group MyResourceGroup
这将合并您本地的 Azure 上下文。kube\config(如果您已经建立连接,我的是 C:\Users\[user]\.kube\config
)并切换到 Azure Kubernetes 服务连接。