华为云用户手册

  • 设置服务就绪时间 服务就绪时间,minReadySeconds:用于标识pod的ready时间至少保持多长时间,才会认为服务是运行中。 相关配置如下: kubectl get deploy nginx -n namespace_name -oyaml | grep minReadySeconds -a1 配置项说明: 服务就绪时间:deployment.spec.minReadySeconds,可根据您业务的实际情况确定。
  • 配置优雅关闭时间 terminationGracePeriodSeconds,优雅关闭时间。在滚动升级过程中,首先会移除旧的服务实例pod的endpoint,并将实例pod的状态置为Terminating,这时K8S会发送SIGTERM信号给pod实例,并等待优雅关闭时间后,将pod强制终止。您可以利用这段时间,处理未完成的请求: kubectl get deploy nginx -n namespace_name -oyaml | grep terminationGracePeriodSeconds -a1 配置项说明: 优雅关闭时间:deployment.spec.template.spec.terminationGracePeriodSeconds,默认值为30s,可根据业务诉求适当调整。
  • 配置同步 将准备工作中备份的配置文件在新网格中恢复,若未配置kubectl命令,可参考CCE配置kubectl 。 kubectl create -f all-svc.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
  • 创建新网格 根据如下支持列表选择创建基础网格。 表1 网格版本支持的集群版本 网格版本 CCE集群版本 1.8 1.15-1.21 1.13 1.21-1.23 1.15 1.21-1.27 1.18 1.25-1.29 选择从企业版网格移除出来的集群创建基础版网格。建议创建istio最新版本的网格。 在网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。
  • 配置同步 方案一 手动同步网格配置(推荐) 手动在新建的网格上添加网关路由,并同步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页面修改
  • 新建集群和网格 登录CCE控制台选择在当前企业版集群所在的同VPC下创建集群。 在应用服务网格ASM控制台 ,创建基础版本网格,选择步骤1新建的集群。 在新建的网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 查看网格使用了几个ELB,新建同等数量和规格的ELB。
  • 异常回退 登录应用服务网格控制台,在网格列表页面单击待删除网格右上角的卸载按钮卸载网格,是否重启已有服务选择“是”,勾选“取消注入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.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.yaml 使用数据面集群kubectl执行如下命令。 kubectl create -f user-all-svc.yamlkubectl create -f user-all-secret.yaml 功能验证。 网关访问正常 路由显示正常
  • 获取镜像包 以root用户登录虚拟机。 获取asm-proxy-1.8.4镜像包。 asm-proxy-1.8.4镜像包存放在SWR镜像仓库中,使用如下命令拉取镜像(x86和arm架构的命令相同)。 docker pull SWR镜像仓库地址/istio/asm-proxy:1.8.4 SWR镜像仓库地址的获取方式如下: 在 容器镜像服务 控制台“总览”页面单击右上角的“登录指令”,弹出“登录指令”对话框,指令末尾的 域名 即为SWR镜像仓库地址,形式为swr.***.com。
  • 启动前检查 以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
  • 服务亲和 设置成节点亲和在某些场景下可能导致无法访问ELB,具体情况请参考 集群内部无法使用ELB地址访问负载处理。 进入CCE Console页面,单击“集群名称--服务--服务”,单击要操作服务更多列的“编辑YAML”。 通过YAML配置如下参数: spec: type: LoadBalancer externalTrafficPolicy: Local allocateLoadBalancerNodePorts: true 也可在步骤1服务页面单击更多操作列的“更新”在更新服务页面进行设置。 参数说明: 参数 说明 服务亲和(externalTrafficPolicy) 有如下两个取值: 集群级别(cluster):请求会在集群内转发,从任意节点IP+服务端口都能访问到后端工作负载。服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别(local):请求只会转发给本节点上的Pod,如果节点没有Pod的话请求会挂起。 当使用 CCE Turbo 集群 + 独享型ELB实例时,支持ELB直通Pod,使部署在容器中的业务时延降低、性能无损耗;此时取值必须为集群级别(cluster)。 其他场景从ELB过来的流量会先访问到节点,然后通过Service转发到Pod,建议值为节点级别(local)。流量最终转发给本节点上的Pod,而不会负载均衡到其他节点上的Pod,避免出现因跨节点网络故障而导致请求异常。 父主题: 网关Service
  • 污点和容忍策略 进入CCE Console页面,单击“集群名称-节点管理-节点”,单击更多列的|“编辑YAML”。 通过YAML配置如下参数: spec: taints: - key: istio value: ingressgateway effect: NoExecute 也可通过步骤1节点页面更多列的“污点管理”按钮配置。 进入CCE Console页面,单击“集群名称--工作负载”,单击待升级工作负载更多列的“编辑YAML”。 通过YAML配置如下参数: spec: template:spec: tolerations: - key: istio operator: Equal value: ingressgateway effect: NoExecute 也可以通过单击步骤3页面待升级工作负载的操作列的“升级”按钮来配置,对应参数如下: 容忍策略设置参数说明: 参数名 参数描述 污点键 节点的污点键。 操作符 Equal:设置此操作符表示准确匹配指定污点键(必填)和污点值的节点。如果不填写污点值,则表示可以与所有污点键相同的污点匹配。 Exists:设置此操作符表示匹配存在指定污点键的节点,此时容忍度不能指定污点值。若不填写污点键则可以容忍全部污点。 污点值 操作符为Equal时需要填写污点值。 污点策略 全部:表示匹配所有污点效果。 NoSchedule:表示匹配污点效果为NoSchedule的污点。 PreferNoSchedule:表示匹配污点效果为PreferNoSchedule的污点。 NoExecute:表示匹配污点效果为NoExecute的污点。 容忍时间窗 即tolerationSeconds参数,当污点策略为NoExecute时支持配置。 在容忍时间窗内,Pod还会在拥有污点的节点上运行,超出时间后会被驱逐。 配置该参数会触发工作负载滚动升级,即Pod会立即发生重启。 父主题: 调度策略
  • 卸载容器 在虚拟机上执行以下命令,获取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。
  • 负载亲和调度策略 进入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会立即发生重启。 父主题: 调度策略
  • 前提 确保准备工作已完成。 梳理网格下各个集群的网关和跨集群svc。 集群 网关 跨集群访问的服务 A a-gw 集群A 、集群B B b-gw 集群B ... ... ... 关闭mtls以及访问授权,是用如下命名查看是否存在对应资源。 kubectl get PeerAuthentication -Akubectl get AuthorizationPolicy -Akubectl get RequestAuthentication -A 查看查询到的PeerAuthentication ,若spec.mtls.mode为STRICT,则需要将STRICT改为PERMISSIVE。 查看查询到的AuthorizationPolicy, 若使用了该功能,则需要在迁移过程中暂时删除访问授权。 查看查询到的RequestAuthentication, 若使用了该功能,则需要在迁移过程中暂时删除请求认证。 允许迁移期间业务访问中断。 解除业务上使用k8s域名进行跨集群访问。
  • 迁移集群 删除该集群上部署的网关。在待迁移网格详情页,网关管理页面查看待迁移集群上有几个网关路由。即“所属集群”字段是待迁移集群的全部网关。 将对应的集群移除出企业版网格。 在ASM控制台 ,创建基础版本网格,选择移除出企业版网格的集群。 在新建的网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。 进行服务诊断,并处理异常。 恢复istio资源,选择如下任意一个方案执行。 方案一:重新手动创建网关,并添加路由。 方案二:将准备工作中备份的该集群资源上传到集群节点,执行如下命令恢复,其中xx为备份的文件名。 kubectl create -f xx.yaml (可选)执行解除业务跨集群访问方案二 重复执行上述步骤1-7,直至所有集群迁移完毕。
  • 删除已添加的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
  • 滚动升级策略 进入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配置如下参数: metadata: annotations: kubernetes.io/elb.health-check-flag: 'on' kubernetes.io/elb.health-check-option: '{"protocol":"TCP","delay":"5","timeout":"10","max_retries":"3"}' 参数说明: 参数 说明 kubernetes.io/elb.health-check-flag 是否开启ELB健康检查功能,建议值'on'。 需同时填写kubernetes.io/elb.health-check-option字段。 kubernetes.io/elb.health-check-option protocol:健康检查的协议。 delay:健康检查间隔(秒)。 timeout:健康检查的超时时间(秒)。 max_retries:健康检查的最大重试次数。 也可在步骤1服务页面单击操作列的“更新”在更新服务页面进行设置。 父主题: 网关Service
  • 交互式提示 KooCLI支持功能强大的多平台支持的交互式提示,方便命令构建,在命令中添加“--interactive”参数即可进入交互式提示。交互式中根据用户当前输入的内容,提示云服务名称,API的operation,参数及其描述信息,也提供部分参数值的补全功能。 交互式的使用方式如下: 交互模式中使用“Tab”或向上箭头、向下箭头键实现待补全内容的上下选择。 选中待补全内容后,使用空格键将已选内容追加到当前命令中。 进入交互模式后,使用“Ctrl+C”可切换至新命令行,使用“Ctrl+D”可退出交互模式。 交互式可提示和补全如下内容: 云服务 初次进入交互模式后,会自动提示云服务及系统命令列表。 图1 交互式中提示云服务和系统命令列表 所提示的云服务列表中,左列展示云服务短名/系统命令,右列展示该云服务的服务名称/该系统命令的描述信息。 API 已输入的云服务/系统命令经校验无误后,会继续提示该服务的API列表/该系统命令的子命令(或参数)。 所提示的系统命令列表中,左列展示该系统命令的子命令(或参数),右列展示该子命令(或参数)的描述信息。 图2 交互式中提示云服务的API列表 所提示的云服务API列表中,左列展示API的operation名称,右列展示该API的描述信息。 图3 交互式中提示系统命令的子命令 图4 交互式中提示系统命令的参数 若已输入的云服务/系统命令非法,则不再提示任何信息。 参数 已输入服务名与API的operation,或已输入系统命令及其子命令经校验无误后,会继续提示该API/系统命令子命令的参数列表。 图5 交互式中提示云服务API的参数列表 图6 交互式中提示系统命令子命令的参数列表 所提示的参数列表中,左列展示参数名称;右列展示该参数的描述信息。 若已输入API的operation/系统命令子命令非法,或已输入的参数名非法,则不再提示任何信息。 参数值 在交互式中,在部分参数名后输入等号,会提示该参数的可取值或默认值列表。例如:若调用API的命令中当前输入的参数是“--cli-region=”时,会提示该API的可选区域列表。 图7 交互式中提示已输入云服务API的可选区域列表 交互模式下的快捷键 Ctrl + W:将光标前的单词删除 Ctrl + K:将光标之后的内容删除 Ctrl + U:将光标之前的内容删除 Ctrl + L:清除屏幕 若用户尚未添加配置项,或默认配置项中的区域不被命令中的API所支持,用户需先根据提示,从目标API支持的cli-region列表中选择合适的区域值。确定区域后,KooCLI会继续提示该API的参数列表。 交互式提示参数时,除自定义map类型的参数(即:参数名中包含“{*}”的参数)外,已输入的参数不会重复提示;若提示的参数名中有“[N]”,其含义为索引位,请使用数字代替该字符;若提示的参数名中有“{*}”,其含义为自定义参数名称,请使用任意不含“.”的字符串代替该字符。 切换至新命令行后可使用向上箭头和向下箭头浏览已执行命令的历史记录。 父主题: 常用命令
  • 无配置方式使用概述 KooCLI既可以使用配置项调用云服务API,也提供了无配置的操作方式,无配置方式使用是指在使用KooCLI时不通过已有配置项传入当前用户的认证信息,而是直接在命令中传入当前用户认证相关的参数。此方式可使用户免于添加配置项,方便快捷地使用KooCLI。用户可以通过如下认证方式直接调用云服务API: 无配置方式AKSK 无配置方式ecsAgency 无配置方式使用KooCLI时,需留意这些注意事项,也需了解各认证方式的优先级。 父主题: 无配置方式使用KooCLI
  • 配置http_proxy环境变量 请根据您系统选择并执行如下命令,配置http_proxy环境变量。 Linux或MacOS系统 临时环境变量 配置http_proxy的命令为: export http_proxy="http://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,可以省略这两部分,如下: export http_proxy="http://proxyServer:port" 永久环境变量 在~/.bashrc文件中添加如下内容,可将http_proxy永久配置在当前用户的环境变量中: export http_proxy="http://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,可以省略这两部分,如下: export http_proxy="http://proxyServer:port" 请注意:永久环境变量配置完毕后,一般需要注销并重新登录,配置才可生效。 Windows系统 使用cmd: 临时环境变量 配置http_proxy的命令为: set http_proxy=http://username:password@proxyServer:port 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: set http_proxy=http://proxyServer:port 永久环境变量 将http_proxy永久配置在当前用户的环境变量中的命令为: setx "http_proxy" "http://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: setx "http_proxy" "http://proxyServer:port" 请注意:永久环境变量配置完毕后,将在新打开的终端中生效,当前终端不会立即生效。 使用PowerShell: 临时环境变量 配置http_proxy的命令为: $env:http_proxy="http://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: $env:http_proxy="http://proxyServer:port" 永久环境变量 将http_proxy永久配置在当前用户的环境变量中的命令为: [environment]::SetEnvironmentvariable("http_proxy", "http://username:password@proxyServer:port", "User") 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: [environment]::SetEnvironmentvariable("http_proxy", "http://proxyServer:port", "User") 请注意:永久环境变量配置完毕后,将在新打开的终端中生效,当前终端不会立即生效。
  • 配置https_proxy环境变量 请根据您系统选择并执行如下命令,配置https_proxy环境变量。 Linux或MacOS系统 临时环境变量 配置https_proxy的命令为: export https_proxy="https://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,可以省略这两部分,如下: export https_proxy="https://proxyServer:port" 永久环境变量 在~/.bashrc文件中添加如下内容,可将https_proxy永久配置在当前用户的环境变量中: export https_proxy="https://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,可以省略这两部分,如下: export https_proxy="https://proxyServer:port" 请注意:永久环境变量配置完毕后,一般需要注销并重新登录,配置才可生效。 Windows系统 使用cmd: 临时环境变量 配置https_proxy的命令为: set https_proxy=https://username:password@proxyServer:port 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: set https_proxy=https://proxyServer:port 永久环境变量 将https_proxy永久配置在当前用户的环境变量中的命令为: setx "https_proxy" "https://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: setx "https_proxy" "https://proxyServer:port" 请注意:永久环境变量配置完毕后,将在新打开的终端中生效,当前终端不会立即生效。 使用PowerShell 临时环境变量 配置https_proxy的命令为: $env:https_proxy="https://username:password@proxyServer:port" 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: $env:https_proxy="https://proxyServer:port" 永久环境变量 将https_proxy永久配置在当前用户的环境变量中的命令为: [environment]::SetEnvironmentvariable("https_proxy", "https://username:password@proxyServer:port", "User") 其中,proxyServer为代理服务器的域名(如果能解析)或者IP。port为端口号。如果你的代理服务器需要用户名和密码才能访问,需要填写上面的username和password部分,否则的话,省略这两部分,如下: [environment]::SetEnvironmentvariable("https_proxy", "https://proxyServer:port", "User") 请注意:永久环境变量配置完毕后,将在新打开的终端中生效,当前终端不会立即生效。
  • 配置命令简介 KooCLI配置命令包含初始化配置、配置项的增删改查等,具体命令如下表: 系统命令 功能简介 hcloud configure init 初始化配置 hcloud configure set 新增/修改配置项 hcloud configure sso SSO登录 hcloud configure list 查询配置项列表 hcloud configure show 查询指定配置项 hcloud configure delete 删除指定配置项 hcloud configure test 检查配置文件格式 hcloud configure clear 删除所有配置项 父主题: 配置信息管理
  • 删除指定配置项中的custom参数 使用“--cli-profile”指定要删除的配置项的名称。删除指定配置项中的custom参数的命令可分为: 删除指定配置项中的指定custom参数: hcloud configure delete --cli-profile=${profileName} [--cli-custom=true] --cli-custom-key=${customName} hcloud configure delete --cli-profile=test --cli-custom-key=projectId删除配置项test中的custom参数projectId成功 删除指定配置项中的所有custom参数: hcloud configure delete --cli-profile=${profileName} --cli-custom=true hcloud configure delete --cli-profile=test --cli-custom=true删除配置项test中的所有custom参数成功 父主题: 删除指定配置项
  • 功能概述 您可以使用KooCLI进行如下操作,管理您OBS中的数据: 表1 KooCLI集成OBS功能 功能 说明 桶基本操作 指定区域创建不同存储类型的桶、删除桶以及获取桶列表、桶配置信息等。 对象基本操作 管理对象,包括上传、下载、删除和列举对象等。 支持上传单个或批量上传多个文件或文件夹。 支持分段上传大文件。 支持增量同步上传、下载和复制对象。 支持复制单个对象或按对象名前缀批量复制多个对象。 支持移动单个对象或按对象名前缀批量移动多个对象。 支持对失败的上传、下载、复制等任务进行恢复。 日志记录 支持在客户端配置日志记录,记录对桶和对象的操作日志,方便统计与分析。
  • 自定义请求域名 cli-endpoint用于自定义请求云服务的域名。KooCLI默认会请求对应区域的目标云服务,您也可以针对该云服务指定Endpoint: hcloud IoTDA UpdateDevice --cli-region="cn-north-4" --description="test update device" --device_id="testz*********************0802" --cli-endpoint="iot-mqtts.cn-north-4.myhuaweicloud.com"{"app_id" : "103b************************6202","app_name" : "DefaultApp_********","device_id" : "testz*********************0802","node_id" : "testz*********************0802","gateway_id" : "testz*********************0802","device_name" : "test********************************************0802","node_type" : "CATEWAY","description" : "test update device","fw_version" : null,"sw_version" : null,"device_sdk_version" : null,"auth_info" : {"auth_type" : "CERTIFICATES""secret" : null,"fingerprint" : "e30db21************************b1772929c","secure_access" : true,"timeout" : 0}"product_id" : "50c1************************588e","product_name" : "50c1************************588e","status" : "INACTIVE","create time" : "20220801T085024z","tags" : [],"extension_info" : {"shal_fingerprint" : "82cd23e2************************e089d59d","sha256_fingerprint" : "396ldb************************************************4a5f88ccb7"}} 父主题: 选项说明
  • 打印命令调用过程中的调试信息 KooCLI支持打印命令执行过程中的调试信息。在命令中添加“--debug”即可: hcloud VPC ShowVpc/v3 --cli-region="cn-north-4" --project_id="0dd8cb****************19b5a84546" --vpc_id="0bbe****-****-****-****-****235be6e7" --debug[debug info] 2022/06/21 19:59:25 Read and connection timeouts are 40s and 30s respectively.[debug info] 2022/06/21 19:59:25 URL: https://vpc.cn-north-4.myhuaweicloud.com/v3/0dd8cb****************19b5a84546/vpc/vpcs/0bbe****-****-****-****-****235be6e7[debug info] 2022/06/21 19:59:26 API response status code is 200.[debug info] 2022/06/21 19:59:26 API response X-Request-Id is f9fd68****************2e48ec7f88.{ "vpc": { "id": "0bbe****-****-****-****-****235be6e7", "name": "CCI-VPC-*******", "description": "", "cidr": "192.***.*.*/**", "extend_cidrs": [], "status": "ACTIVE", "project_id": "0dd8cb****************19b5a84546", "enterprise_project_id": "0", "tags": [], "created_at": "2022-05-10T02:53:42Z", "updated_at": "2022-05-10T02:53:43Z", "cloud_resources": [ { "resource_type": "routetable", "resource_count": 1 }, { "resource_type": "virsubnet", "resource_count": 1 } ] }, "request_id": "f9fd68****************2e48ec7f88"} 父主题: 选项说明
  • 日志管理 KooCLI提供日志记录和管理功能,会缓存API调用过程中产生的日志信息,日志文件保存目录如下: Windows系统: C:\Users\{您的Windows系统用户名}\.hcloud\log\ Linux系统: /home/{当前用户名}/.hcloud/log/ Mac系统: /Users/{当前用户名}/.hcloud/log/ 日志管理相关参数有: level:日志记录级别,可选值为info、warning、error max-file-size:单个日志文件大小(MB),min=1,max=100,默认值20 max-file-num:日志文件保留个数(0表示保留所有日志文件),默认值3 retention-period:日志文件保留时间(天)(0表示永久保留) 未配置时默认日志级别为error,单个日志文件大小为20MB,日志保留个数为3。 配置日志相关参数的命令如下: hcloud log set --key1=value1 --key2=value2 ... hcloud log set --level=error --max-file-size=20 --max-file-num=3 --retention-period=30设置配置成功 查看日志相关参数的命令如下: hcloud log show hcloud log show{ "maxFileSize": 20, "maxFileNum": 3, "logLevel": "error", "logRetentionPeriod": 30} 父主题: 常用命令
  • 在线体验功能特性 重启 在“重启”单击左键,当前实例将会重启。重启实例将会终止所有会话并创建一个新的会话,任何正在进行中的进程都会被终止,非持久化存储的数据将被清空。 设置 在“设置”单击左键,可设置当前实例的字体大小和样式。 上传下载 可以将文件上传到工作空间中的用户目录下。反之,也可以把工作空间的文件下载到本地。 在“上传/下载”中单击左键,选择“上传”或者“下载”,即可上传或下载文件。 资源管理器 可以可视化操作当前实例的当前用户目录下的文件。 在“资源管理器”单击左键,即可打开可视化文件管理工具。 文件管理器可视化展示如下图,在下图中红框中所示图标处单击右键,可选择关闭或折叠文件视图。 终端 在线体验功能集成了在线终端的功能,可以直接在其中建立多个终端进行操作。打开多个终端时,所有终端都会连接到同一实例。实例的数量不会因为您打开新的终端而增加。 在“新建终端”单击鼠标左键,即可创建一个新终端。 帮助 在“帮助”单击鼠标左键,您可以获取更多支持信息或查看隐私声明。 父主题: 在线体验
  • 自动补全 KooCLI开启自动补全后,在输入命令时使用“Tab”键,会根据已有命令提示其待补全的内容。 开启自动补全功能: hcloud auto-complete on hcloud auto-complete on开启成功!自动补全仅支持bash,若未生效请执行`bash`命令 关闭自动补全功能: hcloud auto-complete off hcloud auto-complete off关闭成功!若未生效请执行`bash`命令 自动补全功能仅支持bash。 自动补全提示参数时,若提示的参数名中有“[N]”,其含义为索引位,请使用数字代替该字符;若提示的参数名中有“{*}”,其含义为自定义参数名称,请使用任意不含“.”的字符串代替该字符; 父主题: 常用命令
共99354条