云服务器内容精选
-
异常回退 若在迁移过程中出现异常,可按照如下步骤回退。 登录应用服务网格控制台,在网格列表页面单击待删除网格右上角的卸载按钮卸载网格,是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 在网格详情页,依次单击“网格配置-基本信息-添加集群”将卸载后集群重新添加回1.0企业版里面。 添加集群时,集群 选择“扁平网格”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 使用控制面kubectl 执行如下命令。 kubectl create -f all-svc.yamlkubectl create -f all-vs.yamlkubectl create -f all-dr.yamlkubectl create -f all-gw.yaml 功能验证。 网关访问正常 路由显示正常 修改DNS解析地址为网关ELB IP。 删除CCE ingress。
-
迁移 登录应用服务网格控制台,单击待迁移的企业版网格名称进入网格详情页面,在在网关管理页面删除网格内的所有网关资源。 在网格详情页,单击“网格配置”进入基本信息页签,单击集群后面的“移除”按钮 。 是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 选择从企业版网格移除出来的集群创建基础版网格。建议创建istio最新版本的网格。 在网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 单击创建出来的网格名称进入详情页,依次单击“服务网关-添加网关”手动创建网关,选择原ELB实例。 将准备工作中备份的配置文件在新网格中恢复,若未配置kubectl命令,可参考CCE配置kubectl 。 kubectl create -f all-vs.yamlkubectl create -f all-dr.yaml 若出现“Error from server (AlreadyExists): xxxxx already exists” 已存在的报错则忽略。
-
部署虚拟机服务灰度版本 此处以httptest-canary测试程序作为示例。httptest-canary为go http应用,监听在8080端口,访问正常返回“hello, canary http server”消息。 上传httptest-canary应用到虚拟机2。 修改权限。 chmod +x httptest-canary 启动httptest-canary应用。 ./httptest-canary
-
启动前检查 以root用户登录虚拟机。 检查证书文件信息。 ls -l /opt/asm_proxy/certs/ 以下为预期结果: -rw------- 1 root root 757 Jan 24 10:41 istio-token-rw------- 1 root root 1789 Jan 24 10:41 root-cert.pem 检查启动参数文件信息。 cat /opt/asm_proxy/asm_proxy.env 以下为预期结果(具体值会不同,确保不为空): ISTIO_PILOT_ADDR=10.252.2.36ISTIO_META_CLUSTER_ID=cluster-vmISTIO_META_MESH_ID=e256c79c-8b13-11ec-94e9-0255ac10069aTRACING_ZIPKIN_ADDRESS=otel-collector.monitoring.svc.cluster.local:9411NS=vmnsSERVICE_ACCOUNT=vmsaISTIO_SERVICE_CIDR=10.233.0.0/16POD_NAME=vmapp1
-
迁移方案选择 表1 迁移方案 匹配条件 迁移方案 仅存在一个集群 业务允许小时级别中断 原集群卸载重装方案 网格使用了流量治理规则,envoyfilter等配置 对外ip端口可替换 客户业务可重新部署 新建集群和网格方案 仅使用了网格网关能力 业务允许闪断 使用ingress中转方案 业务多集群 业务允许小时级别中断 1.0企业版多集群场景(使用原集群创建网格) 业务多集群 业务允许闪断 1.0企业版多集群场景(新建集群和网格方案)
-
容器服务加入网格 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“sidecar管理”页签,为命名空间“vmns”注入sidecar。 在左侧导航栏选择“服务管理”,选择命名空间“vmns”。 按下述指导修复异常状态的tomcat服务。 单击“处理”进入自动修复项页面,单击“一键修复”,自动处理异常状态的检查项,直到配置诊断为正常状态。 图1 服务状态
-
节点亲和调度策略 进入CCE Console页面,单击“集群名称-节点管理-节点”,单击更多列的|“编辑YAML”。 通过YAML配置如下参数: metadata: labels: istio: ingressgateway 也可在步骤1节点页面单击操作列的“标签管理”设置。 进入CCE Console页面,单击“集群名称--工作负载”,单击待升级工作负载更多列的“编辑YAML”。 通过YAML配置如下参数: spec: template: spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: istio operator: In values: - ingressgateway 也可以通过单击步骤3页面待升级工作负载的操作列的“升级”按钮来配置,对应参数如下: 建议值说明: 节点亲和硬约束:Pod调度到包含istio:ingressgateway标签的节点上; 节点亲和参数说明: 参数名 参数描述 必须满足 即硬约束,设置必须要满足的条件,对应requiredDuringSchedulingIgnoredDuringExecution。 添加多条“必须满足”规则时,只需要满足一条规则就会进行调度。 尽量满足 即软约束,设置尽量满足的条件,对应preferredDuringSchedulingIgnoredDuringExecution。 添加多条“尽量满足”规则时,满足其中一条或者都不满足也会进行调度。 节点亲和性调度策略参数说明: 参数名 参数描述 标签名 设置节点亲和性时,填写需要匹配的节点标签。 该标签可以使用系统默认的标签,也可以使用自定义标签。 操作符 可以设置六种匹配关系(In、NotIn、Exists、DoesNotExist、Gt、Lt)。 In:亲和/反亲和对象的标签在标签值列表(values字段)中。 NotIn:亲和/反亲和对象的标签不在标签值列表(values字段)中。 Exists:亲和/反亲和对象存在指定标签名。 DoesNotExist:亲和/反亲和对象不存在指定标签名。 Gt:仅在节点亲和性中设置,调度节点的标签值大于列表值 (字符串比较)。 Lt:仅在节点亲和性中设置,调度节点的标签值小于列表值 (字符串比较)。 标签值 设置节点亲和性时,填写节点标签对应的标签值。 配置节点亲和参数会触发工作负载滚动升级,即Pod会立即发生重启。 父主题: 调度策略
-
滚动升级策略 进入CCE Console页面,单击“集群名称--工作负载”,单击待升级工作负载更多列的“编辑YAML”。 通过YAML配置如下参数: spec: strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 0 maxSurge: 10% 也可以通过单击步骤1页面待升级工作负载的操作列的“升级”按钮来配置,对应参数如下: 参数说明: 参数 说明 最大无效实例数(maxUnavailable) 与spec.replicas相比,可以有多少个Pod失效,也就是删除的个数或比例,建议值是0个。 比如spec.replicas为3,那升级过程中就至少有3个可用的Pod存在。 最大浪涌(maxSurge) 与spec.replicas相比,可以有多少个Pod存在,建议值是10%。 比如spec.replicas为 3,那升级过程中就不能超过4个Pod存在,即按10%(1个)的步长升级,实际升级过程中会换算成数字,且换算会向上取整。这个值也可以直接设置成个数。 仅配置升级策略参数maxUnavailable及maxSurge,不会触发工作负载滚动升级,即Pod不会发生重启。新配置值在工作负载的下一次滚动升级中生效。 在CCE Console中执行工作负载的重新部署,实际上就是完成一次工作负载的滚动升级流程,只是工作负载的版本没有发生变化。 父主题: 网关工作负载
-
负载亲和调度策略 进入CCE Console页面,单击“集群名称--工作负载”,单击待升级工作负载更多列的“编辑YAML”。 通过YAML配置如下参数: spec: template:spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - istio-ingressgateway namespaces: - istio-system topologyKey: kubernetes.io/hostname preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - istio-ingressgateway namespaces: - istio-system topologyKey: topology.kubernetes.io/zone 也可以通过单击步骤1页面待升级工作负载的操作列的“升级”按钮来配置,对应参数如下: 建议值说明: 负载反亲和硬约束:Pod调度到不同的节点上。 负载反亲和软约束:Pod优先调度到不同可用区的节点上。 负载亲和参数说明: 策略 规则类型 说明 工作负载亲和性 必须满足 即硬约束,设置必须满足的条件,对应YAML定义中的requiredDuringSchedulingIgnoredDuringExecution字段。 通过标签筛选需要亲和的Pod,如果满足筛选条件的Pod已经运行在拓扑域中的某个节点上,调度器会将本次创建的Pod强制调度到该拓扑域。 说明: 添加多条亲和性规则时,即设置多个标签筛选需要亲和的Pod,则本次创建的Pod必须要同时亲和所有满足标签筛选的Pod,即所有满足标签筛选的Pod要处于同一拓扑域中才可以调度。 尽量满足 即软约束,设置尽量满足的条件,对应YAML定义中的preferredDuringSchedulingIgnoredDuringExecution字段。 通过标签筛选需要亲和的Pod,如果满足筛选条件的Pod已经运行在拓扑域中的某个节点上,调度器会将本次创建的Pod优先调度到该拓扑域。 说明: 添加多条亲和性规则时,即设置多个标签筛选需要亲和的Pod,则本次创建的Pod会尽量同时亲和多个满足标签筛选的Pod。但即使所有Pod都不满足标签筛选条件,也会选择一个拓扑域进行调度。 工作负载反亲和性 必须满足 即硬约束,设置必须满足的条件,对应YAML定义中的requiredDuringSchedulingIgnoredDuringExecution字段。 通过标签筛选需要反亲和的一个或多个Pod,如果满足筛选条件的Pod已经运行在拓扑域中的某个节点上,调度器不会将本次创建的Pod调度到该拓扑域。 说明: 添加多条反亲和性规则时,即设置多个标签筛选需要反亲和的Pod,则本次创建的Pod必须要同时反亲和所有满足标签筛选的Pod,即所有满足标签筛选的Pod所处的拓扑域都不会被调度。 尽量满足 即软约束,设置尽量满足的条件,对应YAML定义中的preferredDuringSchedulingIgnoredDuringExecution字段。 通过标签筛选需要反亲和的一个或多个Pod,如果满足筛选条件的Pod已经运行在拓扑域中的某个节点上,调度器会将本次创建的Pod优先调度到其他拓扑域。 说明: 添加多条反亲和性规则时,即设置多个标签筛选需要反亲和的Pod,则本次创建的Pod会尽量同时反亲和多个满足标签筛选的Pod。但即使每个拓扑域都存在需要反亲和的Pod,也会选择一个拓扑域进行调度。 负载亲和/反亲和调度策略参数说明: 参数名 参数描述 权重 仅支持在“尽量满足”策略中添加。权重的取值范围为1-100,调度器在进行调度时会将该权重加到其他优先级函数的评分上,最终将Pod调度到总分最大的节点上。 命名空间 指定调度策略生效的命名空间。 拓扑域 拓扑域(topologyKey)通过节点的标签先圈定调度的节点范围,例如标签指定为kubernetes.io/hostname,则根据标签值不同(标签值为节点名称)区分范围,不同名称的节点为不同的拓扑域,此时一个拓扑域中仅包含一个节点;如果指定标签为kubernetes.io/os,则根据标签值不同(标签值为节点的操作系统类型)来区分,不同操作系统的节点为不同的拓扑域,此时一个拓扑域中可能包含多个节点。 根据拓扑域确定节点范围后,然后再选择策略定义的内容(通过标签名、操作符、标签值确定)进行调度,调度时最小单位为拓扑域。例如,某个拓扑域中的一个节点满足负载亲和性规则,则该拓扑域中的节点均可以被调度。 标签名 设置工作负载亲和/反亲和性时,填写需要匹配的工作负载标签。 该标签可以使用系统默认的标签,也可以使用自定义标签。 操作符 可以设置四种匹配关系(In、NotIn、Exists、DoesNotExist)。 In:亲和/反亲和对象的标签在标签值列表(values字段)中。 NotIn:亲和/反亲和对象的标签不在标签值列表(values字段)中。 Exists:亲和/反亲和对象存在指定标签名。 DoesNotExist:亲和/反亲和对象不存在指定标签名。 标签值 设置工作负载亲和/反亲和性时,填写工作负载标签对应的标签值。 配置负载亲和参数会触发工作负载滚动升级,即Pod会立即发生重启。 父主题: 调度策略
-
新建集群和网格 登录CCE控制台选择在当前企业版集群所在的同VPC下创建集群。 在应用服务网格ASM控制台 ,创建基础版本网格,选择步骤1新建的集群。 在新建的网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 查看网格使用了几个ELB,新建同等数量和规格的ELB。
-
删除已添加的iptables规则 以root用户登录虚拟机。 执行以下命令删除添加的istio iptables规则。 iptables -t nat -D PREROUTING -p tcp -j ISTIO_INBOUND iptables -t nat -D OUTPUT -p tcp -j ISTIO_OUTPUT iptables -t nat -F ISTIO_OUTPUT iptables -t nat -X ISTIO_OUTPUT iptables -t nat -F ISTIO_INBOUND iptables -t nat -X ISTIO_INBOUND iptables -t nat -F ISTIO_REDIRECT iptables -t nat -X ISTIO_REDIRECT iptables -t nat -F ISTIO_IN_REDIRECT iptables -t nat -X ISTIO_IN_REDIRECT iptables-save 执行以下命令查看虚拟机当前的iptables规则。 iptables -t nat -L -v 回显如下,可以看到istio相关规则已经清除。 Chain PREROUTING (policy ACCEPT 2 packets, 104 bytes) pkts bytes target prot opt in out source destination 47 2498 DOCKER all -- any any anywhere anywhere ADDRTYPE match dst-type LOCALChain INPUT (policy ACCEPT 2 packets, 104 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 5 packets, 350 bytes) pkts bytes target prot opt in out source destination 0 0 DOCKER all -- any any anywhere !localhost/8 ADDRTYPE match dst-type LOCALChain POSTROUTING (policy ACCEPT 5 packets, 350 bytes) pkts bytes target prot opt in out source destination 0 0 MASQUERADE all -- any !docker0 172.17.0.0/16 anywhere Chain DOCKER (2 references) pkts bytes target prot opt in out source destination 0 0 RETURN all -- docker0 any anywhere anywhere
-
配置同步 方案一 手动同步网格配置(推荐) 手动在新建的网格上添加网关路由,并同步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 IPgrep -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#替换clusterIDsed -i 's/老clusterID/新clusterID/g' *.yaml#替换CluseterNamesed -i 's/老CluseterName/新CluseterName/g' *.yaml#替换完成后查看 grep -i "新ELB IP" *.yamlgrep -i "新ELB ID" *.yamlgrep -i "新clusterID" *.yamlgrep -i "新CluseterName" *.yaml 替换完成后如下所示: 将准备工作中备份的配置文件在新网格中恢复,若未配置kubectl命令,可参考CCE配置kubectl 。 kubectl create -f all-svc.yaml//kubectl create -f all-secret.yamlkubectl create -f all-vs.yamlkubectl create -f all-dr.yamlkubectl create -f all-gw.yamlkubectl create -f all-se.yamlkubectl create -f all-ef.yamlkubectl create -f all-sidecar.yamlkubectl create -f all-we.yamlkubectl create -f all-wg.yamlkubectl create -f all-pa.yamlkubectl create -f all-ra.yamlkubectl create -f all-ap.yamlkubectl create -f user-all-svc.yamlkubectl create -f user-all-secret.yaml 若出现“Error from server (AlreadyExists): xxxxx already exists” 已存在的报错则忽略。 删除新版本无用配置。 若源版本是1.6企业版则执行如下命令: kubectl -nistio-system delete svc istiod-remotekubectl -nistio-system delete svc istiod-elbkubectl -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.6kubectl -nistio-system delete envoyfilter stats-filter-1.7kubectl -nistio-system delete envoyfilter stats-filter-1.8kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.6kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.7kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.8kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.6kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.7kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.8kubectl -nistio-system delete svc istiod-remotekubectl -nistio-system delete svc istiod-elbkubectl -nistio-system delete vs istiod 验证业务功能若出现服务异常场景,单击处理,查看异常错误。 在CCE service页面修改
-
卸载容器 在虚拟机上执行以下命令,获取asm-proxy容器ID。 docker ps | grep asm-proxy 回显第一列为asm-proxy容器的ID。 46afed024f46 asm-proxy:1.8.4 "/usr/bin/bash /usr/..." 2 days ago Up 2 days asm-proxy 执行以下命令,停止asm-proxy容器。 docker rm -f xxx 其中,xxx为1获取的asm-proxy容器ID。
-
添加readiness探针 添加readiness探针,可以保证您的新实例pod在真正准备就绪时,才开始接管业务流量。这就避免了在新的实例pod未启动时,接管业务流量造成的访问不通问题。 相关配置如下: kubectl get deploy nginx -n namespace_name -oyaml | grep readinessProbe -a10 配置项说明: readiness探针配置项:deployment.spec.template.spec.containers[i].readinessProbe 其中,包括探针检查初始时间,检查间隔,超时时间等配置。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格