云主机开年特惠28.8元/年,0元秒杀等你来抢!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 安全隔离版OpenClaw NEW OpenClaw云服务器专属“龙虾“套餐低至1.5折起
  • 天翼云新春焕新季 NEW 云主机开年特惠28.8元/年,0元秒杀等你来抢!
  • 云上钜惠 爆款云主机全场特惠,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云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 息壤智算
  • 产品
  • 解决方案
  • 应用商城
  • 定价
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      消息队列RocketMQ版_相关内容
      • 节点已经绑定EIP,仍无法访问公网yum源进行安装更新?
        本节介绍了云容器引擎的其他类常见问题。 前提条件:确认对应节点已绑定EIP,并能通过EIP进行登录访问 问题现象:执行yum安装或者更新无响应 当出现上述问题,用户可以登录主机执行以下步骤修复;或者通过提工单方式,运维介入处理。 修复步骤 1、执行 cat /etc/dnf/dnf.conf,查看dnf配置: 2、删除下图中proxy相关配置: 3、重新执行yum命令,进行安装或更新,比如: 4、如上述步骤未能解决问题,请提工单介入处理。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        其他
        节点已经绑定EIP,仍无法访问公网yum源进行安装更新?
      • 节点伸缩原理
        本节介绍了节点伸缩原理。 工作原理 在Kubernetes中,节点自动伸缩的工作原理与传统意义上基于使用率阈值的模型有所差别,这也是很多开发者在从传统的IDC或者其他编排系统迁移到Kubernetes后最难理解的地方。 传统的弹性伸缩模型是基于使用率的,例如:一个集群中有3个节点,当集群中的节点CPU、内存使用率超过特定的阈值时,此时弹出新的节点。但当深入思考时会发现以下几个问题: 阈值是如何选择与判断的? 在一个集群中,部分热点节点的利用率会较高,而另外一个节点的利用率会很低。如果选择平均利用率的话可能会造成弹性伸缩的不及时。如果使用最低的节点的利用率,那么也会造成弹出资源的浪费。 弹出实例后是如何缓解压力的? 在Kubernetes中,应用是以Pod为最小单元,部署在集群的不同节点上的。当一个Pod资源利用率较高的时候,即便此时所在的节点或者集群的总量触发了弹性扩容,但是该应用的Pod数目,以及Pod对应的Limit没有任何变换,那么负载的压力是无法转移到新扩容出的节点上的。 如何判断以及执行实例的缩容? 如果基于资源利用率的方式判断节点是否缩容,那么很有可能出现,Request很大,但是Usage很小的Pod被驱逐,当集群中这种类型的Pod较多时,会导致集群的调度资源被占满,部分Pod无法调度。 Kubernetes节点伸缩是怎么解决以上问题的呢?Kubernetes是通过调度与资源解耦的两层弹性模型来解决的。 基于资源的使用率来触发应用副本的变化,也就是调度单元的变化。而当集群的调度水位达到100%的时候会触发资源层的弹性扩容,当资源弹出后,无法调度的单元会自动调度到新弹出的节点上,从而降低整个应用的负载状况。以下介绍Kubernetes弹性伸缩的技术细节: 如何判断节点的弹出? clusterautoscaler是通过对处在Pending的Pod进行监听而触发的。当Pod处在Pending的原因是调度资源不足的时候,会触发clusterautoscaler的模拟调度,模拟调度器会计算在配置的伸缩组中哪个伸缩组弹出节点后可以调度这些Pending的Pod。如果有伸缩组可以满足,那么就弹出相应的节点。 模拟调度就是将一个伸缩组当成一个抽象的Node,伸缩组中配置的机型规格对应会成为Node的CPU/内存/GPU的容量,然后设置伸缩组上面的Label、Taint,也就是Node的Label与Taint。模拟调度器会在调度模拟的时候,将该抽象的Node纳入调度参考。如果Pending的Pod可以调度到抽象的Node,那么就会计算所需的Node的数目,驱动伸缩组弹出节点。 如何判断节点的缩容? 首先只有弹性伸缩弹出的节点会被缩容,静态的节点是无法被clusterautoscaler接管的。缩容的判断是通过每个节点单独判断的。当任意一个节点的调度利用率低于所设置的调度阈值时,会触发节点的缩容判断。此时clusterautoscaler会尝试模拟驱逐节点上面的负载,判断当前节点是否可以排水彻底。有些特殊的Pod(kubesystem命名空间的非DaemonSet Pod、PDB控制的Pod等),则会跳过该节点而选择其他的候选节点。当节点发生驱逐时,会先进行排水,将节点上的Pod驱逐到其他的节点,然后再下线该节点。 多个分组之间如何选择? 不同分组之间,实际上相当于不同的虚拟的Node之间的选择,和调度策略一样,这里也存在一个打分的机制。首先符合调度策略的Node会先过滤出来,在符合调度策略的Node中,会根据affinity等亲和性的策略进行选择。如果上述的策略都不存在,默认情况下clusterautoscaler会通过leastwaste的策略来进行抉择。leastwaste的策略的核心就是模拟弹出节点后,剩余的资源最少。此外,有一个特别的场景,当有一个GPU的伸缩组和CPU的伸缩组同时可以弹出生效时,默认CPU会优先于GPU弹出。 如何提高弹性伸缩的成功率? 弹性伸缩的成功率主要取决如下两个因素: 1、调度策略是否满足 首先在配置好伸缩组后,开发者需要先确认下该伸缩组可以承载的Pod的调度策略范围。如果无法直接判断,最简单的方式是通过nodeSelector直接选择伸缩组的Label进行预弹模拟。 2、资源配置是否充分 当模拟调度通过后,会选择伸缩组进行弹出,但是伸缩组中配置的ECS规格是否有库存会直接决定是否可以成功弹出实例。因此配置多个节点池选择不同的规格可以大大提高弹出成功率。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        弹性伸缩
        节点弹性伸缩
        节点伸缩原理
      • Pod异常问题排查
        可能原因 说明 推荐的解决方案 节点存在资源压力,包括内存不足、磁盘空间不足等,引发kubelet主动驱逐节点上的一个或者多个Pod,以回收节点资源。 可能存在内存压力、磁盘压力、Pid压力等。可以通过kubectl describe node <node name> grep Taints命令查询。 内存压力:带有污点node.kubernetes.io/memorypressure。 磁盘压力:带有污点node.kubernetes.io/diskpressure。 Pid压力:带有污点node.kubernetes.io/pidpressure。 内存压力: 根据自身业务情况,调整Pod的资源配置。 磁盘压力: 定时清理节点上的业务Pod日志,防止磁盘空间被耗尽。 为节点进行磁盘扩容。 Pid压力:根据自身业务情况,调整Pod的资源配置。 发生了非预期的驱逐行为。 待运行Pod的节点被手动打上了NoExecute的污点,导致出现非预期的驱逐行为。 通过kubectl describe node <node name> 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请求配置是否合理。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        工作负载
        Pod异常问题排查
      • 容器水平伸缩(HPA)
        本节介绍了:容器水平伸缩(HPA)的用户指南。 容器水平伸缩 云容器引擎支持在控制台界面上快速创建支持HPA的应用,实现容器资源的弹性伸缩。您也可通过定义HPA(Horizontal Pod Autoscaling)的YAML来进行配置。 背景信息 从v1.18开始,K8s v2beta2 API允许通过HPA的behavior字段配置扩缩行为。在behavior字段中的scaleUp和scaleDown分别指定扩容和缩容行为。当您在使用HPA时,希望只进行扩容或者只进行缩容的Pod伸缩,则可以通过开启指标伸缩,单击禁止缩容或者禁止扩容来实现。 默认值:均不禁止 禁止扩容:selectPolicy的值Disabled会关闭给定方向的扩容。因此使用以下策略,将会阻止扩容。 plaintext behavior: scaleUp: selectPolicy: Disabled 禁用缩容:selectPolicy的值Disabled会关闭给定方向的缩容。因此使用以下策略,将会阻止缩容。 plaintext behavior: scaleDown: selectPolicy: Disabled 伸缩规则 HPA总体支持两种度量指标,一种为资源度量指标 ,默认情况下仅支持cpu、内存这两种资源指标,它不仅支持资源百分比也支持平均值;另一种为自定义度量指标,包含Pod度量跟Object度量两大类。 资源度量指标 以CPU为例,配置示意如下: plaintext type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        弹性伸缩
        工作负载弹性伸缩
        容器水平伸缩(HPA)
      • 接入集群如何通过IPv6接入管控实例
        本节介绍接入集群如何通过IPv6接入管控实例。 操作步骤 资源准备 管控实例vpc和子网支持IPv6,参考:搭建IPv6私有网络,无需购买云主机。 创建内网ELB,参考:创建负载均衡器,网络类型选择内网。 创建管控实例并启用IPv6 1. 在分布式容器云平台控制台左侧导航栏中选择【分布式集群】>【管控实例】>【实例信息】,点击【创建管控实例】进入订购页面。 2. 在管控实例订购页面,选择在【前置步骤】中创建的支持ipv6的vpc、子网,启用ipv6, 选择创建的ELB 3. 提交订单等待管控实例创建完成 4. 在实例信息页面,启用NAT64功能 5. 查看在【前置步骤】中创建的ELB的详情,查看6443监听器的后端主机组, 确认IPV6健康检查状态正常
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        其他
        接入集群如何通过IPv6接入管控实例
      • 用户访问集群API Server的方式有哪些?
        本文介绍用户访问集群API Server的方式有哪些? 用户访问集群API Server的方式有哪些? 当前云容器引擎提供通过证书认证访问集群API Server的方式: 集群API方式:集群API需要使用证书认证访问,在云容器引擎控制台集群信息 > 连接信息获取kubeconfig文件, 通过kubectl直接连接集群API Server。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        API&kubectl
        用户访问集群API Server的方式有哪些?
      • 节点
        如何开启自动弹性伸缩? 在插件市场安装cubeclusterautoscaler插件。 配置中心开启弹性伸缩策略。 按需节点池配置弹性伸缩策略。 如何删除创建失败的节点? 如果集群中出现创建失败的节点,可登录云容器引擎控制台,选择集群进入后,通过 “节点池” > "节点管理" ,退订节点。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        节点
      • password字段加密的方法
        本页主要介绍云容器引擎产品的API使用中password字段加密的方法。 涉及的OpenAPI包括:纳管节点 通过API创建节点时password字段需要进行加密处理,具体方法如下: Java 以下是Java环境下对密码进行加密的示例步骤: plaintext import javax.crypto.Cipher;import java.security.KeyFactory; import java.security.PublicKey; import java.security.spec.X509EncodedKeySpec; import java.util.Base64; public class PasswordEncryptDemo { public final static String publicKeyWord "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCcX/slG/wUF6+qVw34VTW+gwFuVvHMHAPmu9jDn+jwED2A+i87CuYpvcjyYwPij41uS6SPZ/MSWDTO6f8/1YRs0Jbj1SIDNpRl/udTEbsPquFIqHSQSZsQseZS+j0HCAIwLUgMAJHW4AHw622Vgiirsm7gOY0qwnry1BmymiVXlQIDAQAB"; private static String encrypt(String password) throws Exception { Cipher cipher Cipher.getInstance("RSA"); PublicKey publicKey KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(publicKeyWord))); cipher.init(Cipher.ENCRYPTMODE, publicKey); byte[] encrypts cipher.doFinal(password.getBytes("UTF8")); return Base64.getEncoder().encodeToString(encrypts); } public static void main(String[] args) throws Exception { String password "密码"; String encryptPassword encrypt(password); System.out.println(encryptPassword); }} GO 以下是GO环境下对密码进行加密的示例步骤: plaintext package mainimport ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/pem" "fmt")const publicKeyword "BEGIN PUBLIC KEYnMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCcX/slG/wUF6+qVw34VTW+gwFuVvHMHAPmu9jDn+jwED2A+i87CuYpvcjyYwPij41uS6SPZ/MSWDTO6f8/1YRs0Jbj1SIDNpRl/udTEbsPquFIqHSQSZsQseZS+j0HCAIwLUgMAJHW4AHw622Vgiirsm7gOY0qwnry1BmymiVXlQIDAQABnEND PUBLIC KEY"func Encrypt(password string) string { publicKeywordByte : []byte(publicKeyword) block, : pem.Decode(publicKeywordByte) if block nil { fmt.Println("解析pem 失败") return "" } publicKeyInterface, error : x509.ParsePKIXPublicKey(block.Bytes) if error ! nil { fmt.Println("Failed to parse public key:", error) return "" } publicKey, ok : publicKeyInterface.(rsa.PublicKey) if !ok { fmt.Println("Public key is not type rsa.publicKey") return "" } ciphertext, err : rsa.EncryptPKCS1v15(rand.Reader, publicKey, []byte(password)) if err ! nil { fmt.Println("Encryption failed:", err) return "" } return base64.StdEncoding.EncodeToString(ciphertext)}func main() { fmt.Println(Encrypt("密码"))}
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        API参考
        附录
        password字段加密的方法
      • 使用延迟绑定的存储类实现跨AZ调度
        本节介绍了云容器引擎的最佳实践:使用延迟绑定的存储类实现跨AZ调度。 天翼云提供多种存储类型,如云硬盘、海量文件、弹性文件等。多数存储创建于特定可用区,若从其他可用区访问,部分存储类型将无法访问,部分虽可访问但存在性能损耗。尤其对于云硬盘或并行文件等对可用区要求严格的存储产品,若节点与存储的可用区不匹配,将导致存储无法正常挂载。为保障可用性与性能,建议多可用区业务采用延迟绑定策略,尽可能使存储与容器应用处于同一可用区。 注意 若工作负载的多个副本分布在多个可用区,且均使用同一支持延迟绑定及多机只读的PVC,则存储将基于首个被调度Pod所在的可用区进行挂载。 名词解释 延迟绑定(WaitForFirstConsumer)是存储类绑定策略的一种。选择该策略后,使用此存储类创建的PVC不会立即执行动态分配操作,而是等待有工作负载使用该PVC且Pod完成调度后,才触发动态分配流程。 Pod调度完成后,K8S会记录其所在节点的可用区信息。动态分配时,系统将根据Pod所在可用区为PVC分配存储并构建PV。 使用方法 创建一个新的存储类时,需根据实际需求选择存储产品并填写相关参数。在“绑定策略”一栏中,请选择延迟绑定(WaitForFirstConsumer)。 创建持久卷申明时,选择这个新的存储类,可以看到持久卷申明,状态会一直处于等待中,事件也是等待动态分配的状态。此时需要新建一个工作负载使用该PVC。 一段时间后可见,持久卷申请已成功绑定,无状态工作负载启动正常,云盘正常挂载。通过存储控制台查询可确认存储所在可用区与工作负载的可用区保持一致。
        来自:
      • 合理分配容器资源
        BestEffort BestEffort Pod 可以使用未分配给其他 QoS 类 Pod 的节点资源。在节点遇到资源压力时,kubelet 将优先驱逐 BestEffort Pod。 Pod 中所有的容器都没有 CPU 和内存的 request 和 limit 场景一 节点内存超过了预留的上限,导致节点 OOMkill。 解决方法: 升级节点的规格 迁移 Pod 至其他资源充足的节点 场景二 Pod 的内存 limit 设置过低,导致容器在使用内存超过限制时触发了OOMkill。此时,kubelet 会重启容器,但由于内存限制仍未改变,容器将再次超过限制并被终止。这种情况会导致容器反复重启,影响应用程序的稳定性。 解决方法: 扩大容器的内存 limit 设置
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        合理分配容器资源
      • Nginx Ingress实现灰度发布和蓝绿发布
        步骤4:下线旧版本Service v1 将常规Ingress grayv1ing 的服务名称改为grayv2deploy 删除Canary Ingress grayv2ing 删除旧无状态应用 grayv1deploy 和配置项 grayv1
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        发布
        Nginx Ingress实现灰度发布和蓝绿发布
      • 使用容器镜像服务发布应用
        本节介绍了云容器引擎的最佳实践:使用容器镜像服务发布应用。 云容器引擎产品使用容器镜像服务CRS中的容器镜像,发布一个容器应用。 前提条件:已开通容器镜像服务CRS实例,已开通容器集群。 准备容器镜像 用户可以根据自身的业务需求,通过dockerfile构建镜像或者使用其它已经构建好的镜像。 本文使用 docker pull nginx:stablealpine 将容器镜像推送到容器服务实例 1、在容器镜像服务中创建命名空间(可选:也可以直接使用已经创建好的命名空间)。 a.登录镜像服务控制台 b.点击 命名空间 – 创建命名空间 创建一个名称为 mydemons 的命名空间。 2、在容器镜像服务中创建镜像仓库(可选:当命名空间设置为允许自动创建仓库时,可以直接通过推送镜像来创建镜像仓库) a.登录镜像服务控制台 b.点击 镜像仓库 – 创建镜像仓库 创建一个名称为 nginx 的私有镜像仓库。 3、执行docker tag并推送镜像 docker tag nginx:stablealpine /mydemons/nginx:stablealpine docker login docker push /mydemons/nginx:stablealpine 推送成功后,可以在控制台看到镜像的版本。 云容器引擎中创建镜像拉取凭证(可选) 如果上一步骤推送的镜像仓库属性为公共的,则不需要进行此操作,否则需要按以下步骤创建镜像拉取凭证: 1、登录云容器引擎控制台。 2、选择集群。 3、点击命名空间 创建命名空间 mydemo(可选:也可以直接使用已经创建好的命名空间) 4、点击 配置管理 – 镜像拉取凭证 – 新增,填写用户名、密码等信息。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        工作负载
        使用容器镜像服务发布应用
      • Cubecni插件扩容Pod子网
        本节介绍云容器引擎的最佳实践: Cubecni场景下扩容Pod子网。 Cubecni网络场景下,当Pod子网IP不足时,可添加Pod子网以实现Pod子网扩容。 使用限制 非资源委托集群,Pod子网仅支持扩容到3个,请做好规划,建议选择网络位小于等于19的子网,即网段中至少包含8192个IP地址; 添加Pod子网后,不支持移除已使用的Pod子网,请做好规划。 判断Pod子网IP是否充足 可通过如下方式判断子网IP是否充足: 1、查看监控面板,若Pod子网空闲IP数较少,则可考虑扩容Pod子网 2、查看Pod事件,若出现ip not enough等类似信息,说明Pod子网空闲IP已耗尽 新增Pod子网 可在控制台上配置Pod子网,参考如下步骤: 1、在网络控制台创建新的子网,建议创建给Pod使用的子网的网络位小于等于19,即网段中至少包含8192个IP地址; 2、登录云容器引擎控制台,在左侧导航栏单击集群; 3、在集群列表页面,点击目标集群名称,然后点击配置中心 > 网络配置,如下所示,点击 “添加容器子网”:
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        网络
        Cubecni插件扩容Pod子网
      • DNS解析异常问题排查
        问题现象 接入CoreDNS的业务Pod解析域名概率性失败。 从抓包或检查CoreDNS DNS查询请求日志可以发现,A和AAAA通常在同一时间的出现,并且请求的源端口一致。 问题原因 并发A和AAAA的DNS请求触发Linux内核Conntrack模块缺陷,导致UDP报文丢失。 解决方案 考虑采用NodeLocal DNSCache缓存方案,提升DNS解析性能,降低CoreDNS负载。 CentOS、Ubuntu等基础镜像,可以通过options timeout:2 attempts:3 rotate singlerequestreopen等参数优化。 如果容器镜像是以Alpine制作的,建议更换基础镜像。 PHP类应用短连接解析问题较多,如果使用的是PHP Curl的调用,可以使用CURLIPRESOLVEV4参数仅发送IPv4解析。 NodeLocal DNSCache未生效 问题现象 NodeLocal DNSCache没有流量进入,所有请求仍在CoreDNS上。 问题原因 未配置DNSConfig注入,业务Pod实际仍配置了CoreDNS kubedns服务IP作为DNS服务器地址。 业务Pod采用Alpine作为基础镜像,Alpine基础镜像会并发请求所有nameserver,包括本地缓存和CoreDNS。 解决方案 配置DNSConfig自动注入。 如果容器镜像是以Alpine制作的,建议更换基础镜像。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        常见问题
        域名DNS
        DNS解析异常问题排查
      • 服务等级协议
        本节介绍了该产品的服务等级协议。 产品服务等级协议,详情请参见这里
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        相关协议
        服务等级协议
      • 自定义存储资源对象
        自定义通用PV 当需要手动静态制备PV时,可以通过自定义通用PV的方式。使用时,通过创建PVC时使用分配模式为“已有PV”进行绑定。 登录“云容器引擎”管理控制台; 在集群列表页点击进入指定集群; 进入主菜单“存储”——“持久卷”,单击左上角“创建持久卷”; 在创建对话框,配置持久卷PV的相关参数。配置项说明如下: 配置项 说明 名称 PV的名称 持久卷 这里选择“通用” 容量 可以根据需求自定义容量 访问模式 1、ReadWriteOnce:卷可以被一个节点以读写方式挂载 2、ReadOnlyMany:卷可以被多个节点以只读方式挂载 3、ReadWriteMany:卷可以被多个节点以读写方式挂载 回收策略 PV对象的回收策略表示当PVC释放时如何处理该数据卷。 回收策略包括: 1、Retained(保留):用户可以手动回收资源。当PVC对象被删除时,PV卷仍然存在,对应的数据卷被视为"已释放(released)"。 2、Deleted(删除):对于支持Delete回收策略的卷插件,删除动作会将PV对象从Kubernetes中移除,同时也会从外部基础设施中移除所关联的存储资产。 标签 用于对PV对象进行标记和分类的元数据属性,可以赋予PV以自定义的属性或标识。 高级选项 支持选择持久卷类型。PV持久卷是用插件的形式来实现的,目前控制台开放两种类型: 1、NFS:能将 NFS (网络文件系统)挂载到Pod中。需要指定NFS Server地址、NFS目录。 2、Local:local卷代表的是某个被挂载的本地存储设备,例如磁盘、分区或者目录。local卷只能用作静态创建的持久卷,不支持动态配置。 local类型需要指定LocalPV所在节点及目录。 参数配置完成后,点击“确定”。创建成功后,可以在持久卷列表查看,此时PV状态为“可用”。 进入主菜单“存储”——“持久卷声明”,单击左上角“创建持久卷声明”,分配模式选择“已有持久卷”,持久卷名称选择上述自定义PV名称; 参数配置完成后,点击“确定”。创建成功后,可以在持久卷声明列表查看。 进入持久卷声明列表页,等待PVC状态为“已绑定” 。 通用持久卷YAML示例如下,以NFS类型为例: apiVersion: v1 kind: PersistentVolume metadata: name: {PVNAME} spec: capacity: storage: 1Gi volumeMode: Filesystem accessModes: ReadWriteOnce persistentVolumeReclaimPolicy: Retained mountOptions: hard nfsvers4.1 nfs: path: /tmp server: {NFSSERVERADDRESS}
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        存储
        自定义存储资源对象
      • 存储卷
        存储卷配额说明 部分存储类型在每个节点的挂载数量是有限制的。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        存储
        存储卷
      • kubelet配置
        本页主要介绍云容器引擎产品的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的安全使用
        本节介绍云容器引擎的最佳实践:密钥Secret的安全使用。 在Kubernetes中,您可以使用Secret对象来存储敏感信息,例如密码、OAuth令牌和ssh密钥等。但Secret在etcd中以base64编码格式存储,base64编码不等于加密。因此建议用如下方式使用Secret。 严格限制Secret权限 通过文件挂载的方式使用Secret时,容器内映射的文件权限默认为0644,建议为其配置更严格的权限,例如: apiversion: v1 kind: Pod metadata: name: podauth spec: containers: name: mypod image: nginx volumeMounts: name: example mountPath: "/etc/example" volumes: name: example secret: secretName: mysecret defaultMode: 256 其中“defaultMode: 256”,256为10进制,对应八进制的0400权限。 “隐藏”Secret文件 使用文件挂载的方式时,通过配置Secret的文件名实现文件在容器中“隐藏”的效果: apiVersion: v1 kind: Secret metadata: name: mysecretfile data: .mysecretfile: dmFsdWUtMg0KDQo apiVersion: v1 kind: Pod metadata: name: mysecretfilepod spec: volumes: name: myvolume secret: secretName: mysecretfile containers: name: secretcontainer image: nginx command: ls "1" "/etc/volume" volumeMounts: name: myvolume readOnly: true mountPath: "/etc/volume" 这样.mysecretfile目录在/etc/volume/路径下通过“ls l”查看不到,但可以通过“ls al”查看到。 加密Secret文件内容 用户应在创建Secret前自行加密敏感信息,使用时再解密。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        安全
        密钥Secret的安全使用
      • 容器定时伸缩(CronHPA)
        使用CronHPA调整HPA伸缩范围 CronHPA支持定时调整HPA策略的最大和最小实例数,满足复杂场景下的工作负载伸缩。 由于HPA与CronHPA均通过scaleTargetRef字段来获取伸缩对象,如果CronHPA和HPA同时设置Deployment为伸缩对象,两个伸缩策略相互独立,后执行的操作会覆盖先执行的操作,导致伸缩效果不符合预期,因此需避免这种情况发生。 当CronHPA与HPA兼容使用时,需要将CronHPA中的scaleTargetRef字段设置为HPA策略,而HPA策略的scaleTargetRef字段设置为Deployment,这样CronHPA策略会在固定的时间调整HPA策略的实例数量上下限,即可实现工作负载定时伸缩和弹性伸缩的兼容。 步骤 1 为Deployment创建HPA策略。 plaintext apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: nginxdeploymentbasichpa namespace: default spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginxdeploymentbasic minReplicas: 3 maxReplicas: 10 metrics: type: Resource resource: name: cpu target: type: Utilization averageUtilization: 32 步骤 2 创建CronHPA策略,并关联步骤1中创建的HPA策略。 plaintext apiVersion: autoscaling.ctyun.com/v1beta1 kind: CronHorizontalPodAutoscaler metadata: labels: controllertools.k8s.io: "1.0" name: cronhpasample spec: scaleTargetRef: apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler name: nginxdeploymentbasichpa jobs: name: "scalea" schedule: "0 51 " targetSize: 1 name: "scaleb" schedule: "0 58 " targetSize: 3 在CronHPA与HPA共同使用时,CronHPA规则是在HPA策略的基础上生效的,CronHPA不会直接调整Deployment的副本数目,而是通过HPA来操作Deployment,因此了解以下参数可帮助您更好地理解其工作原理。 CronHPA的目标实例数(targetReplicas):表示CronHPA设定的实例数,在CronHPA生效时用于调整HPA的最大/最小实例数,从而间接调整Deployment实例数。 HPA的最小实例数(minReplicas):Deployment的实例数下限。 HPA的最大实例数(maxReplicas):Deployment的实例数上限。 Deployment的实例数(replicas):CronHPA策略生效之前Deployment的Pod数量。 在CronHPA规则生效时,通过比较目标实例数(targetReplicas)与实际Deployment的实例数,并结合HPA的最小实例数或最小实例数的数值大小,来调整Deployment实例数的上下限值。 下表格以举例的形式说明了不同场景下CronHPA修改HPA的情况。 扩缩容条件 扩缩容结果 兼容规则说明 HPA(min/max) CronHPA目标副本数 当前副本数 扩缩容结果 兼容规则说明 1/10 5 5 HPA(min/max):1/10 副本数:5 当CronHPA中的目标副本数和当前副本数一致时,HPA中的minReplicas和maxReplicas以及当前的副本数无需变更。 1/10 4 5 HPA(min/max):1/10 副本数:5 当CronHPA中的目标副本数低于当前副本数时,保留当前副本数。 1/10 6 5 HPA(min/max):6/10 副本数:6 当CronHPA中的目标副本数高于当前副本数时,保留CronHPA的目标副本数。 CronHPA目标副本数高于HPA的minReplicas时,修改HPA的副本数下限。 5/10 4 5 HPA(min/max):4/10 副本数:5 当CronHPA中的目标副本数低于当前副本数时,保留当前应用副本数。 当CronHPA目标副本数低于HPA的minReplicas时,修改HPA的副本数下限。 5/10 11 5 HPA(min/max):11/11 副本数:11 当CronHPA中的目标副本数高于当前副本数时,保留CronHPA的目标副本数。 当CronHPA目标副本数高于HPA的maxReplicas时,修改HPA的副本数上限。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        弹性伸缩
        工作负载弹性伸缩
        容器定时伸缩(CronHPA)
      • 容器磁盘读写限速
        本节介绍 容器磁盘读写限速的用户指南。 通过容器磁盘读写限速,可以帮助用户为不同应用配置磁盘带宽与 IOPS 限制,实现资源隔离与性能保障。 适用场景 需要防止单一容器占用过多磁盘带宽或 IOPS,影响其他业务。 希望为关键业务或普通业务设置不同的磁盘性能等级。 功能说明 支持通过 Pod 注解,分别限制容器的磁盘读写带宽与 IOPS: 注解 含义 koordinator.sh/blkioQOS Pod 磁盘限速 JSON 注解 注意 通过 koordinator.sh/blkioQOS 注解,以 JSON 格式配置具体设备的读写带宽/IOPS,单位为字节/秒。需根据实际设备名和需求填写。 配置方法 在 Pod/Deployment YAML 的 metadata.annotations 字段中添加 koordinator.sh/blkioQOS 注解。例如: plaintext apiVersion: apps/v1kind: Deploymentmetadata: name: fiotest namespace: demospec: replicas: 1 template: metadata: labels: app: fiotest annotations: koordinator.sh/blkioQOS: { "blocks": [ { "name": "/dev/vda", "type": "device", "ioCfg": { "readBPS": 10485760, "writeBPS": 10485760 } } ] } spec: containers: name: fio image: fio:latest command: ["sleep", "9999999"] volumeMounts: name: testvolume mountPath: /test volumes: name: testvolume hostPath: path: /var/lib/fiotest type: DirectoryOrCreate
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        调度
        在离线混部
        容器磁盘读写限速
      • 应用高可用部署推荐
        本节介绍云容器引擎的最佳实践: 应用高可用部署推荐。 基本原则 可参考如下几点,实现容器应用高可用部署: 1. 集群控制节点高可用,控制节点数大于等于3; 2. 集群需有多个属于不同可用区的节点,业务根据自身需求合理配置调度策略,以实现多可用区部署及资源均匀分配; 3. 创建多个在不同可用区的节点池,通过节点池做节点伸缩; 4. 工作负载实例数需大于等于2; 5. 配置工作负载的亲和性规则,让Pod尽量分布在不同可用区、不同节点上。 操作步骤 假设集群3个控制节点和3个工作节点,工作节点可用区分布如下所示: $ kubectl get node L topology.kubernetes.io/zone grep v master NAME STATUS ROLES AGE VERSION ZONE ccseagent1b54ffbc17 Ready 40m v1.25.6 cnxinan11A ccseagent59ab9e7689 Ready 38m v1.25.6 cnxinan12A ccseagenta7527e3e80 Ready 36m v1.25.6 cnxinan13A 创建工作负载,如下所示,定义两条podAntiAffinity反亲和性规则: 工作负载多实例配置可用区反亲和,参数设置如下: 权重weight:权重值越高会被优先调度,本示例设置为50; 拓扑域topologyKey:为节点标签,用于指定调度时的作用域,下述示例为topology.kubernetes.io/zone,该标签用于识别节点在哪个可用区。 标签选择labelSelector:选择Pod的标签,与工作负载本身反亲和。 工作负载多实例配置节点反亲和,参数设置如下: 权重weight:设置为50; 拓扑域topologyKey:为标签kubernetes.io/hostname,该标签值为节点名; 标签选择labelSelector:即工作负载多个实例Pod的标签,实例间反亲和。 kind: Deployment apiVersion: apps/v1 metadata: name: demo namespace: default spec: replicas: 2 selector: matchLabels: app: demo template: metadata: labels: app: demo spec: containers: name: container0 image: nginx:latest resources: limits: cpu: 300m memory: 512Mi requests: cpu: 400m memory: 512Mi affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: weight: 50 podAffinityTerm: labelSelector:
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容灾
        应用高可用部署推荐
      • 集群命名空间RBAC授权
        本节介绍了云容器引擎的最佳实践; 集群命名空间RBAC授权。 应用现状 云容器引擎的权限控制有两种:集群权限和命名空间权限,以下篇幅将介绍云容器引擎针对集群权限的ClusterRole的创建、权限绑定和验证做简单介绍。 RBAC(RoleBased Access Control) 是基于角色(Role)的访问控制。您可以通过RBAC将权限和集群角色关联,以达到为不同的角色成员配置不同的权限,从而降低账号的安全风险。RBAC的Kubernetes对象的Role或者ClusterRole中包含一组代表相关权限的规则。Role用来在某个命名空间内设置访问权限,ClusterRole则是用于为集群范围的资源定义访问权限。 权限策略说明 您可自行编写权限策略,或通过云容器引擎的控制台创建自定义策略。 ClusterRole创建 针对您要定义集群范围的角色,那么请使用ClusterRole。下面是一个创建ClusterRole的YAML示例。 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: clusterRoletest rules: apiGroups: metrics.k8s.io resources: pods verbs: get list watch 关于ClusterRole或者Role的更多信息,请参见Role和ClusterRole。 预置角色权限说明 预置角色 集群内RBAC权限 管理员 对集群所有命名空间下 Kubernetes 资源的 RBAC 读写权限, 对集群节点、存储卷、命名空间、配额的读写权限 运维人员 对集群所有命名空间下控制台可见 Kubernetes 资源的 RBAC 读写权限, 对集群节点、存储卷、命名空间、配额的只读权限 开发人员 对集群所有命名空间或所选命名空间下控制台可见 Kubernetes 资源的 RBAC 读写权限 受限人员 对集群所有命名空间或所选命名空间下控制台可见 Kubernetes 资源的 RBAC 只读权限 自定义 权限由您所选择的 ClusterRole 决定,请在确定所选 ClusterRole 对各类资源的操作权限后再进行授权,以免子账号获得不符合预期的权限
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        权限
        集群命名空间RBAC授权
      • 通过特权容器配置内核参数
        本节介绍了云容器引擎的最佳实践:通过特权容器配置内核参数。 前提条件 开通特权容器需要通过命令行模式连接到目标集群,所以需要先保存集群kubeconfig,并且配置好kubectl环境。 注意 修改主机的内核配置可能会对系统的稳定性和安全性产生影响,因此在进行这些操作时请谨慎考虑,并确保您具备足够的了解和经验。 后台操作流程 编写应用yaml,创建特权容器,示例如下: kind: DaemonSet apiVersion: apps/v1 metadata: name: daemonsettest labels: name: daemonsettest spec: selector: matchLabels: name: daemonsettest template: metadata: labels: name: daemonsettest spec: hostNetwork: true containers: name: daemonsettest image: nginx:alpine command: "/bin/sh" args: "c" while :; do time$(date);done imagePullPolicy: IfNotPresent lifecycle: postStart: exec: command: sysctl "w" net.ipv4.tcptwreuse1 securityContext: privileged: true imagePullSecrets: name: defaultsecret spec.spec.containers.lifecycle 字段是指容器启动后执行设置的命令;spec.spec.containers.securityContext.privileged: true是指开启特权容器。 使用以上yaml文件创建特权容器:kubectl apply f daemonsettest.yaml 执行后查看是否容器启动成功:kubectl get daemonset 当看到READY数量跟节点数量相同时,说明已经全部创建成功,则可以在当前主机执行kubectl get po grep daemonsettest 或者docker ps grep daemonsettest查找对应容器。 通过命令 docker exec it 356d0e5a831c /bin/sh 或 kubectl exec it podname bash 进入容器内部,然后执行命令sysctl a grep net.ipv4.tcptwreuse查看对应的内容是否有修改命令行终端确认修改系统参数成功。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        通过特权容器配置内核参数
      • 使用hostAliases配置Pod /etc/hosts
        本节介绍云容器引擎的最佳实践:使用hostAliases配置Pod /etc/hosts。 使用场景 DNS配置不满足要求时,可以通过配置 hostAliases 向pod的“/etc/hosts”文件中添加域名解析条目。 操作步骤 进入云容器引擎集群控制台 选择工作负载>无状态>创建Deployment 点击高级配置,设置主机别名配置 远程登录pod查看配置的 hostAliases 是否正常,执行如下命令:
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        使用hostAliases配置Pod /etc/hosts
      • 容器与节点时区同步
        容器、容器日志时间与节点同步 容器和节点时间同步后,容器的日志时间戳仍可能与节点时间相差8小时。比较典型的应用场景是容器的工作进程为使用tomcat应用。 tomcat应用的日志输出默认使用UTC时间,即便容器与节点时间已经同步,应用的日志输出也会相差8小时,该问题需要在构建镜像阶段解决。 1、先获取基础tomcat镜像的catalina.sh脚本 mkdir tmp docker run rm tomcat: v tmp:/mnt cp /usr/local/tomcat/bin/catalina.sh /mnt/catalina.sh 2、修改catalina.sh脚本的JAVAOPTSshell变量,添加Duser.timezoneGMT+08配置项 JAVAOPTS"$JAVAOPTS Djava.protocal.handler.pkgsorg.apache.catalina.webresources Duser.timezoneGMT+08" 3、使用Dockerfile重建tomcat应用容器镜像,将修改后的catalina.sh脚本拷贝到构建目录,然后在Dockerfile中添加下列构建指令 COPY catalina.sh /usr/local/bin/tomcat/bin/catalina.sh
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        容器
        容器与节点时区同步
      • 使用OceanFS静态存储卷(sharePath模式)
        2、创建持久卷声明(PVC) 使用kubectl连接集群,创建示例yaml文件pvcexample.yaml: plaintext apiVersion: v1 kind: PersistentVolumeClaim metadata: name: {YOURPVCNAME} namespace: default spec: accessModes: ReadWriteOnce resources: requests: storage: 100Gi volumeMode: Filesystem volumeName: {YOURPVNAME} 替换PV名称 执行以下命令,创建PVC plaintext kubectl apply f pvcexample.yaml 查看创建的PVC: 登录“云容器引擎”管理控制台; 在集群列表页点击进入指定集群; 进入主菜单“存储”——“持久卷声明”,在列表查看。 3、创建工作负载 使用kubectl连接集群,创建示例yaml文件stsexample.yaml: plaintext apiVersion: "apps/v1" kind: "StatefulSet" metadata: name: "oceanfsstest" namespace: "default" spec: podManagementPolicy: "OrderedReady" replicas: 1 revisionHistoryLimit: 10 serviceName: "" template: spec: containers: image: "nginx:1.25alpine" imagePullPolicy: "IfNotPresent" name: "container1" resources: limits: cpu: "100m" memory: "256Mi" requests: cpu: "100m" memory: "256Mi" terminationMessagePath: "/dev/terminationlog" terminationMessagePolicy: "File" volumeMounts: mountPath: "/ccetmp" name: "volume1" dnsPolicy: "ClusterFirst" restartPolicy: "Always" schedulerName: "defaultscheduler" securityContext: {} terminationGracePeriodSeconds: 30 volumes: name: "volume1" persistentVolumeClaim: claimName: {YOURPVCNAME} 替换为步骤2中的PVC名称 updateStrategy: rollingUpdate: partition: 0 type: "RollingUpdate" 执行以下命令,创建StatefulSet plaintext kubectl apply f stsexample.yaml 查看创建的有状态负载: 登录“云容器引擎”管理控制台,在集群列表页点击进入指定集群。进入主菜单“工作负载”——“有状态”,在列表查看。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        存储
        海量文件
        使用OceanFS静态存储卷(sharePath模式)
      • 服务发布
        新版本服务。 path: / backend: service: name: newnginx port: number: 80 pathType: ImplementationSpecific 查看路由访问情况。执行以下命令,访问服务。 curl H"Host: www.ctyun.com" 预期输出: old 执行以下命令,请求头中满足foobar的客户端请求访问服务。 curl H"Host: www.ctyun.com"H"foo: bar" 预期输出: new 重复执行以上命令。可以看到,仅请求头中满足foobar的客户端请求,且只有50%的流量才能路由到新版本服务。重复执行以上命令。可以看到,仅请求头中满足foobar的客户端请求,且只有50%的流量才能路由到新版本服务。按照以下内容,修改步骤2创建的Ingress。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: grayreleasecanary annotations: 开启Canary。 nginx.ingress.kubernetes.io/canary: "true" 仅允许50%的流量会被路由到新版本服务newnginx中。 默认总值为100。 nginx.ingress.kubernetes.io/canaryweight: "50" spec: rules: host: www.ctyun.com http: paths: 新版本服务。 path: / backend: service: name: newnginx port: number: 80 pathType: ImplementationSpecific 执行以下命令,查看路由访问情况。 curl H"Host: www.ctyun.com" 重复执行以上命令,可以看到仅50%的流量路由到新版本服务。 步骤三:删除老版本服务基于Helm的发布管理 系统运行一段时间后,当新版本服务已经稳定并且符合预期后,需要下线老版本的服务,仅保留新版本服务在线上运行。为了达到该目标,需要将旧版本的Service指向新版本服务的Deployment,并且删除旧版本的Deployment和新版本的Service。修改旧版本Service,使其指向新版本服务。 apiVersion:v1 kind: Service metadata: name:oldnginx spec: ports: port:80 protocol:TCP targetPort:80 selector:
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        发布
        服务发布
      • 设置容器规格
        资源使用超出限制 如果容器使用资源超过限制,可能会被Kubernetes终止。检查应用程序代码,确保资源使用在合理范围内。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        用户指南
        工作负载(旧版)
        设置容器规格
      • 容器内获取客户端源IP
        本节介绍云容器引擎的最佳实践:容器内获取客户端源IP。 客户端真实源IP地址可以用于分析网站流量和用户行为。通过分析来源IP地址,可以了解用户的地理位置、浏览器偏好和其他用户行为指标。这些数据可以用于优化网站设计、定位目标受众和改善用户体验。 在容器化场景下,客户端和容器服务端之间可能存在多种代理服务器,外部请求在经过多次转发后,容器中服务无法获取到客户端真实源IP。 场景介绍 不同请求类型,获取客户端真实IP说明如下: 类型 说明 HTTP/HTTPS请求 通过在ELB监听器开启XForwardedFor,业务应用可以通过XForwardedFor头部提取到源地址,从而获得客户端真实IP。 TCP请求 通过在后端主机配置TOA插件获取客户端的真实源IP地址。TOA是操作系统的内核模块,需要在ELB后端主机中安装TOA插件,以实现后端主机可获取客户端真实源IP地址的目的。 对于HTTP/HTTPS请求,具体实现分为以下两类: 服务类型 说明 负载均衡 ELB访问方式,是通过弹性负载均衡ELB产品来实现负载均衡。通过创建LoadBalancer SVC时,指定注解方式开启XForwardedFor。当通过ELB访问工作负载时,可以通过XForwardedFor头部提取到源地址。 节点端口(NodePort) NodePort访问方式,是将容器端口映射到节点端口,实现获取客户端源IP有以下方式: 当配置SVC外部流量策略为Local时,表示请求不经过转发,可以获取客户端源ip; 当配置SVC外部流量策略为Cluster时,需要通过手动创建监听器及后端主机组,开启XForwardedFor实现。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        网络
        容器内获取客户端源IP
      • 如何将Ingress服务暴露到公网
        本节介绍了云容器引擎的最佳实践:如何将Ingress服务暴露到公网。 如果你是通过Ingress访问你的服务,并且想通过公网访问,可为集群Ingress服务配置天翼云ELB。 具体配置步骤如下: 1、登录到控制台,进入服务所在的集群,选择菜单“网络“>”服务“,命名空间选择“kubesystem”,点击”创建服务“按钮。 2、其中负载均衡一栏,选择公网访问,从列表中选择一个要绑定的负载均衡(如果列表为空,请确认你是否有可用的负载均衡,没有的话,请先到ELB控制台创建)。 端口映射一栏,填写好容器端口和服务端口(该端口是负载均衡的监听端口)。如下所示: 注意 nginxingresscontroller pod 默认的http端口是10080,默认的https端口是10443。 如需修改,可以到nginxingresscontroller插件yaml修改端口号。 3、工作负载绑定一栏,类型选择Deployment,名称选择nginxingresscontrollernginxingresscontroller,然后点击提交。 注意 选择工作负载前请先确认nginxingresscontroller插件的版本,如果版本小于1.3.5,这里工作负载类型应选择DaemonSet 4、待ELB绑定后,即可通过服务列表中“集群外访问”中的外网地址访问服务了。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        网络
        如何将Ingress服务暴露到公网
      • CoreDNS配置优化实践
        监控CoreDNS状态 云容器引擎监控组件默认配置了CoreDNS相关的指标监控和告警规则。具体安装操作请参见集群监控。 合理调整集群CoreDNS部署状态 CoreDNS应部署于您的Kubernetes集群中,默认情况下与您的业务容器运行在同样的集群节点上,注意事项如下: 合理调整CoreDNS副本数 合理分配CoreDNS副本运行的位置 手动扩容副本数 基于CPU负载指标自动扩容副本数(HPA) 合理调整CoreDNS副本数 建议您在任何情况下设置CoreDNS副本数应至少为2,且副本数维持在一个合适的水位以承载整个集群的解析。 CoreDNS所能提供的域名解析QPS与CPU消耗成正相关,开启缓存的情况下,单个CPU可以支撑10000+ QPS的域名解析请求。不同类型的业务对域名请求的QPS需求存在较大差异,您可以观察每个CoreDNS副本的峰值CPU使用量,如果其在业务峰值期间占用CPU大于一核,建议您对CoreDNS进行副本扩容。无法确定峰值CPU使用量时,可以保守采用副本数和集群节点数1:8的比值来部署,即每扩容8个集群节点,增加一个CoreDNS副本,但副本数不应大于10。针对100节点以上的集群,推荐使用节点DNS缓存NodeLocal DNSCache。 当集群节点数目长时间较为固定时,可以手动扩容副本数。 如果集群节点数持续增长,可以设置自动扩容副本数。
        来自:
        帮助文档
        云容器引擎 专有版/托管版
        最佳实践
        网络
        CoreDNS配置优化实践
      • 1
      • ...
      • 180
      • 181
      • 182
      • 183
      • 184
      • ...
      • 240
      跳转至
      推荐热词
      天翼云运维管理审计系统天翼云云服务平台云服务备份云日志服务应用运维管理云手机云电脑天翼云云hbase数据库电信云大数据saas服务电信云大数据paas服务轻量型云主机天翼云客户服务电话应用编排服务天翼云云安全解决方案云服务总线CSB天翼云服务器配置天翼云联邦学习产品天翼云云安全天翼云企业上云解决方案天翼云产品天翼云视频云存储

      天翼云最新活动

      安全隔离版OpenClaw

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

      天翼云新春焕新季

      云主机开年特惠28.8元/年,0元秒杀等你来抢!

      云上钜惠

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

      中小企业服务商合作专区

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

      出海产品促销专区

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

      天翼云奖励推广计划

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

      产品推荐

      多活容灾服务

      轻量型云主机

      弹性伸缩服务 AS

      弹性高性能计算 E-HPC

      天翼云CTyunOS系统

      训推服务

      应用托管

      科研助手

      智算一体机

      推荐文档

      编辑

      分布式消息服务的功能

      • 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号