网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

公网访问

更新时间:2024-07-02 GMT+08:00
分享

概述

公网访问是指使用外部网络访问负载,您可以给负载绑定共享型ELB实例(ELB必须与负载在同一个VPC内),通过ELB实例访问负载,当前外部访问支持四层和七层负载公网访问。

  • 四层公网访问支持TCP和UDP两种协议,设置完成后可以通过“elb公网ip:elb端口”访问负载。
  • 七层公网访问支持HTTP和HTTPS两种协议访问,设置完成后,可以通过“http://公网域名(或elb 公网ip):elb端口/映射路径”访问负载。

Service是基于四层TCP和UDP协议转发的,Ingress可以基于七层的HTTP和HTTPS协议转发,可以通过域名和路径做到更细粒度的划分,如下图所示。

图1 Ingress-Service

下图是一个通过HTTP协议访问负载的示例。

图2 公网访问

约束与限制

使用弹性公网IP(Elastic IP,简称EIP)前,请先了解EIP的使用限制

配置公网访问-创建工作负载时设置

在云容器实例中,您只需要在创建负载时选择“公网访问”,然后配置如下参数。

  • 安装coredns:coredns插件为您的其他负载提供内部域名解析服务,如果不安装coredns则无法通过“服务名称:负载访问端口”访问负载。
  • ELB实例:选择ELB实例,如没有ELB实例可以单击“创建共享型ELB实例”去创建。
    须知:

    此处创建的ELB需要与负载所在命名空间在同一个VPC内。

    CCI暂时不支持独享型负载均衡,建议您创建共享型ELB实例。

  • ELB协议:即公网访问使用的通信协议,支持HTTP、HTTPS、TCP和UDP协议。
  • Ingress名称:Ingress是用于管理七层协议访问的对象。此处如果不配置,云容器实例会默认负载名称作为Ingress名称。Ingress的详细信息请参见https://support.huaweicloud.com/devg-cci/cci_05_0008.html
  • 公网域名(选择HTTP/HTTPS协议时可配置):通过域名访问负载,公网域名需要您自行购买,并将域名解析指向所选的ELB实例弹性公网IP。
  • 证书(选择HTTPS协议时必填):SSL证书的导入方法请参见SSL证书
  • ELB端口:选择使用的ELB访问的具体协议和端口。
  • 负载端口协议:访问负载的通信协议,可选择TCP或UDP,如果ELB协议选择为HTTP/HTTPS,则负载端口协议为TCP。
  • 负载端口配置:
    • 负载访问端口:负载提供的访问端口。
    • 容器端口:容器监听的端口,负载访问端口映射到容器端口。
  • HTTP路由配置
    • 映射路径:URL访问的路径,必须以“/”开头,如“/api/web”,也可以是根路径“/”
    • 负载访问端口:前面设置的负载访问端口。

如下图所示,假如ELB实例的IP地址为“10.10.10.10”,则通过“http://10.10.10.10:6071/”就可以从公网访问到负载。

图3 配置公网访问参数

配置公网访问-工作负载创建完成后设置

在工作负载创建完成后对Service进行配置,此配置对工作负载状态无影响,且实时生效。具体操作如下:

  1. 登录云容器实例管理控制台,左侧导航栏中选择“网络管理 > 服务(Service)”,在右侧页面单击“添加服务”
  2. “添加服务”页面,访问类型选择“负载均衡 LoadBalancer”
  3. 设置弹性负载均衡访问参数。

    • 服务名称:服务名称即Service的名称,Service是用于管理Pod访问的对象。
    • 命名空间:工作负载所在命名空间。
    • 关联工作负载:要添加Service的工作负载。
    • 负载均衡:选择公网ELB实例,如没有ELB实例可以单击“创建ELB实例”去创建。
      须知:

      此处创建的ELB需要与负载所在命名空间在同一个VPC内。

      CCI暂时不支持独享型负载均衡,建议您创建共享型ELB实例。

    • 负载端口配置
      • 协议:访问负载的通信协议,可选择TCP或UDP。
      • 访问端口:负载提供的访问端口。
      • 容器端口:容器监听的端口,负载访问端口映射到容器端口。

  4. 单击“提交”,工作负载已添加“负载均衡 LoadBalancer”的服务。

添加DNAT访问方式

工作负载创建后,如果想要使用公网访问Pod,除了使用ELB,还可以添加DNAT访问方式。具体操作如下:

  1. 创建一个NAT网关。
  2. 使用kubectl创建DNAT类型的Service,具体创建方式请参考Service,下面是一个DNAT类型的Service示例:

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      namespace: default  # 用户命名空间,默认为default
      annotations:
        kubernetes.io/elb.class: dnat       # 类型DNAT
        kubernetes.io/natgateway.id: 4b8cda3d-3543-4ebd-a55e-ca610b3b3c43 # NAT网关ID
    spec:
      loadBalancerIP: 100.85.218.195      # DNAT使用的 EIP
      selector:
        app: nginx
      ports:
      - name: service0
        targetPort: 80     # Pod 暴露的端口
        port: 8080         # DNAT访问端口
        protocol: TCP
      type: LoadBalancer   # Service的类型

  1. 创建成功后,使用kubectl describe <service_name> -n <service_namespace> 可以查看Service更新状态。

创建并更新成功后,就可以使用EIP+Port的方式访问Pod了。

约束与限制

  1. 由于一条DNAT规则只能转发一个后端,因此一条DNAT Service也只能关联一个后端Pod,超过一个时DNAT规则绑定失败。
  2. 一个 NAT 网关只能添加 200 条 DNAT 规则,具体限制参考NAT网关文档。
  3. DNAT Service创建后前端可以查看到信息,但是请不要在前端进行修改设置。
  4. 子网使用非默认路由需要在对应路由表中添加NAT网关的路由。
  5. 如果在SNAT规则使用的网关下配置DNAT Service,请确保DNAT Service使用的EIP与SNAT规则绑定的EIP不同。
  6. NAT网关的使用,具体可参考NAT网关文档。

添加Ingress访问方式

您可以在工作负载创建完成后为其添加Ingress类型的访问,此配置对工作负载状态无影响,且实时生效。具体操作如下:

  1. 登录云容器实例管理控制台,左侧导航栏中选择“网络管理 > 路由(Ingress)”,在右侧页面单击“添加路由”
  2. 设置路由参数。

    • 路由名称:自定义Ingress名称。
    • 命名空间:选择需要添加Ingress的命名空间。
    • 负载均衡:可以将互联网访问流量自动分发到工作负载所在的多个节点上。
    • 对外端口:开放在负载均衡服务地址的端口,可任意指定。
    • 对外协议:支持HTTP和HTTPS。如果选择HTTPS,请选择密钥证书,格式说明请参见证书格式
      说明:
      • 选择HTTPS协议时,才需要创建密钥证书ingress-test-secret.yaml。创建密钥的方法请参见使用Secret
      • 同一个ELB实例的同一个端口配置HTTPS时,一个监听器只支持配置一个密钥证书。如果使用两个不同的密钥证书将两个Ingress添加到同一个ELB下的同一个监听器,ELB侧实际只生效最初的证书。
    • 域名:可选填。实际访问的域名地址,该域名需用户购买并备案,并确保所填域名能解析到所选负载均衡实例的服务地址。一旦配置了域名规则,则必须使用域名访问。
    • 路由配置:
      • 路由匹配规则:当前仅支持前缀路由匹配。

        前缀路由匹配:例如映射URL为/healthz,只要符合此前缀的URL均可访问。例如/healthz/v1,/healthz/v2。

      • 映射URL:需要注册的访问路径。
      • 服务名称:选择需要添加Ingress的服务。
      • 服务端口:容器镜像中容器实际监听端口,需用户确定。

  3. 配置完成后,单击“提交”

    创建完成后,在Ingress列表可查看到已创建成功的Ingress。

如何处理公网无法访问

  1. 公网能正常访问的前提是负载已处于运行中状态,如果您的负载处于未就绪或异常状态,公网访问将无法正常使用。
  2. 从负载开始创建到公网可以正常访问可需要1分钟到3分钟的时间,在此时间内网络路由尚未完成配置,请稍作等待。
  3. 负载创建3分钟以后仍然无法访问。单击创建的负载进入详情页,在详情页单击访问配置下面的“事件”标签,查看访问事件,查看是否有告警事件。如下两种常见的事件。
    • Listener port is repeated:ELB监听器端口重复,是由于之前发布公网访问的负载,删除之后立刻创建使用相同ELB端口的公网访问负载,ELB实际删除端口需要一定的时间,因此首次创建失败,可以选择删除负载重新创建,也可以等待5-10分钟,公网访问可正常使用。
    • Create listener failed:创建ELB监听器失败,创建监听器失败的原因一般是超过配额限度,请选择其他配额充足的ELB实例。
  4. 负载创建3分钟以后仍然无法访问,且无告警事件,可能原因是用户配置的容器端口实际上没有相应进程在监听,目前云容器实例服务无法检测出该类使用异常,需要您排查镜像是否有监听该容器端口。如果容器端口监听正确,此时无法访问的原因可能为ELB实例本身有问题,请排查ELB实例状态。

使用kubectl实现公网访问

公网访问需要配合Service和Ingress两个Kubernetes对象实现,具体请参见ServiceIngress

更新Service

您可以在添加完Service后,更新此Service的端口配置。操作如下:

  1. 登录云容器实例管理控制台,左侧导航栏中选择“网络管理 > 服务(Service)”,在Service页面中,选择对应的命名空间,单击需要更新端口配置的Service后的“更新”。
  2. 更新负载均衡参数:

    • 命名空间:工作负载所在命名空间,更新时此处不可修改。
    • 关联工作负载:要添加Service的工作负载,更新时此处不可修改。
    • 服务名称:服务名称即Service的名称,Service是用于管理Pod访问的对象,更新时此处不可修改。
    • 负载均衡:更新时此处不可修改。
    • 端口配置
      • 协议:访问负载的通信协议,可选择TCP或UDP。
      • 访问端口:负载提供的访问端口。
      • 容器端口:容器监听的端口,负载访问端口映射到容器端口。

  3. 单击“提交”。工作负载已更新Service。

更新Ingress

您可以在添加完Ingress后,更新此Ingress的端口、域名和路由配置。操作如下:

  1. 登录云容器实例管理控制台,左侧导航栏中选择“网络管理 > 路由(Ingress)”,选择对应的命名空间,单击待更新Ingress后的“更新”。
  2. “更新路由”页面,更新如下参数:

    • 对外端口:开放在负载均衡服务地址的端口,可任意指定。
    • 域名:可选填。实际访问的域名地址,该域名需用户购买并备案,并确保所填域名能解析到所选负载均衡实例的服务地址。一旦配置了域名规则,则必须使用域名访问。
    • 路由配置:可单击“添加映射”增加新的路由配置。
      • 路由匹配规则:当前仅支持前缀路由匹配。

        前缀路由匹配:例如映射URL为/healthz,只要符合此前缀的URL均可访问。例如/healthz/v1,/healthz/v2。

      • 映射URL:需要注册的访问路径,例如:/healthz。
      • 服务名称:选择需要更新Ingress的服务。
      • 服务端口:容器镜像中容器实际监听端口,需用户确定。

  3. 单击“提交”,工作负载已更新Ingress。
提示

您即将访问非华为云网站,请注意账号财产安全

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容