欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云 无服务器部署:使用甲骨文容器引擎及其虚拟节点实现Kubernetes的轻松管理

2024-01-15 原创文章

选择云服务,就像选择旅途的伙伴,既要靠谱又要合拍。Oracle Cloud Infrastructure的容器引擎(OKE)提供两种操作模式:管理节点和虚拟节点。你的选择,就是对业务未来的投资。

在管理节点模式下,你能够掌控。就像是手握方向盘,自己驾驶。你负责维护操作,比如升级、扩展和修补工作节点。Oracle提供自动化操作步骤,但操作的启动,取决于你。

而虚拟节点,就像是自动驾驶。Oracle为你部署、监控和管理你租用空间内实际节点的软件抽象。这是一种无服务器的Kubernetes体验,当你想专注于工作负载、pods和应用逻辑时,无需承担管理、扩展、升级和故障排除节点基础设施的操作负担。

两种模式都能支持从基本应用到最关键的使命。虚拟节点简化了Kubernetes操作,并提供了最佳的性价比。但如果你需要对节点基础设施有更大的控制权,选择管理节点。你可以配置Kubernetes资源,使用HostPort和HostNetwork,或运行DaemonSets和其他可能对你的应用或工具必需的选项。在大多数使用案例中,这些选项并不是必需的。

当你不需要对运行和管理容器进行微调时,虚拟节点是最合适的选择。如果你的应用需要配置无法通过虚拟节点提供的节点基础设施,那么请使用管理节点。

架构:

想象一下,一个应用服务器部署在Oracle Cloud Infrastructure的Kubernetes集群中,使用虚拟节点。它能执行创建、读取、更新和删除(CRUD)操作,而这一切,都发生在Oracle MySQL数据库服务上,数据库服务部署在客户租用空间的另一个子网内。你可以通过一个负载均衡器服务,来外部访问这个应用服务器。这个服务映射到一个Kubernetes入口控制器。而应用本身,则需要一个密码来访问Oracle MySQL数据库服务,这个密码被安全地存储在Oracle Cloud Infrastructure Vault(OCI Vault)中。

要将OKE集群与OCI Vault集成,我们部署了外部秘密操作员在OKE集群中。这使你能够定义一个SecretStore资源,它映射到OCI Vault,以存储数据库的密码。一旦SecretStore资源映射好了,OKE集群就可以作为Kubernetes秘密来访问密码。一个有权限从OCI Vault读取数据的Oracle Cloud Infrastructure身份与访问管理角色,使得pod能够访问这个秘密。这个角色与pod定义中使用的Kubernetes服务账户相关联,授权它从OCI Vault读取数据。

以下图表展示了这一参考架构:


租户Tenancy:

这是Oracle Cloud中为你专设的安全、独立的区域。加入Oracle Cloud Infrastructure后,你就拥有了自己的租户。在这里,你可以创建、组织和管理资源。租户就像公司的数字映射,通常一个公司拥有一个租户,通过这个租户反映其组织结构。一般来说,一个订阅对应一个租户,一个租户对应一个订阅。

区域Compartment:

Oracle Cloud Infrastructure的区域,就像是云上的地理标识。每个区域包含一个或多个数据中心,我们称之为可用性域。每个区域都是独立的,可能横跨国家甚至洲际。

分区Availability domains:

在Oracle Cloud Infrastructure租户内,分区是跨区域的逻辑划分。使用分区来组织Oracle Cloud中的资源,控制资源访问,并设置使用配额。你可以定义策略来控制特定分区中资源的访问权限和可执行的操作。

可用性域:它们是区域内独立、独立运行的数据中心。每个可用性域内的物理资源与其他可用性域隔离,这提供了故障容忍能力。可用性域不共享如电力或冷却等基础设施,或内部可用性域网络。因此,一个可用性域的故障不太可能影响该区域内其他可用性域。

故障域Fault domains:

在可用性域内,故障域是硬件和基础设施的一组。每个可用性域拥有三个拥有独立电源和硬件的故障域。在多个故障域分布资源时,你的应用可以承受物理服务器故障、系统维护和故障域内的电源故障。

虚拟云网络(VCN)和子网Virtual cloud network (VCN) and subnets:

在Oracle Cloud Infrastructure区域中,你可以设置一个可定制的、软件定义的网络——这就是VCN。如同传统数据中心网络,VCN让你完全掌控你的网络环境。VCN可以包含多个不重叠的CIDR块,且在创建后你可以更改这些块。你可以将VCN细分为子网,这些子网可以范围到一个区域或可用性域。每个子网由一连串不与VCN中其他子网重叠的地址组成。你可以在创建后改变子网的大小。子网可以是公开的,也可以是私有的。

负载均衡器Load balancer:

Oracle Cloud Infrastructure负载均衡服务提供了从单一入口点到后端多个服务器的自动流量分配。

互联网网关Network address translation (NAT) gateway:

互联网网关允许VCN中的公共子网与公共互联网之间的流量传输。

网络地址转换(NAT)网关:NAT网关使VCN中的私有资源能够访问互联网上的主机,同时不会使这些资源面临来自互联网的入站连接。

服务网关Service gateway:

服务网关提供了从VCN到其他服务(如Oracle Cloud Infrastructure对象存储)的访问。从VCN到Oracle服务的流量通过Oracle网络结构传输,不经过互联网。

保险箱Vault:

Oracle Cloud Infrastructure保险箱使你能够集中管理保护数据的加密密钥,以及用于保护访问云中资源的秘密凭证。你可以使用保险箱服务来创建和管理保险箱、密钥和秘密。

注册表Registry:

Oracle Cloud Infrastructure注册表是Oracle管理的注册表,简化了你的开发到生产工作流程。它让存储、共享和管理开发工件(如Docker镜像)变得轻松。Oracle Cloud Infrastructure的高可用性和可扩展性架构确保你能可靠地部署和管理应用程序。

安全列表Security list:

对于每个子网,你可以创建安全规则,指定必须允许进出子网的流量的来源、目的地和类型。

路由表:虚拟路由表包含将流量从子网路由到VCN外部目的地的规则,通常通过网关。

Kubernetes容器引擎Container Engine for Kubernetes:

Oracle Cloud Infrastructure的Kubernetes容器引擎是一个完全托管的、可扩展的、高可用性的服务,你可以用它将容器化应用程序部署到云端。你指定应用程序所需的计算资源,Kubernetes容器引擎会在现有的租户中的Oracle Cloud Infrastructure上为其配备资源。它使用Kubernetes自动部署、扩展和管理跨集群主机的容器化应用程序。

Oracle MySQL数据库服务Oracle MySQL Database Service:

Oracle MySQL数据库服务是一个完全托管的Oracle Cloud Infrastructure (OCI)数据库服务,让开发人员能够快速开发和部署安全的云原生应用程序。它专为OCI优化,并且只在OCI上提供,由OCI和MySQL工程团队100%构建、管理和支持。Oracle MySQL数据库服务集成了一个高性能的分析引擎(HeatWave),可以直接对运营型MySQL数据库进行复杂的实时分析。

入口控制器Ingress controller:

入口控制器 (ing) 是在Kubernetes集群中运行的组件,管理入口资源。它从外部网络接收流量,将其路由到正确的服务,并执行负载平衡和SSL终止。入口控制器通常作为集群中的一个单独的pod运行,并且可以独立于其管理的服务进行扩展。

Kubernetes秘密Kubernetes secrets:

Kubernetes秘密可以包括敏感的配置数据,如认证令牌、密码和SSH密钥。秘密使你能够控制敏感数据,降低数据暴露给未授权用户的风险。Oracle Kubernetes容器引擎支持Kubernetes秘密的静态加密。

外部秘密操作员External Secrets Operator:

Kubernetes外部秘密操作员将Oracle Kubernetes容器引擎与Oracle Cloud Infrastructure保险箱整合在一起。操作员从外部APIs读取信息,并自动将这些值注入到Kubernetes秘密中。

SecretStore:

Kubernetes集群的控制平面将敏感的配置数据(如认证令牌、证书和凭据)作为Kubernetes秘密对象存储在etcd中。etcd是一个开源的分布式键值存储,Kubernetes用它来进行集群协调和状态管理。由Kubernetes容器引擎创建的Kubernetes集群中,etcd将数据写入和读取到Oracle Cloud Infrastructure区块卷服务的区块存储卷中。默认情况下,Oracle在区块卷中对静态数据进行加密,包括etcd和Kubernetes秘密。Oracle使用主加密密钥来管理这种默认加密,无需你采取任何行动。如果你想要对主加密密钥的生命周期及其使用方式有更多控制,你可以选择自己管理主加密密钥,而不是让Oracle为你管理。

Pod:

Pod是一个或多个容器及其共享存储的组合,以及关于如何共同运行这些容器的特定选项。通常,Pod中的容器共享相同的网络和内存空间,并可以访问共享卷进行存储。这些共享资源使Pod中的容器能够以无缝方式进行内部通信,就像它们安装在单个逻辑主机上一样。

虚拟节点Virtual Node:

虚拟节点是实际节点的软件抽象。虚拟节点部署在OCI的租户中,并由OCI完全监控和管理。

实用建议:制定您的云策略

虚拟云网络(VCN):

  • 创建VCN时,基于你计划附加到VCN子网中的资源数量,确定所需CIDR块的数量和每个块的大小。使用标准私有IP地址空间内的CIDR块。
  • 选择不与任何其他网络(在Oracle Cloud Infrastructure、你的本地数据中心或其他云提供商)重叠的CIDR块,这些网络是你打算建立私有连接的目标。
  • 创建VCN后,你可以更改、添加和移除其CIDR块。
  • 设计子网时,考虑你的流量流动和安全需求。将特定层或角色内的所有资源附加到同一子网,这可以作为安全边界。
  • 使用区域子网。

网络安全组(NSG):

  • 你可以使用NSG定义一组适用于特定VNIC的入站和出站规则。我们建议使用NSG而不是安全列表,因为NSG使你能够将VCN的子网架构与应用程序的安全需求分开。
  • 你可以使用NSG定义一组适用于特定VNIC的入站和出站规则。这种方式有助于将VCN子网架构与应用程序的安全需求分开。

负载均衡器带宽:

  • 创建负载均衡器时,你可以选择一个预定义的形状,提供固定带宽,或指定一个自定义(灵活)形状,设置一个带宽范围,并让服务根据流量模式自动扩展带宽。无论采用哪种方法,你都可以在创建负载均衡器后的任何时候更改形状。

运用虚拟节点时的关键考量

开始使用虚拟节点前,你首先需要在Oracle Cloud Infrastructure的Kubernetes容器引擎中创建带有虚拟节点池的集群,或者在现有的Kubernetes容器引擎集群中添加虚拟节点池。

虚拟节点的选择和布局:

  • 形状决定了处理器的类型以及每个Pod可以分配的CPU和内存资源。每个Pod最多可以分配到所选形状的内存和CPU限制。
  • 虚拟节点将通过水平Pod自动扩缩器(HPA)来扩缩Pod,无需配置节点自动扩缩器。
  • 你可以将虚拟节点放置在最适合你高可用性(HA)需求的特定可用性域和故障域中。为了获得最高级别的冗余,可以在OKE集群的可用性域内的每个故障域中放置一个虚拟节点。
  • 使用Kubernetes节点标签来指定Pod在虚拟节点上的放置位置。要在节点间均匀分布Pod,可以使用Pod拓扑扩展约束。

虚拟节点的网络使用:

  • 虚拟节点使用VCN原生Pod网络。集群中可用的Pod数量受子网中可用IP地址的限制。原生Pod网络为每个Pod提供一个VCN子网中的原生IP地址,使每个Pod都能受益于内置的OCI网络安全功能,如VCN流量日志、路由策略、VTAP和安全组。考虑使用允许预期使用的Pod和节点数量,并为增长提供空间的子网范围。定义网络安全组(NSG)来限制Pod的进出流量类型。使用VCN流量日志检查Pod间的所有网络流量,或使用VTAP捕获网络流量。

虚拟节点中的Pod与OCI服务的连接

  • 在某些情况下,Pod可能需要访问OCI内的其他服务。使用工作负载身份向虚拟节点中的Pod授予权限。工作负载身份将Oracle Cloud Infrastructure身份与访问管理角色与分配给Pod的Kubernetes服务账户关联。

虚拟节点的安全隔离:

  • 虚拟节点为你的Pod提供了虚拟机级别的隔离。
  • 安全漏洞可能允许容器内的恶意进程“逃逸”并影响节点的内核,可能导致节点故障。恶意代码还可以访问内存或存储中的数据并将数据泄露出去。泄露的数据可能属于多租户环境中的另一位租户。虚拟节点为你的Pod提供了虚拟机级别的隔离。一个Pod不与集群中的其他Pod共享计算、内存和网络资源,从而降低了由恶意代码引起的节点故障或泄露属于其他租户数据的可能性。


开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。

Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。

利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。

Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。

如您想咨询 Oracle 的相关业务,可联系搜索微信号:lhh1843812463woshiwhw123

或者可以进入以下群组进行咨询:

微信公众号

微信技术交流社群: