注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
使用本地访问连接到 Oracle Cloud Infrastructure Kubernetes Engine 集群
简介
在本教程中,我们将指导您使用本地访问连接到 Oracle Cloud Infrastructure Kubernetes Engine(OCI Kubernetes Engine 或 OKE)集群。在本教程结束时,您将能够将本地计算机配置为安全高效地与 OKE 集群交互。此连接方法对于管理集群资源、部署应用程序以及排除本地环境中的运行故障至关重要。无论您是初学者还是经验丰富的 Kubernetes,此分步方法都将确保顺利、直接的设置。
当您查看 Kubernetes 集群的网络部分时,您将拥有可用于部署的不同 Kubernetes 网络体系结构。有关更多信息,请参见 Example Network Resource Configurations 。
有时,您希望使用专用 IP 地址部署 API 端点,当您这样做时,Kubernetes 集群无法使用 OCI Cloud Shell 应用程序进行管理,也无法从连接到 Internet 的另一台计算机进行管理。您需要选择本地访问,但在连接本地访问之前,我们首先需要设置一个可以充当堡垒的实例。
目标
- 使用本地访问连接到 Oracle Cloud Infrastructure Kubernetes Engine 集群。
任务 1:验证 Kubernetes 集群
确保在 OCI OKE 上部署了 Kubernetes 集群。
-
要在 OKE 上部署 Kubernetes 集群,请使用以下方法之一:
-
任务 1:创建新的 Kubernetes 集群并验证组件:使用快速创建模式在 OKE 上部署 Kubernetes 集群。
-
任务 1:使用 OKE 部署 Kubernetes 集群:使用定制创建模式在 OKE 上部署 Kubernetes 集群。
-
使用 Terraform 使用 OKE 在不同的 OCI 区域中部署多个 Kubernetes 集群,并使用 RPC 创建完整网格网络:使用 Terraform 在 OKE 上的多个区域部署多个 Kubernetes 集群。
-
使用 Oracle Cloud Infrastructure Kubernetes Engine 在 Terraform 上部署 Kubernetes 集群:使用 Terraform 在 OKE 上部署单个 Kubernetes 集群。
-
-
登录到 OCI 控制台,导航到 Developer Services 、Kubernetes Clusters (OKE) 并单击集群。
-
单击访问集群。
-
选择本地访问。复制在正确创建和配置堡垒后所需的以下命令。
任务 2:创建新的 Linux 实例作为堡垒
在本任务中,我们将在公共子网中部署堡垒实例,但当使用 OCI 堡垒服务和会话时(在本教程后面),最好在专用子网中部署堡垒实例。在本教程中,我们没有这样做,因为我们想要展示灵活性和各种不同的选项。
任务 2.1:创建包含入站和出站规则的 bastion-private-sec-list
安全列表
确定新堡垒实例将位于 10.0.5.0/24
中的新子网。我们需要这样做才能正确创建安全列表。
-
转到 OCI 控制台,导航到网络和虚拟云网络,然后选择部署 Kubernetes 集群的 VCN。
- 单击安全列表。
- 单击创建安全列表。
- 输入一个安全列表名称。
- 单击 + Another Ingress Rule 。
-
输入以下信息以创建入站规则 1 。
- 源类型:输入 CIDR 。
- 源 CIDR:输入要作为堡垒实例 (
10.0.5.0/24
) 的子网的源。 - IP 协议:输入 TCP 。
- Destination Port Range :输入 22 。
- 单击 + Another Ingress Rule 。
-
输入以下信息以创建入站规则 2 。
- 源类型:输入 CIDR 。
- 源 CIDR:输入要作为堡垒实例 (
10.0.5.0/24
) 的子网的源。 - IP 协议:输入 ICMP 。
- 向下滚动。
-
单击 + Another Egress Rule 。
-
输入以下信息以创建出站规则 1 。
- 目标类型:输入 CIDR 。
- 目标 CIDR:输入源作为所有内容 (
0.0.0.0/0
)。 - IP 协议:输入 All Protocols 。
- 单击创建安全列表。
-
请注意,新安全列表已创建,请单击安全列表并验证规则。
- 单击入站规则。
- 请注意,规则存在。
- 单击出站规则。
- 请注意,该规则存在。
任务 2.2:使用入站和出站规则创建 bastion-public-sec-list
安全性
-
单击创建安全列表。
- 输入一个安全列表名称。
- 单击 + Another Ingress Rule 。
-
输入入站规则 1 的以下信息。
- 源类型:输入 CIDR 。
- 源 CIDR:输入要作为堡垒实例 (
10.0.5.0/24
) 的子网的源。 - IP 协议:输入 ICMP 。
- 单击 + Another Ingress Rule 。
-
输入入站规则 2 的以下信息。
- 源类型:输入 CIDR 。
- 源 CIDR:输入源作为一切 (
0.0.0.0/0
)。 - IP 协议:输入 TCP 。
- Destination Port Range :输入 22 。
- 单击 + Another Ingress Rule 。
-
输入入站规则 3 的以下信息。
- 源类型:输入 CIDR 。
- 源 CIDR:输入源作为一切 (
0.0.0.0/0
)。 - IP 协议:输入 ICMP 。
- 单击 + Another Egress Rule 。
-
输入出站规则 1 的以下信息。
- 目标类型:输入 CIDR 。
- 目标 CIDR:输入源作为所有内容 (
0.0.0.0/0
)。 - IP 协议:输入 All Protocols 。
- 单击创建安全列表。
-
请注意,新安全列表已创建,请单击安全列表并验证规则。
- 单击入站规则。
- 请注意,规则存在。
- 单击出站规则。
- 请注意,该规则存在。
任务 2.3:创建具有 Internet 网关的 bastion-route-table
以添加到堡垒实例以供 Internet 访问
注:请确保您已在 VCN 中创建了互联网网关。
-
转至 Virtual Cloud Networks Details(虚拟云网络详细信息)页面。
- 单击路由表。
- 单击创建路由表。
- 输入名称。
- 单击 + Another Route Rule 。
-
在规则部分中,输入以下信息。
- 目标类型:选择 Internet 网关。
- 目标 CIDR 块:输入
0.0.0.0/0
。 - 目标 Internet 网关:选择现有 Internet 网关。
- 单击创建。
-
请注意,新路由表已创建,请单击路由表并验证规则。
- 请注意,该规则存在。
- 单击 VCN 返回 VCN 页面。
任务 2.4:为堡垒实例创建区域公共子网 (bastion-subnet
)
-
单击子网。
-
单击创建子网并输入以下信息。
- 输入名称。
- Subnet Type(子网类型):选择 Regional(区域)。
- IPv4 CIDR 块,输入
10.0.5.0/24
。 - 向下滚动。
- 路由表:选择在任务 2.3 中创建的路由表。
- 子网访问:选择公共子网。
- 向下滚动。
- DHCP 选项区间:选择默认 DHCP 选项。
- 安全列表:为公共子网选择在任务 2.2 中创建的安全列表。
- 单击创建子网。
-
请注意,新子网已创建。
任务 2.5:将 bastion-private-sec-list
添加到 Worker 专用子网以按堡垒实例访问 Worker 节点
-
转至 Virtual Cloud Networks Details(虚拟云网络详细信息)页面。
- 单击子网。
- 单击 Kubernetes worker 节点连接到的子网。
- 单击安全列表。
- 单击添加安全列表。
- 安全列表:为在任务 2.1 中创建的专用子网选择安全列表。
- 单击添加安全列表。
-
请注意,安全列表已添加到(Kubernetes worker 节点)子网。
任务 2.6:创建 OCI 计算实例
创建堡垒实例。
-
转到 OCI 控制台,导航到计算、实例,然后单击创建实例。
- 输入名称。
- 向下滚动。
-
向下滚动。
- 选择用于在任务 2.4 中创建子网的 VCN 。
- 选择在任务 2.4 中创建的子网。
-
向下滚动。
注:在此示例中,我们使用了现有的公钥。您还可以选择生成密钥对,但如果执行此操作,请确保保存该密钥对,因为以后需要它。要使用生成密钥对创建实例,请参见 Create Your First Linux Compute Instance Using Oracle Cloud Infrastructure 。
-
在创建计算实例页中,输入以下信息。
- 选择上载公共密钥文件。
- 单击浏览。
- 确保已选择现有公钥。
- 向下滚动。
-
单击创建。
-
请注意,实例显示 PROVISIONING 状态。
任务 2.7:将堡垒实例 (BastionHost
) 的公共 IP 地址获取到 SSH
-
访问实例详细信息页。
- 实例完全部署后,它将显示正在运行状态。
- 复制公共 IP 地址。
任务 2.8:登录到堡垒主机
-
打开可用于设置 SSH 连接的终端或其他应用程序,然后运行以下命令。
- 将目录更改为私有密钥和公共密钥的存储位置。
- 运行以下命令以通过 SSH 使用私有密钥连接到实例公共 IP 地址。
- 输入 yes 继续。
- 请注意,您现在已登录到实例。
- 运行以下命令以获取实例的专用 IP 地址。
- 请注意,实例的 IP 地址为
10.0.5.62/24
,位于10.0.5.0/24
的子网中。
任务 3:创建堡垒会话
可以将堡垒实例用作独立主机,但也可以使用堡垒服务或堡垒会话。为此,我们需要安装堡垒插件并创建堡垒会话。
堡垒会议有哪些好处?
在专用子网中部署实例时,无法直接从互联网访问该实例。但是,通过设置堡垒并启动堡垒会话,可以使专用实例可供访问。这允许实例充当管理 OCI 环境内其他资源的踏脚石。
任务 3.1:在实例上安装堡垒插件
-
转到在任务 2.6 中创建的实例。
- 单击 Oracle Cloud Agent 。
- 向下滚动。
- 将堡垒设置为 Enabled 。
- 该服务设置为 Stopped 。这将在几分钟后改变。
注:
- 要部署堡垒插件,实例需要通过 NAT 网关或 Internet 网关访问 Internet,因为该插件是从 Internet 下载的。当插件状态仍处于已停止状态时,请检查您的 Internet 连接。
- 您还可以手动安装 Oracle Cloud Agent Software。有关详细信息,请参见安装 Oracle Cloud Agent 软件。
-
安装 Oracle Cloud Agent Software 时,状态将更改为正在运行。
任务 3.2:创建堡垒会话
-
定位至身份、安全性,然后单击堡垒。
- 单击 Create bastion 。
-
输入以下信息。
- 堡垒名称:输入名称。
- 目标虚拟云网络:选择堡垒实例和 Kubernetes 集群所在的 VCN。
- 目标子网:选择堡垒实例所在的子网。
- CIDR 块允许列表:选择允许列表。要允许所有内容,请使用
0.0.0.0/0
。 - 单击 Create bastion 。
-
请注意,堡垒状态为创建。
- 几分钟后,堡垒状态将更改为活动。
- 单击堡垒。
-
单击创建会话。
-
输入以下信息。
- 会话类型:选择托管 SSH 会话。
- 会话名:输入名称。
- 用户名:输入堡垒实例的用户名。
- 计算实例:选择在任务 2.6 中创建的堡垒实例。
- 添加 SSH 密钥:选择选择 SSH 密钥文件。
- 单击浏览。
- 确保选择在任务 2.6 中创建的堡垒实例的公钥。
- 单击创建会话。
注:在此示例中,为了简单起见,我们使用与堡垒实例相同的 SSH 密钥对。我们建议您创建或使用与堡垒实例使用的密钥对不同的密钥对。
任务 3.3:获取堡垒会话的 SSH 命令
-
转到堡垒详细信息页。
- 请注意,堡垒会话已创建。
- 单击三个点菜单。
- 选择复制 SSH 命令。
任务 3.4:登录到堡垒主机
- 打开可用于设置 SSH 连接的终端或其他应用程序,然后运行以下命令。
- 在终端中运行以下复制的 SSH 命令。
- 输入 yes 继续进行堡垒 SSH 会话。
- 输入 yes 继续实例 SSH 会话。
- 请注意,您现在已通过堡垒会话登录到实例。
注:这是连接到我们显示的堡垒实例的另一种方式。现在,我们通过堡垒会话连接到堡垒实例,之前我们直接与 SSH 连接到堡垒实例。
任务 4:设置 OCI 命令行界面 (CLI)
我们已成功设置堡垒实例、堡垒和堡垒会话,并且我们已验证连接,现在需要设置 OCI CLI,以便能够在 OCI 环境中执行 CRUD(创建、读取、更新和删除)操作。
-
运行以下命令以更新已安装的软件。
[opc@oke-bastion-instanc ~]$ sudo dnf update
-
输入 y 以确认更新。
-
请注意,更新已完成!。
-
运行以下命令以安装 Oracle Developer 发行版。
[opc@oke-bastion-instanc ~]$ sudo dnf -y install oraclelinux-developer-release-el8
-
在此示例中,已安装 Oracle Developer 发行版。如果不是在您的情况下,请安装它。
-
运行以下命令以安装 OCI CLI。
[opc@oke-bastion-instanc ~]$ sudo dnf install python36-oci-cli
-
输入 y 确认安装。
-
-
请注意,安装已完成!。
-
运行以下命令以验证安装的 OCI CLI 版本。
[opc@oke-bastion-instanc ~]$ oci -v
-
请注意,OCI CLI 版本为 3.49.0 。
-
任务 5:配置 OCI CLI
我们需要添加一些配置,以确保 OCI CLI 能够在您的 OCI 租户上进行验证,以便您能够执行 CRUD 操作。
-
运行以下命令以在主文件夹中创建新的隐藏目录。
[opc@oke-bastion-instanc ~]$ mkdir ~/.oci/
-
运行以下命令,将目录更改为刚创建的目录。
[opc@oke-bastion-instanc ~]$ cd ~/.oci/
-
运行以下命令以生成新密钥对(公钥和私钥)。在本教程中,我们未使用任何密码,因此我们将在口令短语问题中输入 N/A 。
[opc@oke-bastion-instanc .oci]$ oci setup keys
-
运行以下命令以验证密钥对是否已成功生成。
[opc@oke-bastion-instanc .oci]$ ls -l
-
运行以下命令以获取公钥的内容。确保你复制,因为你以后会需要它。
[opc@oke-bastion-instanc .oci]$ cat ~/.oci/oci_api_key_public.pem
- 转到 OCI 控制台,单击概要信息图标。
- 单击我的概要文件。
-
向下滚动。
- 单击 API 密钥。
- 单击添加 API 密钥。
- 选择 Paste a public key 。
- 粘贴从堡垒实例收集的公钥。
- 复制配置文件。
- 单击关闭。
-
这是复制的配置的输出。您需要使用刚生成的
<path to your private keyfile>
值更改该值。[DEFAULT] user=ocid1.user.oc1..aaaaaaaavgrv6wsnnzhtwpjmyqtdqbq7kacfdfooz5uta3ludvfuwibe23aq fingerprint=a7:ff:fb:20:18:75:31:7d:b0:7c:04:8f:0c:cb:98:23 tenancy=ocid1.tenancy.oc1..aaaaaaaabh2affulc4dt4tqs7lbojyhqi6hzn5mjllxlnuqnletufsofoyvq region=eu-frankfurt-1 key_file=<path to your private keyfile> # TODO
-
运行以下命令以创建 OCI CLI
config
文件。[opc@oke-bastion-instanc .oci]$ nano ~/.oci/config
- 在
config
文件中复制 OCI 控制台提供的配置内容。 - 更改私钥文件位置。
[DEFAULT] user=ocid1.user.oc1..aaaaaaaavgrv6wsnnzhtwpjmyqtdqbq7kacfdfooz5uta3ludvfuwibe23aq fingerprint=a7:ff:fb:20:18:75:31:7d:b0:7c:04:8f:0c:cb:98:23 tenancy=ocid1.tenancy.oc1..aaaaaaaabh2affulc4dt4tqs7lbojyhqi6hzn5mjllxlnuqnletufsofoyvq region=eu-frankfurt-1 key_file=~/.oci/oci_api_key.pem
- 在
-
确保保存并退出配置文件。
-
运行以下命令以确保创建
config
文件。[opc@oke-bastion-instanc .oci]$ ls -l
注:有关更多信息,请参见Oracle Cloud Infrastructure CLI Command Reference 。
-
运行以下命令可查看在租户中配置的所有资源类型。
[opc@oke-bastion-instanc .oci]$ oci search resource-type list --all --output table --query "data [*].{Name:name}"
-
请注意,显示对
config
文件的权限的警告太开放,我们将修复此问题。 -
请注意在租户中配置的所有资源类型的输出。
-
-
运行以下命令以修复
config
文件的文件权限。[opc@oke-bastion-instanc .oci]$ oci setup repair-file-permissions --file /home/opc/.oci/config
-
运行以下命令可检索租户订阅的所有区域的列表。
[opc@oke-bastion-instanc .oci]$ oci iam region list
-
请注意租户订阅的所有区域的输出。
-
运行以下命令可列出租户中配置的所有区间。
[opc@oke-bastion-instanc .oci]$ oci iam compartment list
-
请注意租户所有区间的输出。
-
任务 6:在交互模式下使用 OCI CLI
-
您还可以在交互模式下使用 OCI CLI。通过这种方式,OCI CLI 将在命令中为您提供命令和下一个关键字,以便您最终获取所需的完整命令。有关更多信息,请参见 Using Interactive Mode 。
- 运行以下命令以交互模式启动 OCI CLI。
[opc@oke-bastion-instanc .oci]$ oci -i
- 您可以看到 OCI CLI 交互模式提示。
- 按 Tab 自动完成命令,按 Enter 执行命令,按 Ctrl + D 退出交互模式。
- 输入 Tab 可获取命令的第一级。
- 请注意可用的第一级命令。
-
输入
ia
并按 Tab 键以显示可用的命令选项。 -
输入
iam compartment
并按 Tab 键以显示可用的命令选项。 -
按 Tab 键自动补全单词区间。因此,您现在具有命令
iam compartment
。 -
按 Tab 键可显示
iam compartment
命令的下一个可用选项。- 运行
iam compartment list
命令。 - 请注意租户所有区间的输出。
- 运行
任务 7:使用 OCI CLI 访问 Kubernetes 集群
-
运行以下命令检查 OCI CLI 版本。
oci -v
-
访问 Kubernetes 集群。
-
创建一个用于包含
kubeconfig
文件的目录。mkdir -p $HOME/.kube
-
要通过 VCN 本机公共端点访问您的集群的
kubeconfig
文件,请复制以下命令。oci ce cluster create-kubeconfig --cluster-id ocid1.cluster.oc1.eu-frankfurt-1.aaaaaaaagwiamspaz7h4pxxxxxxxxxxxxxxxj75gd7chc27su6o56kq --file $HOME/.kube/config --region eu-frankfurt-1 --token-version 2.0.0 --kube-endpoint PUBLIC_ENDPOINT
-
运行以下命令将
KUBECONFIG
环境变量设置为此群集的文件。export KUBECONFIG=$HOME/.kube/config
-
运行以下命令以下载最新 Kubernetes 发行版。
[opc@oke-bastion-instanc ~]$ curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
-
运行以下命令可使
kubectl
应用程序可执行。[opc@oke-bastion-instanc ~]$ chmod +x ./kubectl
-
将
kubectl
应用程序移至$PATH
变量处于活动状态的位置,以便可以从任何位置运行kubectl
命令。[opc@oke-bastion-instanc ~]$ sudo mv ./kubectl /usr/local/bin/kubectl
-
运行以下命令以获取 Kubernetes 集群信息。
[opc@oke-bastion-instanc ~]$ kubectl cluster-info
-
运行以下命令以获取 Kubernetes 客户端和服务器版本。
[opc@oke-bastion-instanc ~]$ kubectl version
-
运行以下命令以获取 Kubernetes 集群中的所有 worker 节点。
[opc@oke-bastion-instanc ~]$ kubectl get nodes
-
后续步骤
通过使用本地访问连接到 OKE 集群,您可以从本地环境中轻松管理和与集群资源交互。通过遵循本教程中概述的任务,您可以设置安全连接,现在可以在 OKE 集群上部署、监视和维护应用程序。通过此设置,您可以高效地处理管理任务、排除运行故障并优化工作流。保持这些配置方便以备将来参考,并随时探索更多的定制选项以满足您的特定需求。
确认
- 作者 — Iwan Hoogendoorn(OCI 网络专家)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Connect to an Oracle Cloud Infrastructure Kubernetes Engine cluster using Local Access
G18373-01
November 2024