|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
使用 Kubectl 和 kubeconfig 访问集群
本节描述如何通过 Rancher UI 或您的工作站使用 kubectl 操作下游 Kubernetes 集群。
有关使用 kubectl 的更多信息,请参见 Kubernetes 文档:kubectl 概述。
在 Rancher UI 中使用 kubectl Shell 访问集群
您可以通过登录 Rancher,并在 UI 中打开 kubectl Shell 来访问和管理您的集群。无需进一步配置。
-
单击 ☰ > 集群管理。
-
转到您想使用 kubectl 访问的集群,然后单击 Explore。
-
在顶部导航菜单中,单击 Kubectl Shell 按钮。使用打开的窗口与您的 Kubernetes 集群进行交互。
从您的工作站使用 kubectl 访问集群
本节描述如何下载集群的 kubeconfig 文件,从您的工作站启动 kubectl,并访问下游集群。
这种访问集群的替代方法允许您通过 Rancher 进行身份验证,并在不使用 Rancher UI 的情况下管理您的集群。
|
先决条件:
这些说明假设您已经创建了一个 Kubernetes 集群,并且在您的工作站上安装了 kubectl。有关安装 kubectl 的帮助,请参阅官方 Kubernetes 文档。 |
-
单击左上角的 ☰。
-
选择*集群管理*。
-
找到您想要下载 kubeconfig 的集群,并在行末选择 ⁝。
-
从子菜单中选择 下载 KubeConfig。
-
将 YAML 文件保存在本地计算机上。将文件移动到
~/.kube/config。注意:kubectl 默认使用的 kubeconfig 文件位置是~/.kube/config,但您也可以使用任何目录,并通过--kubeconfig标志进行指定,如下命令所示:kubectl --kubeconfig /custom/path/kube.config get pods
-
从您的工作站启动 kubectl。使用它与您的 Kubernetes 集群进行交互。
关于使用 kubectl 创建的资源的说明
Rancher 将发现并显示由 kubectl 创建的资源。但是,这些资源在发现时可能没有所有必要的注释。如果通过 Rancher UI/API 对资源执行某个操作(例如,缩放工作负载),这可能会由于缺少注释而触发资源的重新创建。这只会在第一次对发现的资源执行操作时发生。
直接与下游集群进行身份验证
本节旨在帮助您设置访问 Rancher 启动的集群 的替代方法。
此方法仅适用于启用了 授权集群端点 的 RKE2 和 K3s 集群。当 Rancher 创建集群时,它会生成一个 kubeconfig 文件,其中包含用于访问您的集群的额外 kubectl 上下文。此额外上下文允许您使用 kubectl 直接与下游集群进行身份验证,而无需通过 Rancher 进行身份验证。有关授权集群端点工作原理的详细说明,请参阅 此页面。
在 RKE2 和 K3s 集群上,您需要 手动启用 授权集群端点。
我们建议您作为最佳实践,设置此方法以访问您的 RKE2 和 K3s 集群,以便在无法连接到 Rancher 时,您仍然可以访问集群。
|
先决条件:
以下步骤假设您已创建 Kubernetes 集群并按照步骤 从工作站使用 kubectl 连接到您的集群。 |
要查找下载的 kubeconfig 文件中上下文的名称,请运行:
kubectl config get-contexts --kubeconfig /custom/path/kube.config
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* my-cluster my-cluster user-46tmn
my-cluster-controlplane-1 my-cluster-controlplane-1 user-46tmn
在这个例子中,当您在第一个上下文 kubectl 中使用 my-cluster 时,您将通过 Rancher 服务器进行身份验证。
在第二个上下文 my-cluster-controlplane-1 中,您将通过授权的集群端点进行身份验证,直接与下游 RKE2/K3s 集群进行通信。
我们建议使用负载均衡器与授权集群端点一起使用。有关详细信息,请参阅 推荐架构部分。
现在您已经知道了需要直接与集群进行身份验证的上下文名称,您可以在运行 kubectl 命令时将上下文名称作为选项传递。命令会根据您的集群是否定义了 FQDN 而有所不同。下面的部分提供了示例。
当 kubectl 正常工作时,它确认您可以在绕过 Rancher 的身份验证代理的情况下访问您的集群。
直接连接到定义了 FQDN 的集群
如果为集群定义了 FQDN,将创建一个引用该 FQDN 的单一上下文。该上下文将命名为 <CLUSTER_NAME>-fqdn。当您想使用 kubectl 访问此集群而不使用 Rancher 时,您需要使用此上下文。
假设 kubeconfig 文件位于 ~/.kube/config:
kubectl --context <CLUSTER_NAME>-fqdn get nodes
直接引用 kubeconfig 文件的位置:
kubectl --kubeconfig /custom/path/kube.config --context <CLUSTER_NAME>-fqdn get pods
直接连接到未定义 FQDN 的集群
如果集群没有定义 FQDN,将创建额外的上下文,引用控制平面中每个节点的 IP 地址。每个上下文将命名为 <CLUSTER_NAME>-<NODE_NAME>。当您想使用 kubectl 访问此集群而不使用 Rancher 时,您需要使用此上下文。
假设 kubeconfig 文件位于 ~/.kube/config:
kubectl --context <CLUSTER_NAME>-<NODE_NAME> get nodes
直接引用 kubeconfig 文件的位置:
kubectl --kubeconfig /custom/path/kube.config --context <CLUSTER_NAME>-<NODE_NAME> get pods