了解如何在云中设置 Kubernetes 集群

云中基于 Kubernetes 的拓扑包含多个组件,包括网络资源、计算实例和 Kubernetes 节点。要有效地部署和管理此类复杂拓扑,请在 Terraform 配置文件中将云基础结构定义为代码(IaC)。

要更改拓扑,请将相应的 Terraform 模块版本化,更新资源定义,然后应用修订的配置。必要时,可以轻松地回退到以前版本的基础结构。

使用此解决方案中提供的 Terraform 构建块部署基于云的 Kubernetes 环境所需的基础结构。

使用须知

在您开始在 Oracle Cloud 中构建 Kubernetes 拓扑之前,请了解有关体系结构选项和了解该体系结构的组件。

请参阅了解如何在云中为容器化应用设计 Kubernetes 拓扑

体系结构

此解决方案提供Terraform代码以包含单个虚拟云网络(VCN)和所需网络资源,全部位于单个Oracle云基础结构 区域。


Oracle Cloud 中 Kubernetes 云的体系结构
该体系结构由以下组件组成。

注 :

Terraform 代码包括输入变量,您可以使用它来优化体系结构,以满足容器化工作量的网络要求、所需的节点池大小和数量、容错能力约束条件等。
  • 虚拟云网络(VCN)

    拓扑中的所有资源都位于一个网络中。为网络定义 CIDR 前缀(默认值:10.0.0.0/16)。

  • 子网
    示例拓扑中的 VCN 包含四个子网。请定义子网的大小。
    子网 默认 CIDR 前缀 说明
    基本子网 10.0.1.0/29 可选 bastion 主机的公共子网。
    负载平衡器子网 10.0.2.32/27 (如果是公共则为10.0.2.0/27) 负载平衡器节点的子网。您可以选择子网是公共的还是专用的。
    管理子网 10.0.1.8/29 可选管理主机的专用子网,其中包含管理 Kubernetes 群集所需的工具,如 kubectlhelmOracle Cloud Infrastructure CLI。
    工作人员节点子网 10.0.64.0/18 Kubernetes worker 节点的子网。您可以选择子网是公共的还是专用的。

    所有子网都是区域性的;即,它们跨越区域中的所有可用性域,缩写为体系结构图表中的 AD1、AD2 和 AD3。因此,它们会受到域可用性故障的保护。可以使用区域子网查找部署到区域中任何可用性域的资源。

  • 网络网关
    • 服务网关(可选)

      利用服务网关,VCN 中的资源可以访问 Oracle 服务,例如Oracle Cloud Infrastructure 对象存储Oracle Cloud Infrastructure File StorageOracle Cloud Infrastructure Database 私密服务;也就是说,不会向公共互联网公开流量。可以从 VCN 中的资源启动服务网关的连接,而不是与资源通信的服务建立连接。

    • NAT 网关(可选)

      NAT 网关支持连接到 VCN 中专用子网的计算实例来访问公共互联网。可以从 VCN 中的资源(而非公共互联网)启动通过 NAT 网关的连接。

    • Internet 网关

      互联网网关可以实现公共互联网和 VCN 中公共子网中的任何资源之间的连接。

  • 基本主持人(可选)

    基础主机是一种计算实例,充当来自云外部拓扑的入口点。

    基础主机通常预配在 DMZ 中。这使您能够通过将敏感资源放在无法直接从云外部访问的专用网络中来保护这些资源。您会公开可以定期审计的单个已知入口点。因此,您可以避免泄露拓扑的更敏感的组件,而不会影响对这些组件的访问。

    示例拓扑中的基础主机附加到公共子网并具有公共 IP 地址。入站安全规则配置为允许通过公共互联网与主机建立 SSH 连接。要提供附加的安全级别,可以仅从特定的 IP 地址块限制 SSH 访问主机。

    您可以通过 bastion 主机访问专用子网中的Oracle Cloud Infrastructure 实例。为此,请启用 ssh-agent 转发,使您可以连接到基础主机,然后通过转发计算机的身份证明来访问下一个服务器。您还可以使用动态 SSH 隧道访问专用子网中的实例。动态隧道在本地端口上提供了 SOCKS 代理;但是连接源自远程主机。

  • 负载平衡器节点(不包括在示例代码中)

    负载平衡器节点可拦截流量并将流量分发到运行容器化应用的可用 Kubernetes 节点。如果应用程序必须可从公共互联网访问,则使用公共负载平衡器;否则,使用不具有公共 IP 地址的专用负载平衡器。该体系结构不显示任何负载平衡器节点。

  • 管理主机(可选)

    通过使用管理主机,可以避免在云外部安装和运行基础结构管理工具,例如 kubectlhelmOracle Cloud Infrastructure CLI。示例拓扑中的管理主机位于专用子网中,可以通过 bastion 主机访问。要在管理主机上运行Oracle Cloud Infrastructure CLI,必须将其指定为实例主用户。

  • Kubernetes worker 节点

    Kubernetes worker 节点是可以部署容器化应用程序的计算实例。在示例拓扑中,所有 Worker 节点都位于单节点池中,并附加到专用子网。您可以根据需要定制节点池的数量、每个池的大小以及是否使用公共子网。

    如果员工节点附加到专用子网,则无法直接从公共互联网访问它们。用户可以通过负载平衡器访问容器化应用程序。

    如果启用了对 Worker 节点的 SSH 访问,则管理员可以通过 bastion 主机创建 worker 节点的 SSH 连接。

    该体系结构显示三个工作进程节点,每个节点位于区域的不同可用性域中:AD1、AD2 和 AD3。

    注 :

    如果要部署容器化应用程序的区域中包含一个可用性域,则 Worker 节点将分布在可用性域内的故障域(FD)中。

关于所需服务和权限

此解决方案需要以下服务和权限:

服务 所需权限
Oracle Cloud Infrastructure Identity and Access Management 管理动态组和策略。
Oracle Cloud Infrastructure 网络 管理 Vcn、子网、互联网网关、NAT 网关、服务网关、路由表和安全列表。
Oracle Cloud Infrastructure Compute 管理计算实例。
Oracle Cloud Infrastructure Container Engine for Kubernetes 管理群集和节点池。

请参阅集群创建和部署的策略配置