云服务器内容精选

  • 响应示例 { "route": { "type": "peering", "nexthop": "60c809cb-6731-45d0-ace8-3bf5626421a9", "destination": "192.168.200.0/24", "vpc_id": "ab78be2d-782f-42a5-aa72-35879f6890ff", "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f", "id": "3d42a0d4-a980-4613-ae76-a2cddecff054" } }
  • 请求示例 创建peering类型的VPC路由,所在vpc id为ab78be2d-782f-42a5-aa72-35879f6890ff,下一跳peering id为60c809cb-6731-45d0-ace8-3bf5626421a9,目的地址192.168.200.0/24。 POST https://{Endpoint}/v2.0/vpc/routes { "route": { "type": "peering", "nexthop": "60c809cb-6731-45d0-ace8-3bf5626421a9", "destination": "192.168.200.0/24", "vpc_id": "ab78be2d-782f-42a5-aa72-35879f6890ff" } }
  • 响应参数 表3 响应参数 参数名称 类型 说明 route route object route对象,参见表4。 表4 route对象 属性 类型 说明 id String 路由id destination String 路由目的地址CIDR,如192.168.200.0/24。 nexthop String 路由下一跳,如果路由是“peering”类型,填写vpc peering id。 type String 路由类型。目前只支持“peering”。 vpc_id String 路由的vpc,需要填写存在的vpc_id。 tenant_id String 项目ID
  • 请求参数 表1 请求参数 参数名称 类型 必选 说明 route route object 是 route对象,参见表2。 表2 route对象 属性 类型 是否必选 说明 destination String 是 路由目的地址CIDR,如192.168.200.0/24。支持IPv4和IPv6。 nexthop String 是 路由下一跳,如果路由是“peering”类型,填写vpc peering id。 vpc peering id即对等连接id,获取方法请参见查询对等连接列表。 type String 是 路由类型。 目前只支持“peering”类型,即下一跳为对等连接。 如果下一跳为ECS,该API不支持,请您使用更新路由表。 vpc_id String 是 请求创建路由的VPC ID。
  • 请求参数 表2 请求参数 名称 是否必选 参数类型 说明 routetable 是 routetable object 路由表对象,参见表3。 表3 routetable字段说明 名称 是否必选 参数类型 说明 subnets 是 subnet object 功能说明:路由表所关联的子网 约束:只能关联路由表所属vpc下的子网 表4 subnet字段说明 名称 是否必选 参数类型 说明 associate 否 Array of strings 路由表关联子网ID列表 disassociate 否 Array of strings 路由表解除关联子网ID列表
  • 请求示例 解关联路由表3d42a0d4-a980-4613-ae76-a2cddecff054和子网815a6b9e-f766-48eb-967c-0ada72d85435。 POST https://{Endpoint}/v1/6fbe9263116a4b68818cf1edce16bc4f/routetables/3d42a0d4-a980-4613-ae76-a2cddecff054/action { "routetable": { "subnets": { "disassociate": [ "815a6b9e-f766-48eb-967c-0ada72d85435" ] } } }
  • 响应示例 { "routetable": { "id": "3d42a0d4-a980-4613-ae76-a2cddecff054", "vpc_id": "ab78be2d-782f-42a5-aa72-35879f6890ff", "description": "abc", "routes": [ { "type": "ecs", "destination": "10.10.10.0/24", "nexthop": "7c50463d-d36c-4417-aa85-cc11fa10f341", "description": "abc" } ], "subnets": [ { "id": "8d4ce32f-d68a-4c4c-9f18-c68d8a5c7f2f" } ], "tenant_id": "6fbe9263116a4b68818cf1edce16bc4f", "created_at": "2022-12-15T02:56:40", "updated_at": "2022-12-15T03:06:21" } }
  • 切流至ELB Ingress 流量切换前,假设您已将业务域名通过A记录解析的方式指向了自建Nginx Ingress的公网地址。您可以使用DNS的流量权重分配,逐步将访问原Nginx Ingress的流量切换至新的ELB Ingress。 图1 使用DNS切流 您可以通过以下步骤完成流量的切换。 进入公网域名列表页面。 在“公网域名”页面的域名列表中,单击域名example.com的名称。 进入“解析记录”页面。此时已存在一个A记录,对应Nginx Ingress的公网IP。修改Nginx Ingress的A记录的权重为9。 单击“添加记录集”,添加A记录,地址为待迁移的ELB公网IP,并将权重设置为1。 图2 修改DNS记录集 在观察业务没有影响的情况下,逐步调整ELB实例解析记录的权重值至100%。
  • 场景示例 下图场景为例。某企业在华为云使用CCE集群,并通过自建Nginx Ingress Controller配置Ingress转发规则,配置域名和路径的转发策略,且对外通过DNS域名提供服务。客户端访问域名example.com时,Nginx Ingress接收到请求会根据对应的转发策略将流量转发至对应Service的Pod上。 由于业务发展需要,该企业需要将自建Nginx Ingress迁移到ELB Ingress上。为了保持业务稳定,希望不改变对外提供服务的DNS域名及后端服务器的IP地址。您可以通过在 CCE集群上配置 ELB Ingress 规则,使ELB提供的转发策略与之前一致,然后利用DNS域名解析的权重设置完成流量的迁移。 建议在业务低谷期进行流量的切换。 使用ELB会产生计费信息,具体计费详情请参见计费概述。
  • Ingress支持的Service类型 ELB Ingress支持的Service类型如表1所示。 表1 ELB Ingress支持的Service类型 集群类型 ELB类型 集群内访问(ClusterIP) 节点访问(NodePort) CCE Standard集群 共享型负载均衡 不支持 支持 独享型负载均衡 不支持(集群内访问服务关联实例未绑定eni网卡,独享型负载均衡无法对接) 支持 CCE Turbo集群 共享型负载均衡 不支持 支持 独享型负载均衡 支持 不支持(节点访问服务关联实例已绑定eni网卡,独享型负载均衡无法对接) Nginx Ingress支持的Service类型如表2所示。 表2 Nginx Ingress支持的Service类型 集群类型 ELB类型 集群内访问(ClusterIP) 节点访问(NodePort) CCE Standard集群 共享型负载均衡 支持 支持 独享型负载均衡 支持 支持 CCE Turbo集群 共享型负载均衡 支持 支持 独享型负载均衡 支持 支持
  • ELB Ingress Controller工作原理 CCE自研的ELB Ingress Controller基于弹性负载均衡服务ELB实现公网和内网(同一VPC内)的七层网络访问,通过不同的URL将访问流量分发到对应的服务。 ELB Ingress Controller部署于Master节点上,与集群所在VPC下的弹性负载均衡器绑定,支持在同一个ELB实例(同一IP)下进行不同域名、端口和转发策略的设置。ELB Ingress Controller的工作原理如图2,实现步骤如下: 用户创建Ingress资源,在Ingress中配置流量访问规则,包括负载均衡器、URL、SSL以及访问的后端Service端口等。 Ingress Controller监听到Ingress资源发生变化时,就会根据其中定义的流量访问规则,在ELB侧重新配置监听器以及后端服务器路由。 当用户进行访问时,流量根据ELB中配置的转发策略转发到对应的后端Service端口,然后再经过Service二次转发访问到关联的各个工作负载。 图2 ELB Ingress工作原理(CCE Standard集群以及CCE Turbo集群使用共享型ELB场景) 在使用CCE Turbo集群 + 独享型ELB实例时,Pod IP直接从VPC中分配,支持ELB直通Pod。创建集群外部访问的Ingress时,可使用ELB对接ClusterIP服务,直接将Pod作为ELB监听器的后端服务器,外部流量可以不经过节点端口转发直接访问集群中的Pod。 图3 ELB Ingress直通容器原理(CCE Turbo集群使用独享型ELB场景)
  • Nginx Ingress Controller工作原理 Nginx型的Ingress使用弹性负载均衡(ELB)作为流量入口,并在集群中部署nginx-ingress插件来对流量进行负载均衡及访问控制。 nginx-ingress插件使用开源社区的模板与镜像,使用过程中可能存在缺陷,CCE会定期同步社区版本来修复已知漏洞。请评估是否满足您的业务场景要求。 开源社区地址:https://github.com/kubernetes/ingress-nginx Nginx型的Ingress Controller通过pod部署在工作节点上,因此引入了相应的运维成本和Nginx组件运行成本,其工作原理如图4,实现步骤如下: 当用户更新Ingress资源后,Ingress Controller就会将其中定义的转发规则写入到Nginx的配置文件(nginx.conf)中。 内置的Nginx组件进行reload,加载更新后的配置文件,完成Nginx转发规则的修改和更新。 在流量访问集群时,首先被已创建的负载均衡实例转发到集群内部的Nginx组件,然后Nginx组件再根据转发规则将其转发至对应的各个工作负载。 图4 Nginx Ingress Controller工作原理
  • 为什么需要Ingress Service基于TCP和UDP协议进行访问转发,为集群提供了四层负载均衡的能力。但是在实际场景中,Service无法满足应用层中存在着大量的HTTP/HTTPS访问需求。因此,Kubernetes集群提供了另一种基于HTTP协议的访问方式——Ingress。 Ingress是Kubernetes集群中一种独立的资源,制定了集群外部访问流量的转发规则。如图1所示,用户可根据域名和路径对转发规则进行自定义,完成对访问流量的细粒度划分。 图1 Ingress示意图 下面对Ingress的相关定义进行介绍: Ingress资源:一组基于域名或URL把请求转发到指定Service实例的访问规则,是Kubernetes的一种资源对象,通过接口服务实现增、删、改、查的操作。 Ingress Controller:请求转发的执行器,用以实时监控资源对象Ingress、Service、Endpoint、Secret(主要是TLS证书和Key)、Node、ConfigMap的变化,解析Ingress定义的规则并负责将请求转发到相应的后端Service。 Ingress Controller在不同厂商之间的实现方式不同,根据负载均衡器种类的不同,可以将其分成ELB型和Nginx型。CCE支持上述两种Ingress Controller类型,其中ELB Ingress Controller基于弹性负载均衡服务(ELB)实现流量转发;而Nginx Ingress Controller使用Kubernetes社区维护的模板与镜像,通过Nginx组件完成流量转发。
  • 操作步骤 登录集群控制台。 在左侧导航栏中选择“服务”,选择“路由”页签,并选择路由所在命名空间。如需新建命名空间,请参见创建命名空间。 单击右上角“创建路由”,设置路由配置参数。 名称:新增路由的名称,用户可自定义。 命名空间:路由所在命名空间。 TLS配置: 服务器证书:选择IngressTLS类型的服务器证书。若无符合条件的证书,可单击“创建IngressTLS类型的密钥证书”,请参考创建密钥创建一个指定类型的密钥证书。 SNI(Server Name Indication):输入域名并选择对应的证书。SNI是TLS的扩展协议,在该协议下允许同一个IP地址和端口号下对外提供多个基于TLS的访问域名,且不同的域名可以使用不同的安全证书。 转发策略配置:请求的访问地址与转发规则匹配时(转发规则由域名、URL组成,例如:10.117.117.117:80/helloworld),此请求将被转发到对应的目标Service处理。您可添加多条转发策略。 域名:可选项,输入实际访问的域名地址。请确保所填写的域名已注册并备案,一旦配置了域名规则后,必须使用域名访问。 URL:需要注册的访问路径,例如:/healthz。该访问路径需与后端应用暴露的URL一致,否则将返回404错误。 目标服务名称:选择服务名称,需要先创建NodePort服务,具体可参考节点访问(NodePort)。 目标服务访问端口:选择目标服务后,对应的容器端口将自动获取。 Ingress Class:支持选择集群内已创建的Ingress Class,或手动输入规划的Ingress Class名称。 注解:支持key/value对格式,请您根据自身业务以及厂家要求进行注解配置,填写完成后单击“添加”。 单击“确定”,创建Ingress。
  • 操作场景 为多网卡云服务器配置策略路由之前,您需要收集云服务器的网络信息,请根据云服务器操作系统及IP类型参考对应的指导,具体说明如下: 对于Linux IPv4场景,您需要收集的信息如表1所示。 表1 Linux IPv4场景信息说明 类型 主网卡 扩展网卡 获取方法 源端 网卡地址:10.0.0.115 子网网段:10.0.0.0/24 子网网关:10.0.0.1 网卡地址:10.0.1.183 子网网段:10.0.1.0/24 子网网关:10.0.1.1 获取云服务器网卡地址 获取子网网段和网关地址 目的端 网卡地址:10.0.2.12 不涉及 对于Linux IPv6场景,您需要收集的信息如表2所示。 表2 Linux IPv6场景信息说明 类型 主网卡 扩展网卡 获取方法 源端 IPv4网卡地址:10.0.0.102 IPv6网卡地址:2407:c080:1200:1dd8:859c:e5d5:8b3d:a2d9 子网IPv6网段:2407:c080:1200:1dd8::/64 子网IPv6网关:2407:c080:1200:1dd8::1 IPv4网卡地址:10.0.1.191 IPv6网卡地址:2407:c080:1200:1a9c:7cc0:63b5:8e65:4dd8 子网IPv6网段:2407:c080:1200:1a9c::/64 子网IPv6网关:2407:c080:1200:1a9c::1 获取云服务器网卡地址 获取子网网段和网关地址 目的端 IPv4网卡地址:10.0.2.3 IPv6网卡地址:2407:c080:1200:1dd9:16a7:fe7a:8f71:7044 不涉及 对于Windows IPv4场景,您需要收集的信息如表3所示。 表3 Windows IPv4场景信息说明 类型 主网卡 扩展网卡 获取方法 源端 网卡地址:10.0.0.59 子网网关:10.0.0.1 网卡地址:10.0.1.104 子网网关:10.0.1.1 获取云服务器网卡地址 获取子网网段和网关地址 目的端 网卡地址:10.0.2.12 不涉及 对于Windows IPv6场景,您需要收集的信息如表4所示。 表4 Windows IPv6场景信息说明 类型 主网卡 扩展网卡 获取方法 源端 网卡地址:2407:c080:802:aba:6788:fb94:d71f:8deb 网卡地址:2407:c080:802:be6:71c8:42e0:d44e:eeb4 获取云服务器网卡地址 目的端 网卡地址:2407:c080:802:be7:c2e6:d99c:b685:c6c8 不涉及