云服务器内容精选

  • 添加IPv4/IPv6双栈网关 登录ASM控制台,在网格列表页面单击已经开启IPv6双栈的网格名称,单击“网关管理-添加网关”。网关参数如下填写 访问方式: 选择“DualStack"。 负载均衡: 选择独享型,选中的独享型ELB需要有IPv6地址。 其他配置参数根据实际情况填写。 当前IPv4/IPv6双栈网关添加IPv6外部访问地址时,只支持添加 域名 ,通过域名访问,不支持添加IPv6地址访问。
  • 约束与限制 支持启用双栈网格的约束。 网格类型 Istio版本 支持启用的集群类型 集群网络类型 其他说明 基础版 1.18及以上 CCE Turbo 集群 云原生网络2.0 集群需要已启用IPv6,请参考通过CCE搭建IPv4/IPv6双栈集群 支持创建IPv4/IPv6网关的约束。 网格类型 Istio版本 支持启用的ELB类型 ELB规格 其他说明 基础版 1.18及以上 独享型ELB 4层网络型 ELB需要配置IPv6地址 您的网格开启IPv4/IPv6双栈后不支持关闭, 未开启双栈的网格也不支持创建完成之后开启双栈。 您低版本的网格升级到1.18及以上时,不支持升级后开启IPv4/IPv6双栈。
  • 迁移方案选择 表1 迁移方案 匹配条件 迁移方案 仅存在一个集群 业务允许小时级别中断 原集群卸载重装方案 网格使用了流量治理规则,envoyfilter等配置 对外ip端口可替换 客户业务可重新部署 新建集群和网格方案 仅使用了网格网关能力 业务允许闪断 使用ingress中转方案 业务多集群 业务允许小时级别中断 1.0企业版多集群场景(使用原集群创建网格) 业务多集群 业务允许闪断 1.0企业版多集群场景(新建集群和网格方案)
  • 容器服务加入网格 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“sidecar管理”页签,为命名空间“vmns”注入sidecar。 在左侧导航栏选择“服务管理”,选择命名空间“vmns”。 按下述指导修复异常状态的tomcat服务。 单击“处理”进入自动修复项页面,单击“一键修复”,自动处理异常状态的检查项,直到配置诊断为正常状态。 图1 服务状态
  • 配置同步 方案一 手动同步网格配置(推荐) 手动在新建的网格上添加网关路由,并同步1.0企业版网格配置。 方案二 使用备份网格资源还原配置 查看企业版网格网关使用了几个ELB,使用新建的几个ELB进行替换,如下图所示使用了两个ELB: ELB1:(3dbb4787-75c1-42f0-897a-1f683f7e89a0)* .*.*.* ELB2:(e60fdaa7-3398-4a19-8bd1-d53598c6917e)* .*.*.* 新建两个ELB。 newELB1:(caf6ec4a-2fa8-42ae-bdfb-388f8b13778a)* .*.*.* newELB2:(792c0a3d-190d-413d-a5b9-5c1ac3fe3705)* .*.*.* 将准备工作中备份的istio 配置文件拷贝一份到新集群节点上, 执行如下命令: #查看老ELB IP grep -i "老ELB IP" *.yaml #ELB IP 替换 sed -i 's/老ELB IP/新ELB IP/g' *.yaml #ELB ID 替换 sed -i 's/老ELB ID/新ELB ID/g' *.yaml #替换clusterID sed -i 's/老clusterID/新clusterID/g' *.yaml #替换CluseterName sed -i 's/老CluseterName/新CluseterName/g' *.yaml #替换完成后查看 grep -i "新ELB IP" *.yaml grep -i "新ELB ID" *.yaml grep -i "新clusterID" *.yaml grep -i "新CluseterName" *.yaml 替换完成后如下所示: 将准备工作中备份的配置文件在新网格中恢复,若未配置kubectl命令,可参考CCE配置kubectl 。 kubectl create -f all-svc.yaml //kubectl create -f all-secret.yaml kubectl create -f all-vs.yaml kubectl create -f all-dr.yaml kubectl create -f all-gw.yaml kubectl create -f all-se.yaml kubectl create -f all-ef.yaml kubectl create -f all-sidecar.yaml kubectl create -f all-we.yaml kubectl create -f all-wg.yaml kubectl create -f all-pa.yaml kubectl create -f all-ra.yaml kubectl create -f all-ap.yaml kubectl create -f user-all-svc.yaml kubectl create -f user-all-secret.yaml 若出现“Error from server (AlreadyExists): xxxxx already exists” 已存在的报错则忽略。 删除新版本无用配置。 若源版本是1.6企业版则执行如下命令: kubectl -nistio-system delete svc istiod-remote kubectl -nistio-system delete svc istiod-elb kubectl -nistio-system delete vs istiod 若源版本是1.8企业版则执行如下命令: kubectl -nistio-system delete envoyfilter metadata-exchange-1.6 kubectl -nistio-system delete envoyfilter metadata-exchange-1.7 kubectl -nistio-system delete envoyfilter metadata-exchange-1.8 kubectl -nistio-system delete envoyfilter stats-filter-1.6 kubectl -nistio-system delete envoyfilter stats-filter-1.7 kubectl -nistio-system delete envoyfilter stats-filter-1.8 kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.6 kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.7 kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.8 kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.6 kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.7 kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.8 kubectl -nistio-system delete svc istiod-remote kubectl -nistio-system delete svc istiod-elb kubectl -nistio-system delete vs istiod 验证业务功能若出现服务异常场景,单击处理,查看异常错误。 在CCE service页面修改
  • 新建集群和网格 登录CCE控制台选择在当前企业版集群所在的同VPC下创建集群。 在应用服务网格ASM控制台 ,创建基础版本网格,选择步骤1新建的集群。 在新建的网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 查看网格使用了几个ELB,新建同等数量和规格的ELB。
  • AOM 页面查询应用服务网格详细指标 服务网格开启应用指标并接入华为云AOM后,可以在AOM页面查询网格的详细指标,具体步骤如下: 登录AOM页面,进入“指标浏览”页面。 选择“指标源”,选择想要查询的网格上报指标的Prometheus实例。 在页面上查询上报至AOM的指标。 全量指标查询 通过输入具体指标名称,即可查阅istio网格相关指标。 同时支持通过增加条件过滤相关指标信息。 按普罗语句查询 通过输入promql语句查询网格指标。
  • 迁移集群 删除该集群上部署的网关。在待迁移网格详情页,网关管理页面查看待迁移集群上有几个网关路由。即“所属集群”字段是待迁移集群的全部网关。 将对应的集群移除出企业版网格。 在ASM控制台 ,创建基础版本网格,选择移除出企业版网格的集群。 在新建的网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 进行服务诊断,并处理异常。 恢复istio资源,选择如下任意一个方案执行。 方案一:重新手动创建网关,并添加路由。 方案二:将准备工作中备份的该集群资源上传到集群节点,执行如下命令恢复,其中xx为备份的文件名。 kubectl create -f xx.yaml (可选)执行解除业务跨集群访问方案二 重复执行上述步骤1-7,直至所有集群迁移完毕。
  • 前提 确保准备工作已完成。 梳理网格下各个集群的网关和跨集群svc。 集群 网关 跨集群访问的服务 A a-gw 集群A 、集群B B b-gw 集群B ... ... ... 关闭mtls以及访问授权,是用如下命名查看是否存在对应资源。 kubectl get PeerAuthentication -A kubectl get AuthorizationPolicy -A kubectl get RequestAuthentication -A 查看查询到的PeerAuthentication ,若spec.mtls.mode为STRICT,则需要将STRICT改为PERMISSIVE。 查看查询到的AuthorizationPolicy, 若使用了该功能,则需要在迁移过程中暂时删除访问授权。 查看查询到的RequestAuthentication, 若使用了该功能,则需要在迁移过程中暂时删除请求认证。 允许迁移期间业务访问中断。 解除业务上使用k8s域名进行跨集群访问。
  • 创建Ingress资源 (推荐)根据现有的Ingress-gateway配置,登录cce控制台,单击集群名称进入集群详情页面,在左侧菜单栏依次单击“服务-路由-创建路由”创建Ingress配置,并配置https证书。 验证流量是否正常,确保Ingress流量正常后方可进行下一步。 ingress和istio-gateway同时支持httpbin.example.com域名,通过更改host可以切换不同的流量。
  • 迁移 登录应用服务网格控制台,单击待迁移的企业版网格名称进入网格详情页面,在在网关管理页面删除网格内的所有网关资源。 在网格详情页,单击“网格配置”进入基本信息页签,单击集群后面的“移除”按钮 。 是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 选择从企业版网格移除出来的集群创建基础版网格。建议创建istio最新版本的网格。 在网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 单击创建出来的网格名称进入详情页,依次单击“服务网关-添加网关”手动创建网关,选择原ELB实例。 将准备工作中备份的配置文件在新网格中恢复,若未配置kubectl命令,可参考CCE配置kubectl 。 kubectl create -f all-vs.yaml kubectl create -f all-dr.yaml 若出现“Error from server (AlreadyExists): xxxxx already exists” 已存在的报错则忽略。
  • 异常回退 若在迁移过程中出现异常,可按照如下步骤回退。 登录应用服务网格控制台,在网格列表页面单击待删除网格右上角的卸载按钮卸载网格,是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 在网格详情页,依次单击“网格配置-基本信息-添加集群”将卸载后集群重新添加回1.0企业版里面。 添加集群时,集群 选择“扁平网格”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 使用控制面kubectl 执行如下命令。 kubectl create -f all-svc.yaml kubectl create -f all-vs.yaml kubectl create -f all-dr.yaml kubectl create -f all-gw.yaml 功能验证。 网关访问正常 路由显示正常 修改DNS解析地址为网关ELB IP。 删除CCE ingress。
  • 配置方法 请在CCE控制台“服务发现”页面,istio-system命名空间下,更新服务所关联的网关服务,将服务亲和改成“节点级别”。前提是已开启ELB的获取客户端IP功能(当前为默认开启)。 externalTrafficPolicy:表示此Service是否希望将外部流量路由到节点本地或集群范围的端点。有两个可用选项:Cluster(默认)和Local。Cluster隐藏了客户端IP,可能导致第二跳到另一个节点,但具有良好的整体负载分布。Local保留客户端源IP并避免LoadBalancer和NodePort类型服务的第二跳,但存在潜在的不均衡流量传播风险。
  • 验证方式 结合httpbin镜像在“x-forward-for”字段中可以看到源IP,httpbin是一个HTTP Request & Response Service,可以向他发送请求,他将会按照指定的规则将请求返回。httpbin镜像可在SWR中搜索。使用httpbin镜像进行验证时请确保集群已开通网格。 登录ASM应用服务网格控制台,选择一个可用的测试网格并单击进入。 选择左侧“网格配置”查看其关联的集群。 单击集群名称进入集群详情页,单击“工作负载”进入“工作负载”页签,单击右上角“创建工作负载”按钮。 配置工作负载的信息。 基本信息 负载类型:选择无状态工作负载Deployment。 负载名称:命名工作负载为httpbin。 命名空间:选择工作负载的命名空间,默认为default。 其余参数使用默认值。 容器配置 基本信息: 容器名称:为容器自定义一个名称 镜像名称:单击后方“选择镜像”,在右上角搜索框搜索“httpbin”镜像并选择,单击“确认”。 镜像版本:选择一个镜像版本 其余参数使用默认值。 服务配置 服务(Service)是用来解决Pod访问问题的。每个Service有一个固定IP地址,Service将访问流量转发给Pod,而且Service可以给这些Pod做负载均衡。 单击服务配置参数下面的“+”进入创建服务页面。 Service名称:Service名称为工作负载名称。 访问类型:选择集群内访问。 端口设置: 协议:TCP 容器端口:80(以实际访问端口为准) 服务端口:80(以实际访问端口为准) 单击右下角“确定”完成服务创建。 单击右下角“创建工作负载”完成工作负载创建。 在集群详情页选择左侧“服务”页签,可在服务列表中查看到所创建的httpbin服务。 返回ASM应用服务网格,选择左侧“服务管理”页签,在服务管理中可查看到httpbin的配置诊断显示为异常。 单击此服务配置诊断中的“处理”按钮,按照弹出“配置诊断”页面对应的修复指导进行修复。 以“Service的端口名称是否符合Istio规范”为例,选择协议为“http”,单击“一键修复”。 选择左侧“网关管理”页签,单击右上角“添加网关”,在弹出“添加网关”页面输入配置信息。 配置信息 网关名称:httpbin。 集群选择:网格所关联使用的集群。 负载均衡:选择公网、选择一个elb公网。 对外协议:选择HTTP。 对外端口:自定义端口。 外部访问地址:负载均衡中所选elb公网地址。 单击“路由配置”下方的“+”在弹出“添加路由”页面添加路由。 URL:选择完全匹配并输入映射。 命名空间:服务所在命名空间。 目标服务:默认设置。 配置完成后单击“确定”。 单击“确定”完成网关添加。 选择左侧“服务管理”页签,可以在“访问地址”查看到所创建路由的外部访问地址。 在映射的外部访问地址后加上“?show_env=1”,访问添加字段后的外部访问地址,例如:http://xxx.xxx.xxx:80/get?show_env=1。可以在“x-forward-for”字段中查看网关获取的IP为容器段IP。 ... ... ... x-forward-for: xxxx 返回集群详情页,选择左侧导航栏“服务发现”,更改服务所关联的网关服务的配置。方法如下: 下拉上方“命名空间”列表选择“istio-system”。 展开服务后方“更多”选项,单击“更新”,在弹出“更新服务”页面将“服务亲和”更改为“节点级别”,勾选“我已阅读《负载均衡使用须知》”,单击“确定”。 返回13中访问的外部地址并刷新,若设置之后“x-forward-for”字段中显示的网关获取IP的结果为本机源IP,则完成验证。 ... ... ... x-forward-for: xxxx
  • 前提 确保准备工作已完成。 梳理网格下各个集群的网关和跨集群svc。 集群 网关 跨集群访问的服务 A a-gw 集群A 、集群B B b-gw 集群B ... ... ... 关闭mtls以及访问授权,是用如下命名查看是否存在对应资源。 kubectl get PeerAuthentication -A kubectl get AuthorizationPolicy -A kubectl get RequestAuthentication -A 查看查询到的PeerAuthentication ,若spec.mtls.mode为STRICT,则需要将STRICT改为PERMISSIVE。 查看查询到的AuthorizationPolicy, 若使用了该功能,则需要在迁移过程中暂时删除访问授权。 查看查询到的RequestAuthentication, 若使用了该功能,则需要在迁移过程中暂时删除请求认证。 解除业务上使用k8s域名进行跨集群访问。