-
通过YAML使用Egress规则 容器隧道网络模型集群中,1.23及以上集群版本支持Egress规则操作系统。 VPC网络模型和
CCE Turbo 集群中,v1.27.16-r10、v1.28.15-r0、v1.29.10-r0、 v1.30.6-r0及以上版本的集群开启DataPlane V2后支持Egress规则,仅支持Huawei Cloud EulerOS 2.0操作系统。 场景一:通过网络策略限制Pod只能访问指定地址 图4 ipBlock 目标Pod具有role=db标签,该Pod只允许访问172.16.0.0/16网段,但不允许访问该网段中的172.16.0.40/32地址。设置该网络策略的具体操作步骤如下: 创建名为access-egress1.yaml文件。 vim access-egress1.yaml 以下为YAML文件内容: apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-egress1
namespace: default
spec:
policyTypes: # 使用Egress必须指定policyType
- Egress
podSelector: # 规则对具有role=db标签的Pod生效
matchLabels:
role: db
egress: # 表示出规则
- to:
- ipBlock:
cidr: 172.16.0.0/16 # 允许在出方向访问此网段
except:
- 172.16.0.40/32 # 不允许在出方向访问此网段,except网段需在cidr网段内 执行以下命令,根据上述的access-egress1.yaml文件创建网络策略。 kubectl apply -f access-egress1.yaml 预期输出: networkpolicy.networking.k8s.io/access-egress1 created 场景二:通过网络策略限制Pod只能被带有特定标签的Pod访问,且只能访问指定Pod 图5 同时使用Ingress和Egress 目标Pod具有role=db标签,该Pod只允许带有role=frontend标签的Pod访问其6379端口,且该Pod只能访问带有role=web标签的Pod。网络策略中的Ingress和Egress可以定义在同一个规则中,具体操作步骤如下: 创建名为access-egress2.yaml文件。 vim access-egress2.yaml 以下为YAML文件内容: apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-egress2
namespace: default
spec:
policyTypes:
- Ingress
- Egress
podSelector: # 规则对具有role=db标签的Pod生效
matchLabels:
role: db
ingress: # 表示入规则
- from:
- podSelector: # 只允许具有role=frontend标签的Pod访问
matchLabels:
role: frontend
ports: # 只能使用TCP协议访问6379端口
- protocol: TCP
port: 6379
egress: # 表示出规则
- to:
- podSelector: # 只允许访问具有role=web标签的Pod
matchLabels:
role: web 执行以下命令,根据上述的access-egress2.yaml文件创建网络策略。 kubectl apply -f access-egress2.yaml 预期输出: networkpolicy.networking.k8s.io/access-egress2 created
-
通过YAML使用Ingress规则 场景一:通过网络策略限制Pod只能被带有特定标签的Pod访问 图1 podSelector 目标Pod具有role=db标签,该Pod只允许带有role=frontend标签的Pod访问其6379端口。设置该网络策略的具体操作步骤如下: 创建名为access-ingress1.yaml文件。 vim access-ingress1.yaml 以下为YAML文件内容: apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-ingress1
namespace: default
spec:
podSelector: # 规则对具有role=db标签的Pod生效
matchLabels:
role: db
ingress: # 表示入规则
- from:
- podSelector: # 只允许具有role=frontend标签的Pod访问
matchLabels:
role: frontend
ports: # 只能使用TCP协议访问6379端口
- protocol: TCP
port: 6379 执行以下命令,根据上述的access-ingress1.yaml文件创建网络策略。 kubectl apply -f access-ingress1.yaml 预期输出: networkpolicy.networking.k8s.io/access-ingress1 created 场景二:通过网络策略限制Pod只能被指定命名空间下的Pod访问 图2 namespaceSelector 目标Pod具有role=db标签,该Pod只允许project=myproject标签的命名空间中的Pod访问其6379端口。设置该网络策略的具体操作步骤如下: 创建名为access-ingress2.yaml文件。 vim access-ingress2.yaml 以下为YAML文件内容: apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-ingress2
spec:
podSelector: # 规则对具有role=db标签的Pod生效
matchLabels:
role: db
ingress: # 表示入规则
- from:
- namespaceSelector: # 只允许具有project=myproject标签的命名空间中的Pod访问
matchLabels:
project: myproject
ports: # 只能使用TCP协议访问6379端口
- protocol: TCP
port: 6379 执行以下命令,根据上述的access-ingress2.yaml文件创建网络策略。 kubectl apply -f access-ingress2.yaml 预期输出: networkpolicy.networking.k8s.io/access-ingress2 created 场景三:通过网络策略限制Pod只能被指定命名空间下带有特定标签的Pod访问 图3 podSelector和namespaceSelector结合使用 目标Pod具有role=db标签,该Pod只允许project=myproject标签的命名空间中带有role=frontend标签的Pod访问其6379端口。设置该网络策略的具体操作步骤如下: 创建名为access-ingress3.yaml文件。 vim access-ingress3.yaml 以下为YAML文件内容: apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: access-ingress3
spec:
podSelector: # 规则对具有role=db标签的Pod生效
matchLabels:
role: db
ingress: # 表示入规则
- from:
- namespaceSelector: # 只允许具有project=myproject标签的命名空间中的Pod访问
matchLabels:
project: myproject
podSelector: # 只允许具有role=frontend标签的Pod访问
matchLabels:
role: frontend
ports: # 只能使用TCP协议访问6379端口
- protocol: TCP
port: 6379 执行以下命令,根据上述的access-ingress3.yaml文件创建网络策略。 kubectl apply -f access-ingress3.yaml 预期输出: networkpolicy.networking.k8s.io/access-ingress3 created
-
网络策略支持的集群对比 集群类型 CCE Standard集群 CCE Standard集群 CCE Turbo集群 网络模型 容器隧道网络模型 VPC网络模型 云原生网络2.0模型 NetworkPolicy能力是否默认开启 默认开启 默认关闭,如需使用NetworkPolicy能力需在创建集群时开启DataPlane V2 默认关闭,如需使用NetworkPolicy能力需在创建集群时开启DataPlane V2 数据面实现 openvswitch eBPF eBPF 入规则支持的集群版本 所有版本 v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0及以上集群版本 v1.27.16-r10、v1.28.15-r0、v1.29.10-r0、 v1.30.6-r0及以上集群版本 出规则支持的集群版本 v1.23及以上集群版本 入规则支持的选择方式 namespaceSelector podSelector namespaceSelector podSelector ipBlock namespaceSelector podSelector ipBlock 出规则支持的选择方式 namespaceSelector podSelector ipBlock 支持的操作系统 EulerOS CentOS Huawei Cloud EulerOS 2.0 支持Huawei Cloud EulerOS 2.0操作系统。 支持Huawei Cloud EulerOS 2.0操作系统。 是否支持IPv6网络策略 不支持 不支持 支持 是否支持安全容器 不支持 不支持 不支持 ipBlock限制范围 无约束 不支持配置容器网段、服务网段内的网段以及节点IP 不支持配置容器网段、服务网段内的网段以及节点IP 是否支持通过工作负载的标签限制ClusterIP的访问 不支持 支持 支持 是否支持限制100.125.0.0/16内部云服务网段 支持 支持 不支持 是否支持SCTP协议 不支持 支持 不支持 总是放通节点访问该节点上的Pod 支持 支持 支持 是否支持NetworkPolicy中EndPort配置 不支持 支持 不支持 CCE Turbo集群使用DataPlane V2特性由CCE受限开放,使用前请提交工单给CCE服务进行申请。 NetworkPolicy暂不支持安全容器(容器运行时为Kata)。 容器隧道网络的CCE Standard集群中,通过原地升级到支持Egress的集群版本,由于不会升级节点操作系统,会导致无法使用Egress,此种情况下请重置节点。 容器隧道网络集群开启NetworkPolicy后,Pod访问服务网段地址时,会在IP数据报文的可选字段里填充Pod源IP,以便目的端Pod上的NetworkPolicy规则可以基于Pod源IP进行网络策略限制。
-
条件(Condition) 条件键概述 条件(Condition)是身份策略生效的特定条件,包括条件键和运算符。 条件键表示身份策略语句的Condition元素中的键值。根据适用范围,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作,在鉴权过程中,云服务不需要提供用户身份信息,系统将自动获取并鉴权。详情请参见:全局条件键。 服务级条件键(前缀通常为服务缩写,如ga:)仅适用于对应服务的操作,详情请参见表4。 单值/多值表示API调用时请求中与条件关联的值数。单值条件键在API调用时的请求中最多包含一个值,多值条件键在API调用时请求可以包含多个值。例如:g:SourceVpce是单值条件键,表示仅允许通过某个VPC终端节点发起请求访问某资源,一个请求最多包含一个VPC终端节点ID值。g:TagKeys是多值条件键,表示请求中携带的所有标签的key组成的列表,当用户在调用API请求时传入标签可以传入多个值。 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,身份策略才能生效。支持的运算符请参见:运算符。 GA支持的服务级条件键 GA定义了以下可以在自定义身份策略的Condition元素中使用的条件键,您可以使用这些条件键进一步细化身份策略语句应用的条件。 表4 GA支持的服务级条件键 服务级条件键 类型 单值/多值 说明 ga:RequestRegionId string 单值 按照在请求中传递的地域ID筛选访问权限。 ga:RequestResourceType string 单值 按照在请求中传递的资源类型筛选访问权限。 ga:RequestResourceId string 单值 按照在请求中传递的资源ID筛选访问权限。 ga:RequestIpAddress string 单值 按照在请求中传递的IP地址筛选访问权限。 ga:RequestDomainName string 单值 按照在请求中传递的域名筛选访问权限。 ga:RegionId string 单值 按照终端节点组的地域筛选访问权限。 ga:ResourceType string 单值 按照终端节点的资源类型筛选访问权限。 ga:ResourceId string 单值 按照终端节点的资源ID筛选访问权限。 ga:IpAddress string 单值 按照终端节点的IP地址筛选访问权限。 ga:DomainName string 单值 按照终端节点的域名筛选访问权限。
-
中国大陆境外计费区域划分 计费大区 国家及地区(以华为内部业务划分区域) 亚太1 中国香港、中国澳门、中国台湾、日本、韩国 亚太2 印度 亚太3 越南、印尼、泰国、菲律宾、新加坡、马来西亚、柬埔寨、老挝、吉尔吉斯斯坦、文莱、缅甸、尼泊尔、孟加拉、蒙古、斯里兰卡、哈萨克斯坦、乌兹别克斯坦 欧洲 英国、德国、法国、荷兰、西班牙、意大利、 爱尔兰、瑞典、比利时、奥地利、波兰、罗马尼亚、白俄罗斯、葡萄牙、土耳其、摩尔多瓦、保加利亚、拉脱维亚、瑞士、捷克、匈牙利、卢森堡、希腊、克罗地亚、塞尔维亚、芬兰 中东&非洲 阿联酋、沙特、巴基斯坦、卡塔尔、阿曼、科威特、巴林、伊拉克、南非、埃及、肯尼亚、坦桑尼亚、马达加斯加、吉布提、毛里求斯、加纳、安哥拉、尼日利亚、约旦、也门、以色列、格鲁吉亚、亚美尼亚、塞浦路斯、阿塞拜疆 北美洲 美国、加拿大 大洋洲 澳大利亚、新西兰、斐济 南美洲 巴西、智利、阿根廷、秘鲁、哥伦比亚、厄瓜多尔、墨西哥
-
计费方式 计费项 计费方式 描述 参考文档 基础服务计费 流量计费 按照每小时实际使用的流量进行计费,也可以购买流量包抵扣使用的流量。 流量计费 CDN预付费流量包 峰值带宽计费 按照每日峰值带宽进行计费,系统每5分钟统计1个峰值带宽,每日得到288个值,取其中的最大值作为计费带宽。 峰值带宽计费 月结95峰值带宽计费 在一个自然月内,将每个有效日的所有峰值带宽的统计点进行排序,去掉数值最高的5%的统计点,取剩下的数值最高统计点为计费点,再根据合同约定的单价计费。 月结95峰值带宽计费 日峰值月平均计费 在一个自然月内,对所有有效日的最大峰值带宽求和取平均,获得当月的计费带宽,再根据合同约定的单价计费。 日峰值月平均计费 预付费流量包 购买相应加速区域的流量包进行抵扣。优先扣除流量包里的流量,超出部分采用按流量计费方式结算。 CDN预付费流量包 增值服务计费 全站加速请求数 全站加速的动态请求数和静态请求数计费。 增值服务计费 服务概览和统计分析页面展示的是加速域名日志中记录的流量数据,是应用层日志统计出的流量,但是实际产生的网络流量由于TCP/IP包头消耗和TCP重传消耗要比应用层统计到的流量高出7%~15%。因此按照业界标准,应用于账单的计费数据会在控制台监控数据的基础上上浮10%。 流量计费或峰值带宽计费转为月结95峰值带宽计费、日峰值月平均计费方式的商务可当月生效。月结95峰值带宽计费、日峰值月平均计费方式商务发生变更的次月1日生效,当月仍按照变更前的商务执行。 CDN/WSA计费分中国大陆、中国大陆境外区域,各区域单独计费,不同区域流量包不能相互抵扣。 CDN/WSA支持中国大陆境外分区计费,区域划分请参见中国大陆境外计费区域划分,如需使用海外分区计费,请联系您的客户经理洽谈开通。
-
应对办法 您可以参考表1中的建议合理设置相关防护和提醒功能,以减少突发高带宽带来的风险。 表1 应对办法 应对办法 说明 配置访问控制 给域名配置访问控制功能(包括Referer防盗链、IP黑白名单、URL鉴权等),以避免产生不必要的流量带宽消耗。详细设置请参见访问控制。 配置CDN联动
CES 配置CDN联动CES功能,通过对接CES(
云监控服务 )实现实时查看账号下加速域名的基础数据(流量、带宽、状态码等)、设置告警等功能,当监控指标触发您设置的告警条件时,会以邮箱、短信等方式发送告警,方便您及时发现潜在的风险。 配置用量封顶 配置用量封顶功能,当用户的访问带宽达到设置的值后,CDN会停用您的加速域名,以免产生过高的账单。 配置请求限速 配置请求限速功能,当单个请求达到限速条件后终端用户的访问速度会被限制,一定程度上减少突发高带宽风险。 配置可用额度预警 配置可用额度预警功能,当账户可用额度低于一定金额时,系统会发送短信提醒。 IP访问限频 开通IP访问限频功能,通过限制单IP的单URL每秒访问单个节点的次数(QPS),实现CC攻击防御及防恶意盗刷防护,降低高额账单风险。 配置边缘安全防护 开通边缘安全服务,通过配置安全规则防护加速域名。 配置突发带宽告警 配置突发带宽告警,当用户访问带宽达到设置的阈值后,CDN将会发送告警信息,方便及时分辨是否异常请求,降低高额账单风险。 为了确保统计数据的完整性和账单的准确性,CDN产品账单生成时间会存在延时,详见基础服务计费。因此实际计费时间晚于对应的CDN资源消耗时间,无法通过账单来实时反馈资源消费情况,这是由于CDN产品自身的分布式节点特性导致,也是业界通用的处理方法。
-
MySQL 为了确保用户数据库成功迁移到本云关系型数据库RDS for MySQLTaurusDB实例,创建迁移任务时,
数据复制服务 自动为目标数据库实例创建drsFull和drsIncremental临时账户。任务启动后,数据复制服务会使用该账户迁移数据,任务结束后,数据复制服务会自动删除这两个账户。 禁止使用用户自建的drsFull和drsIncrementa账号作为DRS任务连接数据库的账号。 删除、重命名和修改这些账户的密码和权限,会导致任务出错。
-
DRS任务耗时计算与比较示例 以MySQL到MySQL链路为例,根据DRS工作原理,设想在长距离或者网络延迟较大的环境下,比如网络延迟在100ms的时候,每次TCP同步交互就是客户端给服务端发一次请求,服务端响应给客户端数据或者状态。 拉取日志的时候一次请求,可以返回所有增量数据,也就是说如果有10MB的日志,带宽是10MB/s,根据拉取耗时公式理论上需要的时间如下所示: 图1 拉取耗时 写目标库的时候,每个事务需要三次交互,假设平均事务大小为1k,如果总数据量是10MB,带宽是10MB/s,根据回放耗时公式理论上64线程耗时如下所示: 图2 回放耗时 但是实际上TCP滑动窗口及拥塞算法会对拉日志有影响,拉取日志的时候,可能会比1.1秒稍长一些,比如2~3秒,但是对回放影响较小,因为本身回放耗时就达到了46秒以上了。 所以在远距离使用DRS同步数据的时候,建议DRS部署在离目标端近的地方,如果是云上,则建议使用入云任务。
-
条件(Condition) 条件键概述 条件(Condition)是身份策略生效的特定条件,包括条件键和运算符。 条件键表示身份策略语句的Condition元素中的键值。根据适用范围,分为全局级条件键和服务级条件键。 全局级条件键(前缀为g:)适用于所有操作,在鉴权过程中,云服务不需要提供用户身份信息,系统将自动获取并鉴权。详情请参见:全局条件键。 服务级条件键(前缀通常为服务缩写,如ga:)仅适用于对应服务的操作,详情请参见表4。 单值/多值表示API调用时请求中与条件关联的值数。单值条件键在API调用时的请求中最多包含一个值,多值条件键在API调用时请求可以包含多个值。例如:g:SourceVpce是单值条件键,表示仅允许通过某个VPC终端节点发起请求访问某资源,一个请求最多包含一个VPC终端节点ID值。g:TagKeys是多值条件键,表示请求中携带的所有标签的key组成的列表,当用户在调用API请求时传入标签可以传入多个值。 运算符与条件键、条件值一起构成完整的条件判断语句,当请求信息满足该条件时,身份策略才能生效。支持的运算符请参见:运算符。 GA支持的服务级条件键 GA定义了以下可以在自定义身份策略的Condition元素中使用的条件键,您可以使用这些条件键进一步细化身份策略语句应用的条件。 表4 GA支持的服务级条件键 服务级条件键 类型 单值/多值 说明 ga:RequestRegionId string 单值 按照在请求中传递的地域ID筛选访问权限。 ga:RequestResourceType string 单值 按照在请求中传递的资源类型筛选访问权限。 ga:RequestResourceId string 单值 按照在请求中传递的资源ID筛选访问权限。 ga:RequestIpAddress string 单值 按照在请求中传递的IP地址筛选访问权限。 ga:RequestDomainName string 单值 按照在请求中传递的域名筛选访问权限。 ga:RegionId string 单值 按照终端节点组的地域筛选访问权限。 ga:ResourceType string 单值 按照终端节点的资源类型筛选访问权限。 ga:ResourceId string 单值 按照终端节点的资源ID筛选访问权限。 ga:IpAddress string 单值 按照终端节点的IP地址筛选访问权限。 ga:DomainName string 单值 按照终端节点的域名筛选访问权限。
-
提升访问性能 使用场景 配置项 说明 提升回源效率,减少回源消耗 Range回源 如果您的资源内容较大,希望CDN回源时只返回指定范围的内容,以便缩短大文件的分发时间,提升回源效率,减少回源消耗,您需要设置Range回源。 文件下载加速默认开启Range回源。 确认源站是否支持Range。 源站资源因业务需求做了重定向 回源跟随 源站地址因业务需求做了301/302重定向,CDN的回源请求会返回301/302状态码,开启回源跟随后,CDN节点会先跳转到301/302对应地址获取资源,缓存后再返回给用户。
-
提高缓存命中率、优化加速效果 使用场景 配置项 说明 缓存命中率低、加速效果不明显 配置缓存规则 合理配置不同资源的缓存过期时间和优先级,能有效提升缓存命中率,降低回源率,减轻源站压力。 注意事项: 注意设置缓存优先级,优先级取值为1~1000之间的整数,数值越大优先级越高。 如果您修改或新增了缓存规则,请刷新对应资源的缓存。 请将动态资源的缓存过期时间设置为“0”,即不缓存,否则将导致访问异常。 智能压缩 如果您想要压缩您网站的静态资源,缩小传输文件的大小,提升传输效率,减少带宽消耗,您需要开启智能压缩。 智能压缩包含Gzip压缩和Brotli压缩,Brotli压缩的性能比Gzip压缩提升约15%~25%。 开启智能压缩功能时,CDN会自动压缩静态文件(.js、.html、.css、.xml、.json、.shtml、.htm)。 URL参数 如果您需要CDN节点在缓存资源忽略或保留“?”之后参数,提高缓存命中率,提升分发效率,您需要开启URL参数。 URL参数变化,资源不变,可以配置忽略参数。 URL参数变化,资源变化,不可配置忽略参数。
-
可选配置 域名被恶意攻击或盗刷流量时,会产生高于日常消费金额的账单,并且该账单无法免除或退款,建议您添加域名时配置用量封顶和突发带宽告警,以减少突发高带宽带来的风险。 配置用量封顶功能,当用户的访问带宽达到设置的值后,CDN会停用您的加速域名,以免产生过高的账单。 配置突发带宽告警功能,当用户访问带宽达到设置的阈值后,CDN将会发送告警信息,方便及时分辨是否异常请求,降低高额账单风险。突发带宽告警开关默认打开且未配置带宽告警阈值,如果您在添加域名时无需配置,将开关关闭即可。
-
DNSPod配置方法 如果您的DNS服务商为DNSPod,您可通过如下步骤配置CNAME记录。 登录DNSPod控制台。 在左侧菜单栏中,选择“域名解析”。 在待添加记录集的域名所在行,单击相应域名。 单击“添加记录”,弹出“添加记录”页面。 根据界面提示填写参数配置,参数信息如表1所示。 表1 参数说明 参数 参数说明 取值样例 主机记录 主机记录指域名前缀。 www.****.com的主机记录为www。 testcdn.****.com的主机记录为testcdn。 记录类型 此处选CNAME。 CNAME-将域名指向另外一个域名 线路类型 一般情况下,如果服务商只提供了一个IP地址或域名,选择「默认」即可。其他特殊情况请咨询您的DNS服务商。 默认 记录值 需指向的域名,即CDN为您分配的CNAME域名。 www.example.com.9c****e7.c.cdnhwc1.com 权重 无需填写。 - MX优先级 无需填写。 - TTL(秒) TTL指解析记录在本地DNS服务器的有效缓存时间。如果您的服务地址经常更换,建议TTL值设置相对小些,反之,建议设置相对大些。 保持默认 单击“保存”,完成添加。 新增CNAME记录会实时生效,修改CNAME记录会在72小时内生效。 如果您遇到解析冲突问题,请参见域名解析冲突。 父主题: 配置CNAME
-
新网配置方法 如果您的DNS服务商为新网,您可通过如下步骤添加CNAME记录。 登录新网域名自助管理平台。 选择“域名管理”,进入DNS解析记录管理页面。 选择待添加记录的域名,进入DNS解析记录页面。 根据界面提示填写参数配置,参数信息如表1所示。 表1 参数说明 参数 参数说明 取值样例 别名 需指向的域名,即CDN为您分配的CNAME域名。 www.example.com.9c****e7.c.cdnhwc1.com 别名主机 主机记录指域名前缀。 www.****.com的主机记录为www。 testcdn.****.com的主机记录为testcdn。 TTL(秒) TTL指解析记录在本地DNS服务器的有效缓存时间。如果您的服务地址经常更换,建议TTL值设置相对小些,反之,建议设置相对大些。 保持默认 单击“提交”,完成添加。 新增CNAME记录会实时生效,修改CNAME记录会在72小时内生效。 如果您遇到解析冲突问题,请参见域名解析冲突。 父主题: 配置CNAME