活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 青云志云端助力计划 NEW 一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云
  • 云上钜惠 爆款云主机全场特惠,2核4G只要1.8折起!
  • 中小企业服务商合作专区 国家云助力中小企业腾飞,高额上云补贴重磅上线
  • 出海产品促销专区 NEW 爆款云主机低至2折,高性价比,不限新老速来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

息壤智算

领先开放的智算服务平台,提供算力、平台、数据、模型、应用“五位一体”智算服务体系,构建全流程的AI基础设施能力
AI Store
  • 算力市场
  • 模型市场
  • 应用市场
  • MCP市场
公共算力服务
  • 裸金属
  • 定制裸金属
训推服务
  • 模型开发
  • 训练任务
  • 服务部署
模型推理服务
  • 模型广场
  • 体验中心
  • 服务接入
应用托管
  • 应用实例
科研助手
  • 科研智能体
  • 科研服务
  • 开发机
  • 并行计算
大模型
  • DeepSeek-V3.1
  • DeepSeek-R1-0528
  • DeepSeek-V3-0324
  • Qwen3-235B-A22B
  • Qwen3-32B
智算一体机
  • 智算一体机
模型适配专家服务
  • 模型适配专家服务
算力服务商
  • 入驻算力服务商

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场进入AI Store创新解决方案公有云生态专区智云上海应用生态专区
建站工具
  • 新域名服务
  • SSL证书
  • 翼建站
企业办公
  • 安全邮箱
  • WPS 365 天翼云版
  • 天翼企业云盘(标准服务版)
灾备迁移
  • 云管家2.0
  • 翼备份(SaaS版)

定价

协助您快速了解云产品计费模式、价格详情,轻松预估上云成本
价格计算器
  • 动态测算产品价格
定价策略
  • 快速了解计费模式

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼信创云专区
  • 信创云专区
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
培训与认证
  • 天翼云学堂
  • 天翼云认证
开源社区
  • 魔乐社区
  • OpenTeleDB

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 服务保障
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家
我要反馈
  • 建议与反馈
  • 用户体验官
信息公告
  • 客户公告

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      微消息队列MQTT版_相关内容
      • Pod异常问题排查
        阶段四:Pod运行问题 OOM 当集群中的容器使用超过其限制的内存,容器可能会被终止,触发OOM(Out Of Memory)事件,导致容器异常退出。 OOM可能原因 说明 推荐的解决方案 系统内存不足 查看Pod所在节点的内核日志/var/log/messages,日志中存在Killed Process,但不存在kubepods相关日志;且主机内存使用量较高,表明是主机操作系统内存不足。 可能是系统全局内存不足、内存碎片化严重、内存泄露等。可提单排查。 Pod内存不足 查看Pod所在节点的内核日志/var/log/messages,日志中存在类似Task in /kubepods.slice/xxxxx killed as a result of limit of /kubepods.slice/xxxx的报错信息,且主机内存使用量不高或Pod的资源Limit值设置得较小,表明OOM为cgroup级别。 根据业务实际运行需要,适当增大Pod的内存Limit。 Terminating 可能原因 说明 推荐的解决方案 节点存在异常,处于NotReady状态。 节点存在异常,处于NotReady状态。 处于NotReady状态的节点恢复正常后会被自动删除。 Pod配置了Finalizers。 如果Pod配置了Finalizers,Kubernetes会在删除Pod之前执行Finalizers指定的清理操作。如果相关的清理操作没有正常响应,Pod将保持在Terminating状态。 通过kubectl get pod n o yaml查看Pod是否配置了Finalizers,进一步排查异常原因。 Pod的preStop配置异常。 如果Pod配置了preStop,Kubernetes会在c。Pod正处于终止流程的preStop阶段时,Pod将处于Terminating状态。 通过kubectl get pod n o yaml查看Pod的preStop配置,进一步排查异常原因。 Pod配置了优雅退出时间。 如果Pod配置了优雅退出时间(terminationGracePeriodSeconds),Pod收到终止命令后(例如kubectl delete pod 命令)会进入Terminating状态。等待terminationGracePeriodSeconds设定的时间后,或容器提前退出后,Kubernetes才认为Pod已经成功关闭。 等待容器优雅退出后,Kubernetes将自动删除Pod。 容器无响应。 发起停止或删除Pod的请求后,Kubernetes会向Pod内的容器发送SIGTERM信号。如果容器在终止过程中没有正确响应SIGTERM信号,Pod可能会停留在Terminating状态。 使用kubectl delete pod graceperiod0 force强制删除,释放Pod资源。 检查Pod所在节点的containerd或Docker日志,进一步进行排查。 Evicted 可能原因 说明 推荐的解决方案 节点存在资源压力,包括内存不足、磁盘空间不足等,引发kubelet主动驱逐节点上的一个或者多个Pod,以回收节点资源。 可能存在内存压力、磁盘压力、Pid压力等。可以通过kubectl describe node grep Taints命令查询。 内存压力:带有污点node.kubernetes.io/memorypressure。 磁盘压力:带有污点node.kubernetes.io/diskpressure。 Pid压力:带有污点node.kubernetes.io/pidpressure。 内存压力: 根据自身业务情况,调整Pod的资源配置。 磁盘压力: 定时清理节点上的业务Pod日志,防止磁盘空间被耗尽。 为节点进行磁盘扩容。 Pid压力:根据自身业务情况,调整Pod的资源配置。 发生了非预期的驱逐行为。 待运行Pod的节点被手动打上了NoExecute的污点,导致出现非预期的驱逐行为。 通过kubectl describe node grep Taints命令检查节点是否被打上了NoExecute污点。如是,请删除。 未按照预期流程执行驱逐。 podevictiontimeout:当节点宕机时间超过设置时间后,开始驱逐宕机节点上的Pod,默认为5min。 nodeevictionrate:每秒从节点上驱逐的Pod数量。默认为0.1,即每10s至多从一个节点上驱逐Pod。 secondarynodeevictionrate:第二档的节点驱逐速率。当集群中宕机节点过多时,节点驱逐速率会降低至第二档,默认值为0.01。 unhealthyzonethreshold:可用区的不健康阈值,默认为0.55,即当宕机的节点数量超过总节点数的55%时,该可用区被判定为不健康。 largeclustersizethreshold:集群的大规模阈值,默认为50,即当集群节点数量超过50时判定集群为大规模集群。 在小规格的集群(集群节点数小于等于50个节点)中,如果故障的节点大于总节点数的55%,实例的驱逐会被停止。 在大规模集群中(集群节点数大于50),如果集群中不健康的节点数量占总节点数的比例超过了预设的阈值unhealthyzonethreshold(默认为0.55),驱逐速率由secondarynodeevictionrate控制(代表每分钟驱逐节点上Pod的最大比例),默认值为0.01。 容器被驱逐后仍然频繁调度到原节点。 节点驱逐容器时会根据节点的资源使用率进行判断,而容器的调度规则是根据节点上的“资源分配量”进行判断,被驱逐的Pod有可能被再次调度到这个节点,从而出现频繁调度到原节点的现象。 根据集群节点的可分配资源检查Pod的资源Request请求配置是否合理。 Completed Completed状态下,Pod中容器的启动命令已执行完毕,容器中的所有进程均已成功退出。Completed状态通常适用于Job、Init容器等,该状态是正常状态。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        工作负载
        Pod异常问题排查
      • 容器水平伸缩(HPA)
        必须设置,不然HPA无法运行。 cpu: 500m 2、执行以下命令,创建Nginx应用。 kubectl create f nginx.yml 3、创建HPA。通过scaleTargetRef设置当前HPA绑定的对象,在本例中绑定名叫nginx的Deployment。 plaintext apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler metadata: name: nginxhpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx minReplicas: 1 maxReplicas: 10 metrics: type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50 4、创建好HPA后,再次执行 kubectl describe hpa 命令 看到HPA正常运行。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        弹性伸缩
        工作负载弹性伸缩
        容器水平伸缩(HPA)
      • 节点
        本节介绍了云容器引擎节点类常见问题。 容器集群新增节点时的问题与排查方法? 若是通过集群节点扩容,可在集群节点列表中查看新增的节点概况; 若是通过节点池新增节点,可在节点池详情的伸缩活动中看操作记录。 如何重置容器集群中节点的密码? 可在集群节点详情页面有重置密码按钮,需两次输入密码校验正确后才生效。 注意 节点重置密码等同于云主机重置密码,请务必保存好密码。 节点重置密码后如何登陆云主机? 需购买并绑定同一VPC内的弹性IP后,可SSH登陆云主机操作。 容器集群节点中安装kubelet的端口主要有哪些? 容器集群节点中安装kubelet的端口主要有如下几个: 10250 –port:kubelet服务监听的端口,api会检测他是否存活。 10248 –healthzport:健康检查服务的端口。 10255 –readonlyport:只读端口,可以不用验证和授权机制,直接访问。 4194 –cadvisorport:当前节点cadvisor运行的端口。 容器集群的节点可以更改IP吗? 不支持修改私网IP:当前容器的集群中把节点私网IP作为kubernetes node名称,kubernetes node名称不支持修改,修改后会导致节点不可用及容器网络异常等故障,所以不支持更换节点私网IP。 支持修改公网IP:节点上的公网IP可以在云主机控制台更换。 如何更改节点Pod数量? 不同集群单节点支持的最大Pod数是有限制的,默认为110。 登陆到节点上,修改/var/lib/kubelet/config.yaml中配置。 修改参数maxPods为指定的值。 执行systemctl restart kubelet,重启kubelet。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        节点
      • 计费
        本节介绍了云容器引擎的计费类常见问题。 容器计费项和计费方式是什么? 支持包年包月和按需计费2种方式,详情可查:点这里 容器如何定价? 收费项包括:集群管理费、IaaS资源费等, 详情可查:点这里 容器创建的节点是否支持按需转包周期? 目前不支持按需与包周期互转。 如何为购买的容器实例续费? 为防止资源到期或者浪费,已经购买包月实例的用户,可执行续费操作,延长容器实例的有效期,也可以设置到期自动续费的相关操作。 开通的容器实例资源何时生效? 天翼云容器资源在客户支付成功之后,系统经过初始化完成后即可生效使用。 包周期集群到期可以直接删除吗? 按天翼云规则,到期实例有15天冻结期,期间用户可以发起续订,集群实例会恢复。超过15天冻结期,实例会注销。 如何退订我的容器集群? 进入控制台,从集群管理列表,可以发起退订。详细可查看:退订集群
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        计费
      • 在离线混部插件安装与卸载
        本节介绍使用在离线混部插件安装与卸载的用户指南 通过安装或卸载在离线应用混部插件,您可以顺利开启或关闭混部能力。 适用场景 首次安装混部插件,启用混部能力。 需要卸载混部插件,关闭混部相关功能。 安装插件步骤 1. 登录云容器引擎控制台,选择指定集群后,在左侧菜单栏选择“混合部署混部插件维护”,点击“安装”按钮进行安装混部插件。 2. 系统将自动开始部署混部插件,过程通常需要数分钟。 3. 部署完成后,页面状态会自动刷新为“已部署”。 卸载插件步骤 1. 登录云容器引擎控制台,选择指定集群后,在左侧菜单栏选择“混合部署混部插件维护”,点击“卸载”按钮进行卸载混部插件。 2. 系统将自动移除混部插件。 3. 卸载完成后,页面状态会变为“未安装”。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        调度
        在离线混部
        在离线混部插件安装与卸载
      • 容器中域名解析的最佳实践
        本节介绍云容器引擎的最佳实践: 容器中域名解析的最佳实践。 Pod的DNS解析行为 Kubernetes以Pod为最小可创建、管理、部署单元,Pod内部包含一个或一组共享namespace和cgroup的紧密关联的容器。容器内部的DNS解析行为与Pod的DNS解析行为概念上是对等的。 Pod中的DNS查询行为直接受Pod的/etc/resolv.conf配置文件的影响,Kubelet在拉起Pod时,会根据Pod规约中dnsPolicy的配置为Pod生成/etc/resolv.conf配置。 默认情况下,Pod的dnsPolicy设置为clusterFirst, Pod的/etc/resolv.conf值类似: nameserver 172.20.0.10 search .svc.cluster.local svc.cluster.local cluster.local options ndots:5 各字段解释如下: nameserver : 域名解析服务器 search : 域名查找后缀规则,会在 .svc.cluster.local svc.cluster.local cluster.local三个域中搜索匹配的记录 options : 域名解析选项,KV值格式,典型的有ndots,表示解析的域名字符串内的点字符数量超过ndots值,则认为是完整域名,直接解析,如不足,则追加.svc.cluster.local后缀 默认情况下, nameserver值为云容器引擎内置的CoreDNS service ClusterIP, Kubernetes在CoreDNS中为普通Service赋予一个形如 mysvc.mynamespace.svc.clusterdomain.example的DNS A记录,该名称会解析成Service对应的clusterIP。 Pod访问集群内部Service域名时,根据域名后缀规则依次查询Service名称,获得Service对应的ClusterIP。 Pod访问集群外部域名时,根据Pod规约的dnsPolicy值不同,使用Pod所在节点配置的DNS或者使用CoreDNS所在节点的配置DNS服务器进行解析。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        容器中域名解析的最佳实践
      • 合理分配容器资源
        本节介绍云容器引擎的最佳实践:合理分配容器资源。 CPU和内存是节点重要的资源,分配不当时可能导致容器频繁重启或者被驱赶,甚至导致节点宕机。特别是内存这类不可压缩的资源。 Kubernetes 将运行的 Pod 分为不同的 QoS 类,QoS 类由 Pod 中容器的资源请求(request)和限制(limit)决定。当 Node 资源不足时,Kubernetes 会根据 QoS 类驱逐可驱逐的 Pod。此外,Pod 或因超过限制(limit)被 kubelet 终止,或因没有限制而导致节点 OOM。 Kubernetes QoS 类有Guaranteed、Burstable、BestEffort。 Guaranteed Guaranteed Pod 具有最严格的资源限制,且最不可能被驱逐。在这些 Pod 未超过其资源的limit,或没有可从 Node 抢占的低优先级 Pod 之前,它们不会被kill。即它们只能使用其指定的资源限制。Pod 被赋予 Guaranteed QoS 类的几个判断: Pod 中的每个容器必须有 CPU 和内存的 request 和 limit 对于 Pod 中的每个容器,CPU 和内存的 limit 必须分别等于 CPU 和内存的 request Burstable Burstable Pod 具有基于请求的资源下限保证,但不需要资源限制。如果未指定资源limit,则默认为节点容量。这允许 Burstable Pod 在资源可用时灵活地增加其资源。在由于节点资源压力导致 Pod 被驱逐的情况下,Burstable Pod 只会在所有 BestEffort Pod 被驱逐后才会被驱逐。Burstable Pod 可以包括没有资源 limit 或 request 的容器,因此可以尝试使用任意数量的节点资源。 Pod 不满足 QoS 类 Guaranteed 的判定依据 Pod 中至少一个容器有CPU或内存的 request 或 limit
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        合理分配容器资源
      • 获取容器Core Dump
        本节介绍云容器引擎的最佳实践:获取容器Core Dump。 应用场景 Core Dump是指当一个程序发生严重错误导致异常终止时,操作系统将该程序当前的内存状态以及其他相关信息保存到一个特殊的文件中,这个文件通常称为 core 文件或核心转储文件。core文件包含了程序在崩溃时的内存映像、CPU 寄存器状态、堆栈信息等,可以用于分析程序异常终止的原因。 在容器环境中,Core Dump的处理与传统的物理机环境略有不同,因为容器本身是在宿主机上运行的,因此需要一些特殊的配置才能捕获容器内发生的核心转储。本节介绍容器中core文件的一般处理流程和相关概念。 将Core Dump文件输出到主机目录 开启节点Core Dump 设置Core Dump文件的输出路径 echo "/tmp/cores/core.%t.%e.%p" > /proc/sys/kernel/corepattern 上述文件路径中: %t:表示coredump的时间。 %e:表示程序文件名。 %p:表示进程ID。 将Core Dump的输出路径修改为/tmp/cores,后续容器中的应用程序Core Dump文件也将输出到容器的/tmp/cores文件,因为在容器中读取的 /proc/sys/kernel/corepattern文件实质上就是主机的 /proc/sys/kernel/corepattern文件。 配置容器Core Dump和验证 通过kubectl或者控制台完成如下配置: apiVersion: v1 kind: Pod metadata: name: corevolume spec: volumes: name: coredumppath hostPath: 通过hostPath将容器Core Dump持久化在主机 path: /home/coredump containers: name: ubuntu image: ubuntu:12.04 command: ["/bin/sleep","3600"] volumeMounts: mountPath: /tmp/cores name: coredumppath 用上述方式创建Pod并进入,触发当前shell终端的段错误。 $ kubectl get pod NAME READY STATUS RESTARTS AGE corevolume 1/1 Running 0 55s $ kubectl exec it corevolume /bin/bash root@corevolume:/ kill s SIGSEGV $$ 在容器实际运行的主机上查看/home/coredump目录会生成core文件。 ls /home/coredump core.1738160312.corevolume.15
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        获取容器Core Dump
      • 容器升级业务不中断
        本节介绍云容器引擎的最佳实践:容器升级业务不中断。 应用场景 在 Kubernetes 集群中,常见的应用部署模式是使用 Deployment 与 LoadBalancer 类型的Service 对外提供访问。在进行应用更新或升级时,Deployment 会创建新的 Pod 并逐步替换旧的 Pod,但在这个过程中可能会出现服务中断的情况。 解决方案 为了最大程度的减少服务中断,我们可以采取一系列措施: 设置滚动更新策略:通过设置Deployment的滚动更新策略来控制更新的速度,可以指定更新期间的最大不可用副本数(maxUnavailable)和同时可用的最大副本数(maxSurge),通过合理设置这些参数,可以确保在更新过程中保持足够的可用性。 健康检查和就绪探针:在容器中配置健康检查和就绪探针,确保新Pod在完全就绪之前不会接收流量,从而减少中断。 外部负载均衡器配置:如果使用LoadBalancer类型的Service对外提供访问,可以配置服务对外部请求的负载均衡行为,主要包括以下两种: 1. Cluster:默认模式,外部流量可以转发到其它节点上的Pod,转发时会替换掉报文的源IP为上一个转发节点的地址。 2. Local:外部流量只会发给本机的Pod,转发时会保留源IP。 实践 登录云容器引擎控制台,单击集群名称进入集群 左侧菜单栏选择工作负载,在工作负载列表中,单击无状态进入Deployment列表页,单击创建新Deployment,进入Deployment配置页面。 单击显示 高级设置,升级策略处可以自定义MaxSurge与MaxUnavailable。本示例中配置最大不可用副本数为25%,同时可用的最大副本数为25%,用于控制工作负载的滚动步长。 在实例内容器选框位置,单击显示 高级设置,容器健康检查选区可以设置存活检查与就绪检查。本示例为TCP端口检查,请根据应用实际情况进行设置,配置就绪检查的启动延时探测时间为20s,用于控制工作负载滚动更新的时间间隔。 在实例内容器选框位置,单击显示 高级设置,对容器进行停止前处理,可以设置为工作负载收到删除请求后休眠30s,使其具备充足的时间来处理剩余请求,保证服务正常运行。 左侧菜单栏选择网络,在网络列表中,单击服务进入Service列表,单击创建服务,进入Service配置页面。 服务类型选择负载均衡,下方访问设置处会出现外部流量策略选框,用户可以自行选择Cluster类型流量策略或Local类型流量策略。 单击显示 高级设置,可以选择Session Affinty方式。 1. None:Kubernetes不会保持与特定客户端的会话状态,每个请求都根据负载均衡算法独立地路由到后端Pod,意味着即使是来自同一客户端的连续请求,也可能被发送到不同的后端Pod上,从而不会保持会话状态。 2. 客户端IP:Kubernetes将使用客户端的IP地址来决定将请求路由到哪个后端Pod,同一个客户端的请求始终转发至同一个后端的Pod对象。 设置完成后,进入Deployment列表页,选择某个工作负载,单击右侧重新部署,重启方式选择滚动重启,可以看到新实例被首先创建出来,然后停止旧的实例,确保始终有实例正在运行。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        容器升级业务不中断
      • API使用说明
        本页主要介绍云容器引擎产品的API使用说明。 OpenAPI门户提供了产品的API 文档、API调试、SDK中心等。 关于用户如何使用云容器引擎产品API的详细介绍,请参见使用API。您可以在OpenAPI门户可以了解到具体的调用前必知、API概览、如何调用API以及具体的API的接口详细说明。 Java SDK:ccesdkjavav2.0.5.tar.gz Go SDK:ccesdkgov2.0.3.tar.gz
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        API参考
        API使用说明
      • Nginx Ingress实现灰度发布和蓝绿发布
        指定后端服务为grayv2deploy port: number: 80 path: "/" 路径 pathType: "Prefix" 执行命令进行访问测试: curl H 'Host: testgray.com' v1 curl H 'Host: testgray.com' cookie 'versionalways' v2 curl H 'Host: testgray.com' v1 curl H 'Host: testgray.com' cookie 'versionalways' v2 其中, 为Nginx Ingress对外暴露的IP。可以看出,仅当Cookie中包含version且值为always的流量已切分到新版本服务。 步骤4:下线旧版本Service v1 将常规Ingress grayv1ing 的服务名称改为grayv2deploy 删除Canary Ingress grayv2ing 删除旧无状态应用 grayv1deploy 和配置项 grayv1 场景二:将一定比例的流量切分到新版本 应用运行了一套对外提供7层服务的Service v1,现需发布新版本Service v2。应用希望将20%的流量灰度到Service v2,待稳定运行后,逐步全量切到Service v2,平滑下线Service v1。示意图如下: 步骤1:部署旧版本Service v1和常规Ingresss 同 “场景一:将匹配的业务流量切分到新版本” 步骤2:部署新版本Service v2 同 “场景一:将匹配的业务流量切分到新版本” 步骤3:灰度发布新版本 基于服务权重创建Canary Ingress grayv2ing apiVersion: "networking.k8s.io/v1" kind: "Ingress" metadata: annotations: kubernetes.io/ingress.class: "nginxingresscontroller" nginx.ingress.kubernetes.io/canary: "true" 启用Canary nginx.ingress.kubernetes.io/canaryweight: "50" 50%的请求转发到此Canary Ingress labels: ingressName: "grayv1ing" ingressNamespace: "graytest" name: "grayv2ing" namespace: "graytest" spec: rules: host: "testgray.com" 域名 http: paths: backend: service: name: "grayv2deploy" 指定后端服务为grayv2deploy port: number: 80 path: "/" 路径 pathType: "Prefix" 执行命令进行访问测试: for i in {1..10}; do curl H 'Host: testgray.com'; done; v2 v2 v2 v2 v1 v1 v1 v2 v1 v2 其中, 为Nginx Ingress对外暴露的IP。可以看出,有近50%的流量切分到新版本服务,当请求的数量越多时比例会越接近50%。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        发布
        Nginx Ingress实现灰度发布和蓝绿发布
      • 使用容器镜像服务发布应用
        云容器引擎中发布工作负载 1、点击 工作负载 – 无状态 新增。 2、选择已推送到容器镜像实例的镜像。 3、选择已创建的镜像拉取凭证,点击发布,等待发布成功结果。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        工作负载
        使用容器镜像服务发布应用
      • DNS解析异常问题排查
        检查CoreDNS Pod的网络连通性 登录CoreDNS Pod所在集群节点。 执行ps aux grep coredns,查询CoreDNS的进程ID。 执行nsenter t n bash,进入CoreDNS所在容器网络命名空间,其中pid为上一步得到的进程ID。 测试网络连通性 运行telnet 6443,测试Kubernetes API Server的连通性。其中apiserverclusterip为default命名空间下Kubernetes服务的IP地址,默认为10.96.0.1。 运行dig @ ,测试CoreDNS Pod到上游DNS服务器的连通性。其中domain为测试域名,upstreamdnsserverip为上游DNS服务器地址。 常见问题 现象 原因 处理方案 业务Pod无法通过CoreDNS服务IP解析 机器负载高、kubeproxy没有正常运行、安全组没有放开UDP协议53端口等。 检查安全组是否放开UDP 53端口,若已放开请提交工单排查。 业务Pod无法连通CoreDNS容器副本 容器网络异常或安全组没有放开ICMP。 检查安全组是否放开ICMP,若已放开请提交工单排查。 业务Pod无法通过CoreDNS容器IP解析 机器负载高、安全组没有放开UDP协议53端口等。 检查安全组是否放开UDP 53端口,若已放开请提交工单排查。 检查业务Pod到CoreDNS的网络连通性 选择以下任意一种方式,进入客户端Pod容器网络。 方法一(适合镜像本身含有sh、ping等命令的Pod): 使用kubectl exec it n /bin/sh命令进入到Pod中。 方法二(适合镜像本身不含常用命令、且稳定运行的Pod): 登录业务Pod所在集群节点。 执行ps aux grep 命令,查询业务容器的进程ID。 执行nsenter t n bash命令,进入业务Pod所在容器网络命名空间。其中pid为上一步得到的进程ID。 方法三:(适合频繁重启的Pod) 如果运行时是docker:登录业务Pod所在集群节点。 执行docker ps a grep 命令,查询k8sPOD 开头、使用镜像为pause的沙箱容器,记录容器ID。 执行docker inspect grep netns命令,查询/var/run/docker/netns/xxxx的容器网络命名空间路径。 执行nsenter n bash命令,进入容器网络命名空间。(其中netns 路径为上一步得到的路径,且n和 之间不加空格)。 如果运行时是containerd:登录业务Pod所在集群节点,执行crictl ps a grep 根据Pod名称查看容器id。 根据查到的容器id,执行ctr n k8s.io container ls grep 查找完整的容器id(ctr使用的时候,必须写全,而docker对于id的长度没要求) 执行ctr n k8s.io container info grep i pid C 3获取业务Pod中pause容器的pid path里面的数字即为pause容器的pid。 执行nsenter t n 进入容器网络命名空间。 进入容器网络命名空间后,测试网络连通性。 执行dig @ 命令,测试业务Pod到CoreDNS服务kubedns解析查询的连通性。其中 为测试域名, 为kubesystem命名空间中kubedns的服务IP。默认为10.96.0.10。 执行ping 命令,测试业务Pod到CoreDNS容器副本的连通性。其中 为kubesystem命名空间中CoreDNS Pod的IP。 执行dig @ 命令,测试业务Pod到CoreDNS容器副本解析查询的连通性。其中 为测试域名, 为kubesystem命名空间中CoreDNS Pod的IP。 常见问题 现象 原因 处理方案 业务Pod无法通过CoreDNS服务IP解析 机器负载高、kubeproxy没有正常运行、安全组没有放开UDP协议53端口等。 检查安全组是否放开UDP 53端口,若已放开请提交工单排查。 业务Pod无法连通CoreDNS容器副本 容器网络异常或安全组没有放开ICMP。 检查安全组是否放开ICMP,若已放开请提交工单排查。 业务Pod无法通过CoreDNS容器IP解析 机器负载高、安全组没有放开UDP协议53端口等。 检查安全组是否放开UDP 53端口,若已放开请提交工单排查。 当无法定位问题时,需要抓包进行辅助诊断。在正常情况下,抓包对业务无影响,仅会增加小部分的CPU负载和磁盘写入。 登录出现异常的业务Pod、CoreDNS Pod所在节点。 在ECS(非容器内)执行以下命令 tcpdump i any port 53 C 20 W 200 w /tmp/clientdns.pcap ,可以将最近所有的53端口信息抓取到文件中。以上命令会对抓取到的包进行rotate,最多可以写200个20 MB的.pcap文件。 结合业务日志的报错定位到精准的报错时间的报文信息。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        域名DNS
        DNS解析异常问题排查
      • 自定义存储资源对象
        使用限制 根据业务场景需要自行安装CSI,并确定存储驱动名称。具体CSI插件安装有两种方式: 1、CSI插件为Helm Chart形态:通过模版市场上传CSI插件Chart包,并通过模版实例来发布CSI插件; 2、CSI插件为独立工作负载形态:通过云容器引擎服务“工作负载”自行创建DaemonSet、Deployment或者Statefulset; 自定义存储类 通过控制台创建流程如下: 登录“云容器引擎”管理控制台; 在集群列表页点击进入指定集群; 进入主菜单“存储”——“存储类”,单击左上角“创建”; 在创建对话框,配置存储类StorageClass的相关参数。配置项说明如下: 配置项 说明 名称 StorageClass的名称。 存储类型 这里选择“通用” 存储驱动 对应StorageClass yaml中provisioner,配置为自行安装CSI对应的存储驱动名称 回收策略 回收策略,默认为Deleted。 1、Retained(保留):用户可以手动回收资源。当PVC对象被删除时,PV卷仍然存在,对应的数据卷被视为"已释放(released)"。 2、Deleted(删除):对于支持Delete回收策略的卷插件,删除动作会将PV对象从Kubernetes中移除,同时也会从外部基础设施中移除所关联的存储资产。 如果对数据安全性要求高,推荐使用Retain方式,以免误删数据。 绑定策略 绑定策略,默认为Immediate。 1、Immediate模式:表示一旦创建了PVC,也就完成了卷绑定和动态供应。对于由于拓扑限制而非集群所有节点可达的存储后端,PV会在不知道Pod调度要求的情况下绑定或者制备。 2、WaitForFirstConsumer模式:该模式将延迟PV的绑定和制备,直到使用该PVC的Pod被创建。PV会根据Pod调度约束指定的拓扑来选择或供应。 支持扩展 由自行安装CSI支持情况决定 参数 根据自行安装CSI支持情况及业务需求配置 挂载选项 挂载参数,用户可根据自己的情况实际定制相关参数。 参数配置完成后,点击“确定”。创建成功后,可以在存储类列表查看。 通用存储类YAML示例如下: apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: {StorageClassName} provisioner: {YOURCSIPROVISIONER} parameters: {PARAMKEY}: {PARAMVALUE} reclaimPolicy: Retain allowVolumeExpansion: true mountOptions: debug volumeBindingMode: Immediate
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        存储
        自定义存储资源对象
      • 存储卷
        PV和 PVC 并非所有的Kubernetes数据卷(Volume)具有持久化特征,为了实现持久化的实现,容器存储需依赖于一个远程存储服务。为此Kubernetes引入了PV和PVC两个资源对象,将存储实现的细节从其如何被使用中抽象出来,并解耦存储使用者和系统管理员的职责。PV和PVC的概念如下: PV,PV是PersistentVolume的缩写,译为持久化存储卷。PV在Kubernetes中代表一个具体存储类型的卷,其对象中定义了具体存储类型和卷参数。即目标存储服务所有相关的信息都保存在PV中,Kubernetes引用PV中的存储信息执行挂载操作。PVC,PVC是PersistentVolumeClaim的缩写,译为存储声明。PVC是在Kubernetes中一种抽象的存储卷类型,代表了某个具体类型存储的数据卷表达。其设计意图是分离存储与应用编排,将存储细节抽象出来并实现存储的编排。这样Kubernetes中存储卷对象独立于应用编排而单独存在,在编排层面使应用和存储解耦。 PVC和PV的绑定:PVC与PV是一一对应关系,不能一个PVC挂载多个PV,也不能一个PV挂载多个PVC。为应用配置存储时,需要声明一个存储需求声明(PVC),而Kubernetes会通过最佳匹配的方式选择一个满足PVC需求的PV,并与之绑定。所以从职责上PVC是应用所需要的存储对象,属于应用作用域。PV是存储平面的存储对象,属于整个存储域。 PVC只有绑定了PV之后才能被Pod使用,而PVC绑定PV的过程即是消费PV的过程,这个过程是有一定规则的,以下规则都满足的PV才能被PVC绑定。 VolumeMode:被消费PV的VolumeMode需要和PVC一致。 AccessMode:被消费PV的AccessMode需要和PVC一致。 StorageClassName:如果PVC定义了此参数,PV必须有相关的参数定义才能进行绑定。 LabelSelector:通过标签(labels)匹配的方式从PV列表中选择合适的PV绑定。 Size:被消费PV的capacity必须大于或者等于PVC的存储容量需求才能被绑定。 PVC和PV里面的size字段作用如下: PVC、PV绑定时,会根据各自的size进行筛选。 通过PVC、StorageClass动态创建PV时,有些存储类型会参考PVC的size创建相应大小的PV和后端存储。 对于支持Resize操作的存储类型,PVC的size作为扩容后PV、后端存储的容量值。 一个PVC、PV的size值只是在执行一些PVC和PV管控操作的时候,作为配置参数来使用。 真正的存储卷数据流写数据的时候,不会参考PVC和PV的size字段,而是依赖底层存储介质的实际容量。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        存储
        存储卷
      • CSI插件
        本节介绍了:CSI的常见问题。 存储FAQCSI 本文主要介绍天翼云存储插件cstorcsi,其安装及使用过程中常见的问题及分析流程。 安装失败 失败原因查看 在“插件”——“插件市场”——选择“cstorcsi”插件安装,完成相关参数配置后点击“安装”;安装详情可以在“插件”——“插件实例”中看到cstorcsi实例,在状态栏查看实例运行状态,如果实例安装失败,可以通过查看状态栏的日志获取部署失败详情。 常见问题 查阅日志报 “no matches for kind “PodSecurityPolicy” in version“policy/v1beta1” 该报错见于在kubernetes v1.25集群上安装cstorcsi v3.1.0版本报错,报错原因是cstorcsi插件安装会部署PodSecurityPolicy资源,但该资源在k8s v1.25中被移除。该问题解决方案为: 1、将cstorcsi升级至3.2.0,按原参数安装即可; 2、如不希望进行组件升级,可以将cstorcsi v3.1.0 value.yaml中,将参数podSecurityPolicy.enabled配置为false,卸载后重新安装即可。 使用cstorcsi创建存储卷错误 通用分析流程 1、在“插件”——“插件实例”查看cstorcsi实例,运行是否异常; 2、进入“工作负载”——“无状态”,切换命名空间为“cstor”,查看名称为“cstorcsiprovisioner”的pod日志,切换容器名称为“csiprovisioner”和“cstorcsiplugin”,查看是否有错误日志输出。 常见问题 1、Can not get AK 该报错是由于cstorcsi安装过程中,未进行AK、SK配置。解决方案为:在”账号中心”——”安全设置”——”用户AccessKey”中查看AK、SK。 卸载cstorcsi后,选择重新安装该插件,在安装配置窗口中根据获得的 AK、SK值,分别填入AuthConfig.AK和AuthConfig.SK字段中,点击安装即可完成插件部署。 2、用户不允许订购按需类订单。 该报错是由于cstorcsi插件开通的云硬盘为按需付费方式,需要账户余额在100元以上才可正常开通。 解决方案:请检查天翼云“账户余额”是否在100元以上。 2、can not support RWX in filesystem mode for disk 当使用cstorcsi安装生成的storageclass,创建持久卷声明(PVC)。正常情况下,创建持久卷声明后,在“存储”——”持久卷”,列表栏会看到相应持久卷(PV)创建,并且状态为“已绑定”。 如果创建持久卷声明后,未发现相应持久卷创建,查看cstorcsiplugin日志输出为 can not support RWX in filesystem mode for disk,表示当前创建的持久卷声明,不支持访问模式为多机读写。 目前,cstorcsi插件安装,默认创建的云硬盘类型的storageclass,其访问模式与是否是共享盘有关,只有在使用共享盘的情况下,支持多机读写,其他情况仅支持单机读写。 解决方案:修改持久卷声明访问模式为“单机读写”。 3、failed to create disk volume, message: disk size should be in range [10G ,32T] 目前,当使用cstorcsi插件安装的storageclass,云硬盘类型要求容量为 [10G ,32T],文件存储要求容量500G以上。如果创建持久卷声明后,未发现相应持久卷创建,查看cstorcsiplugin日志输出为: failed to create disk volume, message: disk size should be in range [10G ,32T],表示当前创建的存储卷声明,其容量需要调整为合理范围大小。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        存储管理
        CSI插件
      • Ingress相关问题
        本节介绍了云容器引擎的Ingress类常见问题。 从外面通过nginxingresscontroller访问Pod时,Pod运行的应用怎么获取真实客户端的IP地址? 需要配置nginxingresscontroller,把客户端真实的源IP保存在转发报文的Header中,key可以自定义(比如XRemoteAddr或其它key),不过需要和应用约定好使用哪个Key。 从Pod访问外部应用,外部应用拿到的是什么IP? 拿到的是Pod所在K8S主机的IP。 修改ELB Ingress引用的TLS证书后,需要更新对应负载均衡器的证书 在“网络控制台>弹性负载均衡”找到ELB Ingress对应负载均衡器的HTTPS监听器,然后找到监听器对应的证书,点击证书在证书管理界面中修改证书,将TLS证书内容和私钥上传即可完成更新。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        网络
        Ingress相关问题
      • 启动实例失败时的重试机制是怎样的?
        本节介绍了启动实例失败时的重试机制是怎样的? 启动实例失败时的重试机制是怎样的? 云容器引擎是基于原生Kubernetes的云容器引擎服务,完全兼容Kubernetes社区原生版本,与社区最新版本保持紧密同步,完全兼容Kubernetes API和Kubectl。 在Kubernetes中,Pod的spec中包含一个restartPolicy字段,其取值包括:Always、OnFailure和Never,默认值为:Always。Always:当容器失效时,由kubelet自动重启该容器。 OnFailure:当容器终止运行且退出不为0时(正常退出),由kubelet自动重启该容器。 Never:不论容器运行状态如何,kubelet都不会重启该容器。 restartPolicy适用于Pod中的所有容器。 restartPolicy仅针对同一节点上kubelet的容器重启动作。当Pod中的容器退出时,kubelet 会按指数回退方式计算重启的延迟(10s、20s、40s...),其最长延迟为5分钟。 一旦某容器执行了10分钟并且没有出现问题,kubelet对该容器的重启回退计时器执行重置操作。 每种控制器对Pod的重启策略要求如下: Replication Controller(RC)和DaemonSet:必须设置为Always,需要保证该容器的持续运行。 Job:OnFailure或Never,确保容器执行完成后不再重启。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        工作负载
        启动实例失败时的重试机制是怎样的?
      • kubelet配置
        名称 类型 描述 示例值 cpuManagerPolicy String CPU 管理器策略。 none kubeAPIQPS Integer 与 API Server 通信的每秒查询个数。 100 kubeAPIBurst Integer 每秒发送到 API Server 的突发请求数量上限。 100 maxPods Integer 运行的 Pod 个数上限。 110 podPidsLimit Integer Pod 中可使用的 PID 个数上限。 1 eventRecordQPS Integer 每秒可生成的事件数量。 5 eventBurst Integer 事件记录的个数的突发峰值上限。 10 topologyManagerPolicy String 使用的拓扑管理器策略名称。 none topologyManagerScope String 拓扑管理策略的资源对齐粒度 container resolvConf String 容器指定DNS解析配置文件 runtimeRequestTimeout String 除长期运行的请求之外所有运行时请求的超时时长 120s serializeImagePulls Boolean 是否逐一拉取镜像。 FALSE registryPullQPS Integer 镜像仓库的 QPS 上限。 5 registryBurst Integer 突发性镜像拉取的个数上限。 10 containerLogMaxFiles Integer 每个容器可以存在的日志文件个数上限。 20 containerLogMaxSize String 日志文件被轮转之前可以到达的最大大小。 50Mi imageGCHighThresholdPercent Integer 镜像用量超过此阈值,则镜像垃圾回收会持续执行。 80 imageGCLowThresholdPercent Integer 镜像用量低于此阈值时不会执行镜像垃圾回收操作。 70 cpuCFSQuota Boolean CPU CFS 配额约束开关。 FALSE systemReservedMem String 系统内存预留 100Mi kubeReservedMem String Kubernetes组件内存预留 100Mi evictionHard:memory.available String 硬驱动逐配置项:节点可用内存值 100Mi evictionHard:nodefs.available String 硬驱动逐配置项:Kubelet使用的文件系统的可用容量的百分比 10% evictionHard:nodefs.inodesFree String 硬驱动逐配置项:Kubelet使用的文件系统的可用inodes数的百分比 5% evictionHard:imagefs.available String 硬驱动逐配置项:容器运行时存放镜像等资源的文件系统的可用容量的百分比 10% evictionHard:imagefs.inodesFree String 硬驱动逐配置项:容器运行时存放镜像等资源的文件系统的可用inodes数的百分比 10% evictionHard:pid.available String 硬驱动逐配置项:留给分配Pod使用的可用PID数的百分比 10% evictionSoft:memory.available String 软驱逐配置项:节点可用内存值 100Mi evictionSoft:nodefs.available String 软驱逐配置项:Kubelet使用的文件系统的可用容量的百分比 10% evictionSoft:nodefs.inodesFree String 软驱逐配置项:Kubelet使用的文件系统的可用inodes数的百分比 10% evictionSoft:imagefs.available String 软驱逐配置项:容器运行时存放镜像等资源的文件系统的可用容量的百分比 10% evictionSoft:imagefs.inodesFree String 软驱逐配置项:容器运行时存放镜像等资源的文件系统的可用inodes数的百分比 10% evictionSoft:pid.available String 软驱逐配置项:留给分配Pod使用的可用PID数的百分比 10% evictionSoftGracePeriod:memory.available String 驱逐周期 10s evictionSoftGracePeriod:nodefs.available String 驱逐周期 10s evictionSoftGracePeriod:nodefs.inodesFree String 驱逐周期 10s evictionSoftGracePeriod:imagefs.available String 驱逐周期 10s evictionSoftGracePeriod:imagefs.inodesFree String 驱逐周期 10s evictionSoftGracePeriod:pid.available String 驱逐周期 10s
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        API参考
        附录
        kubelet配置
      • 密钥Secret的安全使用
        避免使用ServcieAccount Secret Token访问集群 Kubernetes 1.21以前版本的集群中,Pod中获取token的形式是通过挂载ServiceAccount的Secret来获取的,这种方式获得的token是永久的,Pod被删除后token仍然存在Secret中,一旦泄露可能导致安全风险。该方式在1.21及以上的版本中不再推荐使用,并且根据社区版本迭代策略,在1.25及以上版本的集群中,ServiceAccount将不会自动创建对应的Secret。 Kubernetes 1.21及以上版本的集群中,直接使用TokenRequest API获得token,并使用投射卷(Projected Volume)挂载到Pod中。使用这种方法获得的token具有固定的生命周期(默认有效期为1小时),在到达有效期之前,Kubelet会刷新该token,保证Pod始终拥有有效的token,并且当挂载的Pod被删除时这些token将自动失效。该方式通过Bound ServiceAccount TokenVolume特性实现,能够提升服务账号(ServiceAccount)token的安全性,Kubernetes 1.21及以上版本的集群中会默认开启。 为了帮助用户平滑过渡,社区默认将Token有效时间延长为1年,1年后token失效,不具备证书reload能力的client将无法访问APIServer,建议使用低版本client的用户尽快升级至高版本,否则业务将存在故障风险。 基于Secret的ServiceAccount Token由于token由于具有上述的安全风险。1.23版本以及以上版本云容器引擎集群推荐使用Bound Servcie Account Token,该方式支持设置过期时间,并且和Pod生命周期一致,可减少凭据泄露风险。例如: apiVersion: apps/v1 kind: Deployment metadata: name: tokenexample namespace: tokenexample spec: replicas: 1 selector: matchLabels: app: tokenexample label: tokenexample template: metadata: labels: app: tokenexample label: tokenexample spec: serviceAccountName: boundsatoken containers: image: nginx imagePullPolicy: Always name: tokenexample volumes: name: testsecurity projected: defaultMode: 420 sources: serviceAccountToken: expirationSeconds: 3600 path: token configMap: items: key: ca.crt path: ca.crt name: kuberootca.crt downwardAPI: items: fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        安全
        密钥Secret的安全使用
      • 如何获取接口URI中参数
        本页主要介绍云容器引擎产品的API使用中如何获取接口URI中参数。 集群ID(clusterId) 登录CCE控制台,在左侧导航栏中选择“集群”,集群列表中“实例ID”即为集群ID(clusterId) 节点池ID(nodePoolId) 登录CCE控制台,在左侧导航栏中选择“集群”。 单击所创建集群的名称,并在左侧选择“节点 >> 节点池”,单击所创建的节点池名称。节点池信息中可以查看“节点池ID”
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        API参考
        附录
        如何获取接口URI中参数
      • 容器定时伸缩(CronHPA)
        字段 说明 apiVersion API版本,固定值 autoscaling.ctyun.com/v1beta1 kind API类型,固定值 CronHorizontalPodAutoscaler metadata.name CronHPA策略名称。 metadata.labels 策略标签 metadata.namespace CronHPA策略所在的命名空间。 spec.scaleTargetRef 指定CronHPA的扩缩容对象,可配置以下字段: apiVersion:CronHPA扩缩容对象的API版本。 kind:CronHPA扩缩容对象的API类型。 name:CronHPA扩缩容对象的名称。CronHPA支持HPA策略或Deployment。 spec.jobs CronHPA策略规则,可添加多个规则。每个规则可配置以下字段: name:CronHPA规则名称,该名称需唯一。 schedule:指定任务运行时间与周期,参数格式与gocron类似,请参见下表。 targetSize:扩缩容的Pod数目。 disable:参数值为“true”或“false”。其中“false”表示该规则生效,“true”则表示该规则不生效。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        弹性伸缩
        工作负载弹性伸缩
        容器定时伸缩(CronHPA)
      • 容器磁盘读写限速
        注解 含义 koordinator.sh/blkioQOS Pod 磁盘限速 JSON 注解
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        调度
        在离线混部
        容器磁盘读写限速
      • 应用高可用部署推荐
        配置Pod标签,工作负载实例间反亲和 matchExpressions: key: app operator: In values: demo namespaces: default topologyKey: topology.kubernetes.io/zone 拓扑域为可用区 weight: 50 podAffinityTerm: labelSelector: 配置Pod标签,工作负载实例间反亲和 matchExpressions: key: app operator: In values: demo namespaces: default topologyKey: kubernetes.io/hostname 拓扑域为节点 创建该工作负载,查看创建的Pod: $ kubectl get pod owide NAME READY STATUS RESTARTS AGE IP NODE demo3hjgd8bb64aawck 1/1 Running 0 21s 192.168.0.32 ccseagent1b54ffbc17 demo3hjgd8bb64plary 1/1 Running 0 21s 192.168.1.25 ccseagenta7527e3e80 将实例数扩容到3,可见新建Pod被调度到另一个节点,3个实例所在3个节点属3个不同可用区。 $ kubectl scale deploy/demo replicas3 deployment.apps/demo scaled $ kubectl get pod owide NAME READY STATUS RESTARTS AGE IP NODE demo3hjgd8bb64aawck 1/1 Running 0 3s 192.168.0.32 ccseagent1b54ffbc17 demo3hjgd8bb64plary 1/1 Running 0 45s 192.168.1.25 ccseagenta7527e3e80 demo3hjgd8bb64ccgum 1/1 Running 0 45s 192.168.2.16 ccseagent59ab9e7689 根据上述工作负载反亲和性规则,可将Pod按照可用区和节点做较为均匀的分布,实现应用的高可用部署。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容灾
        应用高可用部署推荐
      • 某量子云平台迁移项目
        本节介绍了云容器引擎的最佳实践:某量子云平台迁移项目。 项目概述 某量子云平台对外提供量子计算机实验/实操服务,其应用架构由他云迁移到天翼云,通过天翼云实现应用组件化和容器化,通过K8S统一部署和管理业务。 该平台包括官网、博客网站、web管理后台等系统。 容器支撑方案 迁移使用的容器架构图如下: 研发迭代更高效:使用crs镜像服务一键部署应用 便于扩容快弹性高:使用HPA弹缩pod 解决内外网互连互通:使用Nginx+Spring GateWay实现内外网流量隔离和路由转发 底层资源占用少:使用csi插件动态挂载sfs存储 助力运维更便捷:使用云日志插件采集容器日志 最终效果 2023年6月迁移至天翼云试运行,12月已付费容器并运营至今,现业务稳定运行。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        客户案例
        某量子云平台迁移项目
      • 通过配置kubeconfig文件实现集群权限精细化管理
        验证权限 查询default命名空间下的pod资源。 kubectl get pod n default kubeconfigtest.config 被拒绝访问其他命名空间的pod资源。 kubectl get pod n testrq kubeconfigtest.config 不可以删除default命名空间下的pod资源。 kubectl delete pod n default cephfsprovisioner8689474666d2gsw kubeconfigtest.config 基于ClusterRole实现集群权限精细化管理的配置步骤 请参考:集群命名空间RBAC授权
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        权限
        通过配置kubeconfig文件实现集群权限精细化管理
      • 集群命名空间RBAC授权
        云容器引擎控制台创建Kubernetes自定义授权策略 注意 本步骤展示创建自定义ClusterRole,过程和创建Role类似。您可以根据实际的场景调整相应操作。 第一步:登录天翼云,进入到云容器引擎控制台,在左侧导航栏选择集群。 第二步:在集群管理界面,点击目标集群名称,然后在左侧导航栏,选择安全管理 > 角色。 第三步:在角色页面,点击Cluster Role页签,然后点击创建Cluster Role。 第四步:当点击创建Cluster Role后,会弹出一个YAML面板,您需要在面板上输入自定义策略的YAML内容,点击确定即可创建成功。 第五步:在左侧导航栏,选择安全管理 >授权,进入授权页面,选择子账号下面的用户,点击添加权限。 第六步:进入集群RBAC配置,点击添加权限,选择命名空间,选择自定义,然后选择里之前创建好的Cluster Role,点击下一步。 第七步:授权成功。 第八步:验证。 首先按照下图获取到对应的config,登录到集群主机保存test.config文件中。 查询集群的Pod。 kubectl get pod kubeconfigtest.config 没有权限查看集群的Service,提示forbidden。 kubectl get services kubeconfigtest.config 注意 当前云容器引擎授权管理仅支持自定义Cluster Role角色与集群内RABAC权限的绑定,暂不支持自定义Role角色与集群内RBAC权限的绑定。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        权限
        集群命名空间RBAC授权
      • 容器与节点时区同步
        本节介绍云容器引擎的最佳实践:容器与节点时区同步。 背景说明 使用Dockerfile构建容器镜像时,若未指定时区配置,那么构建的容器有可能会使用UTC时间。在云容器引擎中使用该容器镜像构建工作负载时就有可能出现容器实例与云容器引擎的节点时间不一致,相差8小时的现象。 云容器引擎的所有节点统一中国CST时间(UTC+8), 登录节点执行date R指令进行查看: [root@0000000gwcgp0q8ads ~] date R Sat, 06 Apr 2024 18:37:16 +0800 验证Pod实例的工作容器当前时间可以使用kubectl指令,例如查看default命名空间下,名为kubiamannual的pod工作容器时间: 使用kubectl exec指令可查看pod的工作负载容器当前的时间: [root@0000000gwcgp0q8ads ~] kubectl exec kubiamanual n default date R Sat, 06 Apr 2024 10:37:18 +0000 工作容器的时间戳时区为+0000,代表使用的是标准UTC时间, 中国CST时间比标准UTC时间多8个小时 解决该问题有两种方法: 1、构建容器镜像时配置时区 2、通过云容器引擎控制台进行配置 构建容器镜像时配置时区 以Dockerfile方式构建镜像为例,在镜像的Dockerfile中增加以下语句: RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 通过云容器引擎控制台进行配置 云容器控制台可以通过数据卷的方式,将节点的/etc/localtime文件挂载到Pod的工作容器实例中,以此实现时区信息同步,具体操作步骤如下: 1、登录云容器引擎控制台 2、进入【集群】【工作负载】界面,找到待处理的pod名称,点击【全量替换】按钮 全量替换 3、增加一个主机目录类型的数据卷,设置主机路径为/etc/localtime 数据卷 4、为工作容器增加挂载点 挂载点 提交更改后,容器实例会重启,使用与节点相同的时区配置; 通过云容器引擎创建新的工作负载时,可以使用的操作方法:以数据卷的方式将节点的/etc/localtime挂载到容器实例的/etc/localtime,实现节点与容器实例时间同步。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        容器与节点时区同步
      • 使用OceanFS静态存储卷(sharePath模式)
        验证数据持久化 登录“云容器引擎”管理控制台; 在集群列表页点击进入指定集群; 进入主菜单“工作负载”——“有状态”,进入负载详情; 在Pod列表页,选择“远程登录”,进入到容器内执行以下命令: 1、向/ccetmp 目录下写一个文件,执行 plaintext echo "Hello World" > /ccetmp/test.log 2、查看/ccetmp目录下文件,执行ls /ccetmp,预期结果如下: plaintext test.log 退出“远程登录”,对上一步中的Pod执行“销毁重建”,等待Pod重新运行正常; 对新建Pod,继续执行“远程登录”,进入到容器内查看数据。执行 plaintext cat /ccsetmp/test.log 预期结果如下: plaintext Hello World 以上步骤说明,pod删除重建后,重新挂载存储卷,数据仍然存在, 说明数据可持久化保存。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        存储
        海量文件
        使用OceanFS静态存储卷(sharePath模式)
      • 服务发布
        指向新版本服务。 run:newnginx sessionAffinity:None type:NodePort 执行以下命令,请求头中满足foobar的客户端请求访问服务。 curl H"Host: www.ctyun.com" 预期输出: new 重复执行以上命令,可以看到请求全部被路由到了新版本的服务。执行以下命令,删除Canary Ingress资源grayreleasecanary。 kubectldeleteingress grayreleasecanary 删除旧版本的Deployment和新版本的Service。执行以下命令,删除旧版本的Deployment。 kubectldeletedeployoldnginx 执行以下命令,删除新版本的Service。 kubectldeletesvcnewnginx
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        发布
        服务发布
      • 设置容器规格
        本节介绍了设置容器规格的用户指南。 在Kubernetes中,设置容器规格是确保应用程序在集群中有效运行的关键步骤。通过配置容器的资源请求和限制,可以优化资源使用,提升应用程序的稳定性和性能。 在Kubernetes中,资源请求(requests)和限制(limits)是用于指定容器所需的最小和最大资源量的设置。主要资源包括CPU和内存。 资源请求(requests):容器运行时所需的最小资源量。根据申请值调度该实例到满足条件的节点去部署工作负载。 资源限制(limits):容器允许使用的最大资源量。如果容器尝试使用超过限制的资源,可能会被终止。 通过控制台中设置容器规格 1、登录CCE控制台,单击集群名称进入集群。 2、在集群控制台左侧导航栏中选择“工作负载 ”,切换至“无状态 ”页签,单击“创建Deployment”。 3、在实例内容器设置CPU/内存限制。 4、点击“提交”,创建完成。 常见问题和解决方法 Pod调度失败 确保节点有足够的资源满足容器的资源请求。 检查集群资源配额设置,确保配额没有被超出。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        工作负载(旧版)
        设置容器规格
      • 容器内获取客户端源IP
        服务类型 说明 负载均衡 ELB访问方式,是通过弹性负载均衡ELB产品来实现负载均衡。通过创建LoadBalancer SVC时,指定注解方式开启XForwardedFor。当通过ELB访问工作负载时,可以通过XForwardedFor头部提取到源地址。 节点端口(NodePort) NodePort访问方式,是将容器端口映射到节点端口,实现获取客户端源IP有以下方式: 当配置SVC外部流量策略为Local时,表示请求不经过转发,可以获取客户端源ip; 当配置SVC外部流量策略为Cluster时,需要通过手动创建监听器及后端主机组,开启XForwardedFor实现。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        网络
        容器内获取客户端源IP
      • 1
      • ...
      • 194
      • 195
      • 196
      • 197
      • 198
      • ...
      • 254
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      安全隔离版OpenClaw

      OpenClaw云服务器专属“龙虾“套餐低至1.5折起

      青云志云端助力计划

      一站式科研助手,海外资源安全访问平台,助力青年翼展宏图,平步青云

      云上钜惠

      爆款云主机全场特惠,2核4G只要1.8折起!

      中小企业服务商合作专区

      国家云助力中小企业腾飞,高额上云补贴重磅上线

      出海产品促销专区

      爆款云主机低至2折,高性价比,不限新老速来抢购!

      天翼云奖励推广计划

      加入成为云推官,推荐新用户注册下单得现金奖励

      产品推荐

      弹性云主机 ECS

      物理机 DPS

      多活容灾服务

      GPU云主机

      镜像服务 IMS

      天翼云CTyunOS系统

      训推服务

      公共算力服务

      应用托管

      推荐文档

      EIP释放和批量释放

      MySQL

      常见问题

      如何使用代金券?

      导出数据

      产品定义

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 天翼云国际站
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2026 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号