云服务器内容精选
-
现象一:M CS /MCI实例删除状态异常,一直显示“删除中”。 问题现象:MCS/MCI实例删除状态异常,一直显示“删除中”。 解决方案:强制删除异常实例,并手工清理残留资源。 操作步骤: 登录UCS控制台,在左侧导航栏选择“容器舰队”页面,在“容器舰队”页签下单击目标舰队,进入舰队详情页。 在左侧导航栏选择“服务与路由”,切换至“多集群服务”页签,或者“多集群路由”页签。 选择状态一直为“删除中”的异常实例。 手动清理状态异常的MCS/MCI实例下的ELB残留资源: 单击异常实例的访问类型下的图标,进入实例绑定的弹性负载均衡实例页面。 负载均衡实例基本信息页面,关闭“删除保护”按钮。 切换至负载均衡实例“监听器”页签,删除异常的MCS/MCI实例绑定的监听器。 在当前页面左侧导航栏选择“后端服务器组”,单击异常MCS/MCI实例监听器绑定的后端服务器组名称,进入“基本信息”页面,关闭“移除保护”和“修改保护”。 删除异常的MCS/MCI实例监听器绑定的后端服务器组。 强制删除MCS/MCI异常实例: 选择状态一直为“删除中”的异常实例,单击操作列的“编辑YAML”。 删除yaml中如下内容,即可强制删除该实例。 finalizers: - karmada.io/multi-cluster-service-controller ## MCS finalizers: - karmada.io/multi-cluster-ingress-controller ## MCI
-
管理集群标签/污点 登录UCS控制台。 单击目标集群所在的容器舰队名称,在左侧导航栏选择“容器集群”,找到目标集群,在右上角单击进入“标签与污点管理”。 图1 标签与污点管理 单击按钮,设置节点标签/污点。如需执行多项操作,可多次添加,最多支持10条操作。 图2 添加标签/污点 选择“添加”或“删除”操作。 选择操作对象为“K8S标签”或“污点(Taints)”。 填写需要增加标签/污点的“键”和“值”。 如选择操作对象为“污点(Taints)”,需选择污点效果,关于污点效果说明请参见污点(Taints)说明。 单击“确定”,对所选节点执行标签/污点操作。
-
污点(Taints)说明 污点格式为“Key=Value:Effect”,Key和Value作为污点的标签,Value可以为空,Effect用于描述污点的效果。当前Effect支持如下两个选项: NoSchedule:不能容忍此污点的 Pod 不会被调度到集群上,但是现有 Pod 不会从集群中逐出。 NoExecute:表示不能容忍此污点的 Pod 不会被调度到集群上,同时会将集群上已存在的Pod驱逐。
-
验证负载伸缩结果 查看FederatedHPA策略,结果显示工作负载的CPU使用率为0%。 kubectl get FederatedHPA hpa-example-hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 1 6m 通过如下命令访问工作负载,其中{ip:port}为负载的访问地址,可以在工作负载的详情页中查询。 while true;do wget -q -O- http://{ip:port}; done 观察工作负载自动扩容过程。 kubectl get federatedhpa hpa-example-hpa --watch 查看FederatedHPA策略,可以看到6m23s时负载的CPU使用率为200%,超过了目标值,此时触发了FederatedHPA策略,将工作负载扩容为4个Pod,随后的几分钟内,CPU使用并未下降,直到到8m16s时CPU使用率才开始下降,这是因为新创建的Pod并不一定创建成功,可能是因为资源不足Pod处于Pending状态,这段时间内在扩容节点。 到8m16s时CPU使用率开始下降,说明Pod创建成功,开始分担请求流量,到8分钟时下降到81%,还是高于目标值,在容忍度范围外,说明还会再次扩容,到9m31s时再次扩容到7个Pod,这时CPU使用率降为51%,在容忍度范围内,不会再次扩缩,因此此后Pod数量一直稳定在7个。 NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 1 6m hpa-example-hpa Deployment/hpa-example 200%/50% 1 100 1 6m23s hpa-example-hpa Deployment/hpa-example 200%/50% 1 100 4 6m31s hpa-example-hpa Deployment/hpa-example 210%/50% 1 100 4 7m16s hpa-example-hpa Deployment/hpa-example 210%/50% 1 100 4 7m16s hpa-example-hpa Deployment/hpa-example 90%/50% 1 100 4 8m16s hpa-example-hpa Deployment/hpa-example 85%/50% 1 100 4 9m16s hpa-example-hpa Deployment/hpa-example 51%/50% 1 100 7 9m31s hpa-example-hpa Deployment/hpa-example 51%/50% 1 100 7 10m16s hpa-example-hpa Deployment/hpa-example 51%/50% 1 100 7 11m 查看FederatedHPA策略事件,可以看到策略的生效时间。 kubectl describe federatedhpa hpa-example-hpa 停止访问负载,观察工作负载自动缩容过程。 查看FederatedHPA策略,可以看到从13m开始CPU使用率为21%,18m时Pod数量缩为3个,到23m时Pod数量缩为1个。 kubectl get federatedhpa hpa-example-hpa --watch NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-example-hpa Deployment/hpa-example 50%/50% 1 100 7 12m hpa-example-hpa Deployment/hpa-example 21%/50% 1 100 7 13m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 7 14m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 7 18m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 3 18m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 3 19m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 3 19m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 3 19m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 3 19m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 3 23m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 3 23m hpa-example-hpa Deployment/hpa-example 0%/50% 1 100 1 23m 查看FederatedHPA策略事件,可以看到策略的生效时间。 kubectl describe federatedhpa hpa-example-hpa 达到CronFederatedHPA策略的触发时间后,观察工作负载的自动扩缩容过程。 可以看到118m时Pod数量扩为4个,到123m时Pod数量扩为10个。 kubectl get cronfederatedhpa cron-federated-hpa --watch NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE cron-federated-hpa Deployment/hpa-example 50%/50% 1 100 1 112m cron-federated-hpa Deployment/hpa-example 21%/50% 1 100 1 113m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 4 114m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 4 118m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 4 118m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 4 119m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 7 119m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 7 119m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 7 119m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 7 123m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 10 123m cron-federated-hpa Deployment/hpa-example 0%/50% 1 100 10 123m 查看CronFederatedHPA策略事件,可以看到策略的生效时间。 kubectl describe cronfederatedhpa cron-federated-hpa
-
方案流程 使用负载伸缩策略的流程如图1,具体流程如下: 准备工作。在创建负载伸缩策略前,您需要准备两个已注册至UCS的华为云集群,并为其安装Kubernetes Metrics Server插件,并构建一个名称为hpa-example的镜像。 创建工作负载。基于准备工作中的镜像创建无状态工作负载与服务,并为其创建与部署调度策略。 创建负载伸缩策略。使用命令行工具创建FederatedHPA策略与CronFederatedHPA策略。 观察负载伸缩过程。查看工作负载中的Pod的数量变动,观察所创建的负载伸缩策略效果。 图1 复杂场景下负载伸缩策略使用流程
-
应用场景 在一些复杂的业务场景下,可能有固定时间段高峰业务,又有日常突发高峰业务,若只使用标准的FederatedHPA功能,需要足够的时间来扩展工作负载,在预期的负载峰值可能会导致服务不可用。此种情况下,用户既期望能定时弹性伸缩应对固定时间段高峰业务,又期望能基于指标弹性伸缩应对日常突发高峰业务。联动FederatedHPA策略与CronFederatedHPA策略可实现复杂场景下的工作负载扩缩能力。 本小节将以hpa-example应用为例,指导您搭配使用FederatedHPA策略与CronFederatedHPA策略,实现复杂业务场景下的工作负载扩缩。
-
创建工作负载 使用构建的hpa-example镜像创建无状态工作负载,Pod数为1。镜像地址与上传到的SWR仓库有关,需要替换为实际取值。 kind: Deployment apiVersion: apps/v1 metadata: name: hpa-example spec: replicas: 1 selector: matchLabels: app: hpa-example template: metadata: labels: app: hpa-example spec: containers: - name: container-1 image: 'hpa-example:latest' # 替换为您上传到SWR的镜像地址 resources: limits: # limits与requests建议取值保持一致,避免扩缩容过程中出现震荡 cpu: 500m memory: 200Mi requests: cpu: 500m memory: 200Mi imagePullSecrets: - name: default-secret 创建一个端口号为80的服务。 kind: Service apiVersion: v1 metadata: name: hpa-example spec: ports: - name: cce-service-0 protocol: TCP port: 80 targetPort: 80 nodePort: 31144 selector: app: hpa-example type: NodePort 为工作负载和服务创建一个调度策略,并将其部署到cluster01和cluster02两个集群,使用权重拆分的方式部署,每个集群的权重为1,以保证两个集群的相同优先级。 apiVersion: policy.karmada.io/v1alpha1 kind: PropagationPolicy metadata: name: hpa-example-pp namespace: default spec: placement: clusterAffinity: clusterNames: - cluster01 - cluster02 replicaScheduling: replicaDivisionPreference: Weighted replicaSchedulingType: Divided weightPreference: staticWeightList: - targetCluster: clusterNames: - cluster01 weight: 1 - targetCluster: clusterNames: - cluster02 weight: 1 preemption: Never propagateDeps: true resourceSelectors: - apiVersion: apps/v1 kind: Deployment name: hpa-example namespace: default - apiVersion: v1 kind: Service name: hpa-example namespace: default
-
创建负载伸缩策略 为工作负载创建FederatedHPA策略。 vi hpa-example-hpa.yaml YAML文件内容如下。该策略作用于名称为hpa-example的负载,稳定窗口时长为扩容0秒、缩容100秒,最大Pod数为100、最小Pod数为2,包含一条系统指标规则,期望的CPU利用率为50%。 apiVersion: autoscaling.karmada.io/v1alpha1 kind: FederatedHPA metadata: name: hpa-example-hpa # FederatedHPA策略名称 namespace: default # 工作负载所在命名空间名称 spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: hpa-example # 工作负载名称 behavior: scaleDown: stabilizationWindowSeconds: 100 # 缩容的稳定窗口时长为100秒 scaleUp: stabilizationWindowSeconds: 0 # 扩容的稳定窗口时长为0秒 minReplicas: 2 # 最小Pod数为2 maxReplicas: 100 # 最大Pod数为100 metrics: - type: Resource resource: name: cpu # 扩缩指标基于CPU数据 target: type: Utilization # 指标类型为利用率 averageUtilization: 50 # 期望的平均利用率 创建CronFederatedHPA策略。 vi cron-federated-hpa.yaml YAML文件内容如下。该策略作用于名称为hpa-example-hpa的FederatedHPA策略,期望每天8:30扩容工作负载至10个Pod,每天10:00缩容工作负载至2个Pod。 apiVersion: autoscaling.karmada.io/v1alpha1 kind: CronFederatedHPA metadata: name: cron-federated-hpa # CronFederatedHPA策略名称 spec: scaleTargetRef: apiVersion: apps/v1 kind: FederatedHPA # 作用于FederatedHPA策略 name: hpa-example-hpa # FederatedHPA的名称 rules: - name: "Scale-Up" # 规则名称 schedule: 30 08 * * * # 触发时间 targetReplicas: 10 # 目标Pod数,非负整数 timeZone: Asia/Shanghai # 时区 - name: "Scale-Down" # 规则名称 schedule: 0 10 * * * # 触发时间 targetReplicas: 2 # 目标Pod数,非负整数 timeZone: Asia/Shanghai # 时区
-
操作步骤 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 单击华为云集群选项卡中的“注册集群”按钮。 勾选需要注册的CCE Standard集群或 CCE Turbo 集群,并选择一个舰队,单击“确定”。 注册集群时若不选择舰队,集群注册成功后将显示在“未加入舰队的集群”页签下,您可以随后再将其添加至舰队中,具体操作请参见管理未加入舰队的集群。 不支持在注册集群阶段选择已开通集群联邦能力的舰队,如果一定要加入这个舰队,请在集群注册成功后,再添加到该舰队中。关于集群联邦的介绍,请参见开通集群联邦章节。
-
添加集群 容器舰队开通集群联邦后,可以继续为舰队添加集群,添加后,集群会自动接入集群联邦。一个集群联邦最多可接入20个集群。 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在目标舰队栏中单击“添加集群”,或单击右上角的按钮。 您也可以单击舰队名称进入舰队详情页,在“容器集群”页面单击右上角“添加集群”。 勾选一个或多个已有集群。一个集群只能加入一个舰队,因此列表中显示的集群均为未加入舰队的集群。 请确保所选择的集群符合表1中的约束条件,否则会出现集群添加成功,但是接入集群联邦失败的情况。如果出现这种情况,请参考舰队开通集群联邦后,添加集群报错如何解决?进行修复。 单击“确定”,完成集群添加。
-
开通集群联邦 集群联邦和容器舰队绑定在一起,只需要为容器舰队一键开通集群联邦,就可以方便地操作集群联邦了。 集群联邦的开通包含两个阶段:一、开通集群联邦,二、集群接入联邦。容器舰队开通集群联邦能力后,容器舰队内的成员集群将自动接入联邦。 开通集群联邦有配额限制,并且对容器舰队中的集群有一些约束,请在开通前仔细阅读,避免集群联邦开通失败。 表1 集群约束 项目 约束 集群版本 容器舰队中的所有集群版本必须为1.19及以上。 集群状态 容器舰队中的所有集群状态必须为“运行中”。 集群网络状态 CCE集群、CCE Turbo集群:CCE集群所在region为北京四的,开通联邦时UCS将自动在集群所属VPC下创建VPCEP打通网络,非该region则需要集群节点具备公网访问能力,例如为节点绑定公网地址,用以拉取公网镜像。 其他集群:成功接入UCS即可。 配额 集群联邦配额为1,即只能为一个容器舰队开通集群联邦。 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到目标舰队,页面提示暂未开通集群联邦能力,单击“去开通”按钮。 图1 开通集群联邦 在弹出的提示框中单击“确定”,等待集群联邦开通成功。 当集群不满足约束条件时,界面会弹出报错信息,请按照提示修改,然后重新开通集群联邦。 开通集群联邦大约需要10分钟,请耐心等待。您可以单击集群联邦状态,查看详细的开通进度。开通成功后,容器舰队顶部的提示信息变为“集群联邦能力已开通 ,集群接入成功”。
-
准备工作 准备应用所运行的集群,本文以CCE集群为例进行演示,参考购买CCE集群在两个不同区域(如:华南-广州和华东-上海一)创建CCE集群,要求Kubernetes版本为1.19及以上,并且各个集群中至少拥有一个可用节点。 在实际生产环境中,多个集群可位于不同区域、可用区,甚至不同云服务商,实现应用的多活容灾。 已购买公网 域名 ,并添加至华为云云解析(DNS)服务,具体操作请参考快速添加网站域名解析。
-
应用场景 为了应对云单点宕机故障,UCS的集群联邦提供多云多活应用、秒级流量接管能力。业务应用的实例可以多云多活的部署在不同云上的容器服务中,当云单点宕机故障发生时,集群联邦可以秒级自动完成应用实例的弹性迁移以及流量的切换,业务的可靠性大大提升。 多活容灾方案示意如图1所示,通过创建域名访问规则,将应用分发到3个Kubernetes集群,包括两个华为云CCE集群(部署在不同Region)和一个其他云的Kubernetes集群,实现应用的多活容灾。 图1 多云集群应用多活容灾示意图
-
响应示例 状态码: 200 返回未注册到UCS的CCE集群 [ { "kind" : "Cluster", "apiVersion" : "v1", "metadata" : { "name" : "cluster-test", "uid" : "57ef11e7-7d72-11ee-a590-0255ac100b05", "creationTimestamp" : "2023-11-07T13:34:15Z", "labels" : { "FeatureGates" : "elbv3,SupportClientCertificateRevocation,xGPU" } }, "spec" : { "syncMode" : "", "apiEndpoint" : "https://cce-internal.cn-north-4.myhuaweicloud.com", "provider" : "huaweicloud", "type" : "cce", "category" : "self", "region" : "cn-north-4", "country" : "CN", "city" : "150900", "projectID" : "b6315dd3d0ff4be5b31a963256794989", "projectName" : "cn-north-4", "IsDownloadedCert" : false }, "status" : { "kubernetesVersion" : "v1.27", "conditions" : [ { "type" : "Ready", "status" : "True", "lastTransitionTime" : "2023-11-27T12:42:24.182645394+08:00", "reason" : "ClusterAvailable" }, { "type" : "Cluster", "status" : "Available", "lastTransitionTime" : "2023-11-27T12:42:24.182646152+08:00", "reason" : "ClusterAvailable" } ], "endpoints" : [ { "url" : "https://192.168.1.44:5443", "type" : "Internal" } ], "phase" : "Available" } } ]
-
安装Metrics Server插件 Metrics Server插件作为集群核心资源监控数据的聚合器,可在您的集群中便捷地进行安装。 使用以下命令安装Metrics Server。 kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml 使用以下命令验证Metrics Server是否安装成功。 kubectl get deployment metrics-server -n kube-system 如果输出结果类似于以下内容,则表示安装成功。 NAME READY UP-TO-DATE AVAILABLE AGE metrics-server 1/1 1 1 6m
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格