Statefulset管理

容器引擎 CCE

  • 功能发布记录
  • 产品描述
    • 介绍
    • 优势
    • 使用限制
    • 应用场景
    • 核心概念
    • 特性
  • 开发指南
    • EFK日志采集系统部署指南
    • 创建LoadBalancer类型的Service
    • Prometheus监控系统部署指南
    • kubectl管理配置
    • 在CCE集群中使用-Network-Policy
  • 常用工具
    • 视图命令行场景示例
  • 产品公告
    • CCE 新版集群管理发布公告
    • CCE 控制台升级公告
    • Kubernetes 版本发布说明
      • CCE发布Kubernetes 1.18版本说明
      • CCE发布Kubernetes 1.30版本说明
      • CCE Kubernetes 版本更新说明
      • CCE发布Kubernetes 1.22版本说明
      • CCE发布Kubernetes 1.20版本说明
      • CCE发布Kubernetes 1.28版本说明
      • CCE发布Kubernetes 1.24版本说明
      • CCE发布Kubernetes 1.26版本说明
    • 安全漏洞修复公告
      • 漏洞CVE-2020-14386修复公告
      • 修复漏洞CVE-2021-30465公告
      • 漏洞CVE-2019-5736修复公告
      • 漏洞CVE-2025-1097、CVE-2025-1098等修复公告
      • 关于 runc 的安全问题(CVE-2024-21626)影响声明
  • 快速入门
    • 快速部署nginx应用
    • 使用CCE容器引擎流程概述
  • 典型实践
    • CCE集群网络说明及规划
    • CCE典型实践之容器网络模式选择
    • Pod异常问题排查
    • 通过 CCE Ingress 实现虚机和容器服务的统一接入
    • CCE集群使用Jenkins持续发布
    • CCE-访问公网实践
    • Linux系统配置常用参数说明
    • 用户使用自定义 CNI 插件方法
    • CCE典型实践之Guestbook搭建
    • 使用KMS对etcd数据加密
    • 添加CGroup V2节点
    • CCE容器运行时选择
    • CCE使用检查清单
    • VPC-ENI模式集群访问公网实践
    • 利用 Velero 实现将应用跨云迁移到 百度CCE
    • 使用 CNI 配置容器内网络参数
    • CCE Resource Recommender 用户文档
    • CCE集群中使用私有镜像实践
    • 云原生AI
      • 使用 CCE AITraining Operator 实现弹性容错训练
      • 部署 TensorFlow Serving 推理服务
      • GPU虚拟化之隔离性最优型的最佳实践
  • 操作指南
    • 多用户访问控制
    • 使用须知
    • 命名空间管理
      • 设置资源配额
      • 设置资源限制
      • 命名空间基本操作
    • 弹性伸缩
      • 使用 cce-autoscaling-placeholder 实现秒级弹性伸缩
      • CCE 集群节点自动伸缩
      • 容器定时水平伸缩(CronHPA)
      • 容器水平伸缩(HPA)
    • 存储管理
      • 使用云盘CDS
      • 使用并行文件存储PFS
      • 使用对象存储BOS
      • 使用并行文件存储PFS L2
      • 使用本地存储
      • 使用数据湖存储加速工具RapidFS
      • 使用文件存储CFS
      • 概述
    • 节点管理
      • 移出节点
      • kubelet容器监控只读端口风险提示
      • 管理污点
      • 设置GPU显存共享
      • 添加节点
      • 自定义Kubelet参数
      • 设置节点封锁
      • 节点排水
      • 管理节点标签
    • 组件管理
      • CCE CSI BOS Plugin 说明
      • Kube Scheduler 说明文档
      • CCE CSI PFS L2 Plugin
      • CCE NodeLocal DNSCache 说明
      • CCE Ingress NGINX Controller 说明
      • CCE RDMA Device Plugin 说明
      • CCE Node Problem Detector 说明
      • CCE Credential Controller 说明
      • Kube Controller Manager 说明
      • CCE Ingress Controller 说明
      • CCE GPU Manager 说明
      • CCE Backup Controller 说明
      • CCE QoS Agent 说明
      • CCE Descheduler 说明
      • 组件概述
      • CCE Image Accelerate 说明
      • CCE Network Plugin说明
      • Kube ApiServer 说明
      • CCE Log Operator 说明
      • CoreDNS 说明
      • CCE NPU Manager 说明
      • CCE AI Job Scheduler 说明
      • CCE LB Controller 说明
      • CCE P2P Accelerator 说明
      • CCE_Hybrid_Manager说明
      • CCE CSI PFS Plugin 说明
      • CCE Deep Learning Frameworks Operator 说明
      • CCE Node Remedier 说明
      • CCE CSI CDS Plugin 说明
      • CCE Ascend Mindx DL说明
      • CCE Calico Felix 说明
      • CCE Virtual Kubelet组件
      • CCE Fluid说明
      • CCE Onepilot 说明
      • CCE CronHPA Controller 说明
      • CCE 动态调度插件说明
    • 云原生AI
      • 云原生AI概述
      • GPU虚拟化
        • MPS 最佳实践&注意事项
        • GPU独占和共享说明
        • GPU在离线混部使用说明
        • GPU虚拟化适配表
        • 单GPU容器共享多卡使用说明
        • 共享GPU场景下的镜像构建注意事项
        • 关闭节点显存共享功能注意事项
      • 队列管理
        • 逻辑队列和物理队列使用说明
        • 修改队列
        • 删除队列
        • 新建队列
      • 任务管理
        • 基于 NCCL的RDMA分布式训练示例
        • 新建AITraining任务
        • 新建PaddlePaddle任务
        • 删除任务
        • 查看任务信息
        • 新建Mxnet任务
        • 新建TensorFlow任务
        • 新建Pytorch任务
      • 数据集管理
        • 删除数据集
        • 操作数据集
        • 查看数据集
        • 新建数据集
      • AI监控大盘
        • 接入监控实例并开启采集任务
        • NVIDIA芯片资源观测
          • AI Job Scheduler组件
          • GPUManager组件
          • GPU资源池总览
          • GPU节点资源
          • GPU工作负载资源
        • 昇腾芯片资源观测
          • 昇腾节点资源
          • 昇腾资源池总览
          • 昇腾工作负载资源
      • AI 加速套件
        • 使用AIAK-Inference 加速推理业务
        • 使用AIAK-Training Pytorch版
        • AIAK 简介
        • 使用 AIAK-Training 部署分布式训练任务
    • Helm管理
      • Helm模板
      • Helm实例
    • 应用管理
      • 部署
      • 保密字典
      • 服务
      • 配置字典
      • 容器组
      • 概述
    • 镜像仓库
      • 使用容器镜像构建服务
      • 镜像仓库基本操作
    • Serverless集群
      • 在Serverless集群中使用Service
      • 产品概述
      • 创建Serverless集群
    • 工作负载
      • 设置工作负载自动水平伸缩
      • Statefulset管理
      • 使用私有镜像创建工作负载
      • Job管理
      • 查看容器组
      • CronJob管理
      • Daemonset管理
      • 免密拉取容器镜像
      • Deployment管理
    • 节点组管理
      • 节点组管理
      • 节点组介绍
      • 升级节点组
      • 添加外部已有节点
      • 自定义节点组 Kubelet 配置
      • 添加备选机型
      • 节点组节点故障检测自愈
      • 配置扩缩容策略
    • 监控日志
      • 使用Prometheus监控集群
      • CCE 事件中心
      • 集群审计仪表盘
      • CCE 集群异常事件报警
      • Java应用监控
      • 集群服务画像
      • 日志管理
      • 集群审计
      • 日志中心
        • 在容器引擎控制台配置采集规则
        • 查看集群控制面日志
        • 日志概述
        • 查看业务日志
        • 使用CRD配置采集规则
    • 网络管理
      • CCE 集群内容器访问集群外服务
      • 容器网段空间耗尽如何继续扩容(VPC-ENI模式)
      • 容器网段空间耗尽如何继续扩容(VPC网络模式)
      • CCE IP Masquerade Agent 用户指南
      • 创建VPC-ENI模式集群
      • 对等连接场景下容器流量转发配置
      • 使用Network Policy网络策略
      • CCE 支持 IPv4 和 IPv6 双栈网络
      • 在CCE集群中使用NetworkPolicy
      • 网络编排
        • 集群 Pod 子网拓扑分布(容器网络 v2)
        • 容器网络 QoS 管理
        • VPC-ENI指定子网分配IP(容器网络 v2)
      • 网络连通性
        • 容器网络通过 NAT 网关访问公网
      • 网络维护
        • CCE容器网络常见错误码对应表
      • DNS
        • DNS 原理概述
        • DNS 问题排查指南
        • CoreDNS 组件手动升级指南
    • 虚拟节点
      • 管理虚拟节点
      • 配置BCIPod
      • 配置bci-profile
    • 备份中心
      • 备份概述
      • 恢复管理
      • 备份仓库
      • 备份管理
    • 巡检与诊断
      • GPU运行环境检查
      • 集群巡检
      • 故障诊断
    • 流量接入
      • NGINX Ingress 使用配置参考
      • CCE基于nginx-ingress实现灰度发布
      • BLB Ingress Annotation说明
      • 通过CCE使用K8S_Ingress
      • 通过YAML创建LoadBalancer_Service
      • 通过CCE使用K8S_Service
      • LoadBalancer Service Annotation说明
      • 使用直连 Pod 模式 LoadBalancer Service
      • Service复用已有负载均衡BLB
      • 通过YAML创建CCE_Ingress
      • 使用 NGINX Ingress
    • 权限管理
      • 配置集群OIDC认证
      • 配置IAM标签权限策略
      • 配置IAM自定义权限策略
      • 配置IAM预置权限策略
      • 权限概述
      • 配置预置RBAC权限策略
    • 配置管理
      • Secret管理
      • Configmap管理
    • 集群管理
      • 集群快照
      • CCE 安全组
      • 查看集群
      • 创建集群
      • 操作集群
      • 升级集群Kubernetes版本
      • 通过kubectl连接集群
      • 托管集群使用说明
      • CCE 支持 GPUSharing 集群
      • CCE节点资源预留说明
      • CCE 节点 CDS 扩容
  • 服务等级协议SLA
    • CCE服务等级协议SLA(V1.0)
  • Solution-Fabric
    • Fabric解决方案
  • API参考
    • 通用说明
    • 公共头和错误返回
    • 概述
  • 常见问题
    • windows下使用kubectl
    • 自动扩缩容常见问题
    • 通过kubectl创建简单的服务
    • 业务应用如何使用负载均衡?
    • 常见问题总览
    • 集群管理常见问题
  • API_V2参考
    • 通用说明
    • Instance相关接口
    • 附录
    • Autoscaler相关接口
    • 组件管理相关接口
    • 套餐适配相关接口
    • Task相关接口
    • 公共头和错误返回
    • Network相关接口
    • 服务域名
    • Cluster相关接口
    • Kubeconfig相关接口
    • InstanceGroup相关接口
    • RBAC相关接口
    • 概述
  • 产品定价
    • 产品定价
  • Solution-Xchain
    • 超级链解决方案
  • SDK
    • Go-SDK
      • 节点组管理
      • 节点管理
      • 集群管理
      • 初始化
      • 安装SDK工具包
      • 概述
所有文档
menu
没有找到结果,请重新输入

容器引擎 CCE

  • 功能发布记录
  • 产品描述
    • 介绍
    • 优势
    • 使用限制
    • 应用场景
    • 核心概念
    • 特性
  • 开发指南
    • EFK日志采集系统部署指南
    • 创建LoadBalancer类型的Service
    • Prometheus监控系统部署指南
    • kubectl管理配置
    • 在CCE集群中使用-Network-Policy
  • 常用工具
    • 视图命令行场景示例
  • 产品公告
    • CCE 新版集群管理发布公告
    • CCE 控制台升级公告
    • Kubernetes 版本发布说明
      • CCE发布Kubernetes 1.18版本说明
      • CCE发布Kubernetes 1.30版本说明
      • CCE Kubernetes 版本更新说明
      • CCE发布Kubernetes 1.22版本说明
      • CCE发布Kubernetes 1.20版本说明
      • CCE发布Kubernetes 1.28版本说明
      • CCE发布Kubernetes 1.24版本说明
      • CCE发布Kubernetes 1.26版本说明
    • 安全漏洞修复公告
      • 漏洞CVE-2020-14386修复公告
      • 修复漏洞CVE-2021-30465公告
      • 漏洞CVE-2019-5736修复公告
      • 漏洞CVE-2025-1097、CVE-2025-1098等修复公告
      • 关于 runc 的安全问题(CVE-2024-21626)影响声明
  • 快速入门
    • 快速部署nginx应用
    • 使用CCE容器引擎流程概述
  • 典型实践
    • CCE集群网络说明及规划
    • CCE典型实践之容器网络模式选择
    • Pod异常问题排查
    • 通过 CCE Ingress 实现虚机和容器服务的统一接入
    • CCE集群使用Jenkins持续发布
    • CCE-访问公网实践
    • Linux系统配置常用参数说明
    • 用户使用自定义 CNI 插件方法
    • CCE典型实践之Guestbook搭建
    • 使用KMS对etcd数据加密
    • 添加CGroup V2节点
    • CCE容器运行时选择
    • CCE使用检查清单
    • VPC-ENI模式集群访问公网实践
    • 利用 Velero 实现将应用跨云迁移到 百度CCE
    • 使用 CNI 配置容器内网络参数
    • CCE Resource Recommender 用户文档
    • CCE集群中使用私有镜像实践
    • 云原生AI
      • 使用 CCE AITraining Operator 实现弹性容错训练
      • 部署 TensorFlow Serving 推理服务
      • GPU虚拟化之隔离性最优型的最佳实践
  • 操作指南
    • 多用户访问控制
    • 使用须知
    • 命名空间管理
      • 设置资源配额
      • 设置资源限制
      • 命名空间基本操作
    • 弹性伸缩
      • 使用 cce-autoscaling-placeholder 实现秒级弹性伸缩
      • CCE 集群节点自动伸缩
      • 容器定时水平伸缩(CronHPA)
      • 容器水平伸缩(HPA)
    • 存储管理
      • 使用云盘CDS
      • 使用并行文件存储PFS
      • 使用对象存储BOS
      • 使用并行文件存储PFS L2
      • 使用本地存储
      • 使用数据湖存储加速工具RapidFS
      • 使用文件存储CFS
      • 概述
    • 节点管理
      • 移出节点
      • kubelet容器监控只读端口风险提示
      • 管理污点
      • 设置GPU显存共享
      • 添加节点
      • 自定义Kubelet参数
      • 设置节点封锁
      • 节点排水
      • 管理节点标签
    • 组件管理
      • CCE CSI BOS Plugin 说明
      • Kube Scheduler 说明文档
      • CCE CSI PFS L2 Plugin
      • CCE NodeLocal DNSCache 说明
      • CCE Ingress NGINX Controller 说明
      • CCE RDMA Device Plugin 说明
      • CCE Node Problem Detector 说明
      • CCE Credential Controller 说明
      • Kube Controller Manager 说明
      • CCE Ingress Controller 说明
      • CCE GPU Manager 说明
      • CCE Backup Controller 说明
      • CCE QoS Agent 说明
      • CCE Descheduler 说明
      • 组件概述
      • CCE Image Accelerate 说明
      • CCE Network Plugin说明
      • Kube ApiServer 说明
      • CCE Log Operator 说明
      • CoreDNS 说明
      • CCE NPU Manager 说明
      • CCE AI Job Scheduler 说明
      • CCE LB Controller 说明
      • CCE P2P Accelerator 说明
      • CCE_Hybrid_Manager说明
      • CCE CSI PFS Plugin 说明
      • CCE Deep Learning Frameworks Operator 说明
      • CCE Node Remedier 说明
      • CCE CSI CDS Plugin 说明
      • CCE Ascend Mindx DL说明
      • CCE Calico Felix 说明
      • CCE Virtual Kubelet组件
      • CCE Fluid说明
      • CCE Onepilot 说明
      • CCE CronHPA Controller 说明
      • CCE 动态调度插件说明
    • 云原生AI
      • 云原生AI概述
      • GPU虚拟化
        • MPS 最佳实践&注意事项
        • GPU独占和共享说明
        • GPU在离线混部使用说明
        • GPU虚拟化适配表
        • 单GPU容器共享多卡使用说明
        • 共享GPU场景下的镜像构建注意事项
        • 关闭节点显存共享功能注意事项
      • 队列管理
        • 逻辑队列和物理队列使用说明
        • 修改队列
        • 删除队列
        • 新建队列
      • 任务管理
        • 基于 NCCL的RDMA分布式训练示例
        • 新建AITraining任务
        • 新建PaddlePaddle任务
        • 删除任务
        • 查看任务信息
        • 新建Mxnet任务
        • 新建TensorFlow任务
        • 新建Pytorch任务
      • 数据集管理
        • 删除数据集
        • 操作数据集
        • 查看数据集
        • 新建数据集
      • AI监控大盘
        • 接入监控实例并开启采集任务
        • NVIDIA芯片资源观测
          • AI Job Scheduler组件
          • GPUManager组件
          • GPU资源池总览
          • GPU节点资源
          • GPU工作负载资源
        • 昇腾芯片资源观测
          • 昇腾节点资源
          • 昇腾资源池总览
          • 昇腾工作负载资源
      • AI 加速套件
        • 使用AIAK-Inference 加速推理业务
        • 使用AIAK-Training Pytorch版
        • AIAK 简介
        • 使用 AIAK-Training 部署分布式训练任务
    • Helm管理
      • Helm模板
      • Helm实例
    • 应用管理
      • 部署
      • 保密字典
      • 服务
      • 配置字典
      • 容器组
      • 概述
    • 镜像仓库
      • 使用容器镜像构建服务
      • 镜像仓库基本操作
    • Serverless集群
      • 在Serverless集群中使用Service
      • 产品概述
      • 创建Serverless集群
    • 工作负载
      • 设置工作负载自动水平伸缩
      • Statefulset管理
      • 使用私有镜像创建工作负载
      • Job管理
      • 查看容器组
      • CronJob管理
      • Daemonset管理
      • 免密拉取容器镜像
      • Deployment管理
    • 节点组管理
      • 节点组管理
      • 节点组介绍
      • 升级节点组
      • 添加外部已有节点
      • 自定义节点组 Kubelet 配置
      • 添加备选机型
      • 节点组节点故障检测自愈
      • 配置扩缩容策略
    • 监控日志
      • 使用Prometheus监控集群
      • CCE 事件中心
      • 集群审计仪表盘
      • CCE 集群异常事件报警
      • Java应用监控
      • 集群服务画像
      • 日志管理
      • 集群审计
      • 日志中心
        • 在容器引擎控制台配置采集规则
        • 查看集群控制面日志
        • 日志概述
        • 查看业务日志
        • 使用CRD配置采集规则
    • 网络管理
      • CCE 集群内容器访问集群外服务
      • 容器网段空间耗尽如何继续扩容(VPC-ENI模式)
      • 容器网段空间耗尽如何继续扩容(VPC网络模式)
      • CCE IP Masquerade Agent 用户指南
      • 创建VPC-ENI模式集群
      • 对等连接场景下容器流量转发配置
      • 使用Network Policy网络策略
      • CCE 支持 IPv4 和 IPv6 双栈网络
      • 在CCE集群中使用NetworkPolicy
      • 网络编排
        • 集群 Pod 子网拓扑分布(容器网络 v2)
        • 容器网络 QoS 管理
        • VPC-ENI指定子网分配IP(容器网络 v2)
      • 网络连通性
        • 容器网络通过 NAT 网关访问公网
      • 网络维护
        • CCE容器网络常见错误码对应表
      • DNS
        • DNS 原理概述
        • DNS 问题排查指南
        • CoreDNS 组件手动升级指南
    • 虚拟节点
      • 管理虚拟节点
      • 配置BCIPod
      • 配置bci-profile
    • 备份中心
      • 备份概述
      • 恢复管理
      • 备份仓库
      • 备份管理
    • 巡检与诊断
      • GPU运行环境检查
      • 集群巡检
      • 故障诊断
    • 流量接入
      • NGINX Ingress 使用配置参考
      • CCE基于nginx-ingress实现灰度发布
      • BLB Ingress Annotation说明
      • 通过CCE使用K8S_Ingress
      • 通过YAML创建LoadBalancer_Service
      • 通过CCE使用K8S_Service
      • LoadBalancer Service Annotation说明
      • 使用直连 Pod 模式 LoadBalancer Service
      • Service复用已有负载均衡BLB
      • 通过YAML创建CCE_Ingress
      • 使用 NGINX Ingress
    • 权限管理
      • 配置集群OIDC认证
      • 配置IAM标签权限策略
      • 配置IAM自定义权限策略
      • 配置IAM预置权限策略
      • 权限概述
      • 配置预置RBAC权限策略
    • 配置管理
      • Secret管理
      • Configmap管理
    • 集群管理
      • 集群快照
      • CCE 安全组
      • 查看集群
      • 创建集群
      • 操作集群
      • 升级集群Kubernetes版本
      • 通过kubectl连接集群
      • 托管集群使用说明
      • CCE 支持 GPUSharing 集群
      • CCE节点资源预留说明
      • CCE 节点 CDS 扩容
  • 服务等级协议SLA
    • CCE服务等级协议SLA(V1.0)
  • Solution-Fabric
    • Fabric解决方案
  • API参考
    • 通用说明
    • 公共头和错误返回
    • 概述
  • 常见问题
    • windows下使用kubectl
    • 自动扩缩容常见问题
    • 通过kubectl创建简单的服务
    • 业务应用如何使用负载均衡?
    • 常见问题总览
    • 集群管理常见问题
  • API_V2参考
    • 通用说明
    • Instance相关接口
    • 附录
    • Autoscaler相关接口
    • 组件管理相关接口
    • 套餐适配相关接口
    • Task相关接口
    • 公共头和错误返回
    • Network相关接口
    • 服务域名
    • Cluster相关接口
    • Kubeconfig相关接口
    • InstanceGroup相关接口
    • RBAC相关接口
    • 概述
  • 产品定价
    • 产品定价
  • Solution-Xchain
    • 超级链解决方案
  • SDK
    • Go-SDK
      • 节点组管理
      • 节点管理
      • 集群管理
      • 初始化
      • 安装SDK工具包
      • 概述
  • 文档中心
  • arrow
  • 容器引擎CCE
  • arrow
  • 操作指南
  • arrow
  • 工作负载
  • arrow
  • Statefulset管理
本页目录
  • 概述
  • StatefulSet 介绍
  • 前提条件
  • 创建有状态工作负载 StatefulSet
  • 通过控制台表单形式创建
  • 方式二:通过 YAML 创建
  • 方式三:通过 kubectl 创建
  • 查看有状态部署详情
  • 更新 Pod 数
  • 更新有状态工作负载
  • 标签注解管理
  • 查看监控
  • 查看日志
  • 删除有状态负载

Statefulset管理

更新时间:2025-08-21

概述

在运行中会保存数据或状态的工作负载称为有状态负载 ,对应 Kubernetes 中的 StatefulSet,例如 MySQL,它在运行中会保存产生的数据。用户可以通过表单方式基于镜像创建有状态部署,也可以通过百度智能云提供的YAML文件模板创建和修改有状态部署,对有状态部署关联的容器组(Pod)、事件等进行控制管理。

StatefulSet 介绍

与Deployment相似,StatefulSet也会保证有既定数量的Pod在正常运行。但不同的是,StatefulSet会通过以下措施保留Pod的身份:

  • 有序、固定的名称:StatefulSet的每个Pod会按顺序命名为<StatefulSet名称>-<序号>。例如,StatefulSet的名称为db-app,则Pod名称为db-app-0、db-app-1。删除并重建Pod时,新建Pod会继承原有的名称。
  • 稳定的网络标识:StatefulSet通常需要关联一个Headless Service(通过spec.serviceName指定)。这个Headless Service并不像ClusterIP提供Pod的负载均衡,而仅用于为Pod提供固定的域名(对Headless Service进行DNS查询时,DNS会返回所有匹配的Pod的IP地址)。指定Headless Service后,Pod的域名格式为<Pod名称>.<Headless Service名称>..svc.,例如db-app-01.db-app.default.svc.cluster.local。Pod重建后,域名会自动被解析到新Pod。
  • 稳定的持久化存储:在StatefulSet中,可以指定PVC模板(通过spec.volumeClaimTemplates指定)。StatefulSet会根据此模板为每个Pod生成独立的PersistentVolumeClaim(PVC),PVC名称为<PVC模板名称>-<Pod名称>。当Pod被删除时,PVC会被保留并自动关联到使用相同序号的新Pod。

以上的这些措施保证了StatefulSet的Pod在重建后能继承原有的网络和存储状态,使应用从持久化数据中恢复运行。关于StatefulSet的更多信息,请参见官方文档。

前提条件

  • 已成功创建 CCE 集群,操作说明参见 创建 CCE 集群。

创建有状态工作负载 StatefulSet

用户可以选择通过 CCE 控制台使用表单形式或者通过 YAML 形式创建新的有状态工作负载,也可以选择通过 kubectl 命令创建。

通过控制台表单形式创建

  1. 登录 容器引擎CCE控制台。
  2. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
  3. 在集群管理页面的左侧导航栏中,单击 工作负载 > 有状态。
  4. 点击无状态工作负载列表左上角新建有状态,进入创建工作负载页面。
  5. 在基本信息模块完成相关配置,点击下一步进入容器配置。
参数 说明
工作负载名称 根据系统提示,配置工作负载的名称。在同一个命名空间下,名称必须唯一。
命名空间 选择工作负载部署的命名空间,默认为default。支持选择自定义创建的命名空间,自定义命名空间,请参见 命名空间操作。
工作负载类型 选择有状态StatefulSet。
期望 Pod 数 输入工作负载的 Pod 实例个数。
K8s标签 指定工作负载的标签,对应 Kubernetes 中的 Label,用于识别工作负载的键值对,配合选择器,帮助 Kubernetes 快速筛选目标工作负载。详细信息参考K8S 标签说明。
注释 指定工作负载的注解信息,对应 Kubernetes 中的 Annotation,主要记录用于应用部署、安全策略、调度策略的附加信息,不用于标识和区分资源。详细信息参考K8S 注释说明。
  1. 在容器配置模块,填写容器名称和镜像地址,可点击选择镜像后在弹窗中选择 CCR 中的镜像地址。点击下一步进入高级配置模块。

    说明

    • Pod 中可以配置多个容器,您可以单击右侧“添加容器”为 Pod 配置多个容器。
    • 若使用了 CCR 私有镜像,还需在当前页面的高级设置中配置仓库访问凭证。
参数 说明
容器名称 根据系统提示的命名规则,输入容器名称。同一个工作负载下容器名称必须唯一。
镜像地址 单击后方“选择镜像”,选择容器使用的镜像。支持选择以下两种种类型的镜像。
  • 容器镜像企业版 :可以选择托管在容器镜像服务 CCR 中的企业版镜像。关于 CCR 的更多信息,详细信息请参考 CCR 企业版快速入门。
  • 容器镜像个人版:可以选择托管在容器镜像服务CCR中的个人版镜像。关于 CCR 的更多信息,详细信息请参考CCR 个人版说明。
  • 镜像版本 选择需要部署的镜像版本。
    镜像拉取策略 选择镜像拉取策略。CCE 支持以下三种镜像拉取策略(imagePullPolicy):
  • 优先使用本地镜像(IfNotPresent):如果节点上有本地镜像,则使用本地镜像,本地不存在时拉取镜像。
  • 总是拉取镜像(Always)(默认):表示每次部署或扩容都会从容器镜像服务重新拉取镜像,而不会从本地拉取镜像。
  • 仅使用本地镜像(Never):仅使用本地镜像,本地无镜像时拉取失败。
  • 容器配额 配置容器资源的resources.limits和容器资源的resources.requests。如不填写申请值和限制值,表示不限制配额。申请值和限制值的配置说明及建议,请参见Requests and Limits。
  • CPU配额:
    • 申请:容器需要使用的最小CPU值,默认0.25Core。
    • 限制:允许容器使用的CPU最大值,防止占用过多资源。
  • 内存配额:
    • 申请:容器需要使用的内存最小值,默认512MiB。
    • 限制:允许容器使用的内存最大值。如果超过,容器会被终止。
  • 加速卡资源申请:仅具有 GPU/NPU 计算型节点的集群,可配置 GPU/NPU 资源。开启之后按需选择设置 GPU 和 NPU。
    • 注意:若需要支持GPU感知调度,以及GPU算力和显存的共享与隔离,集群中需安装CCE GPU Manager组件。若需要 NPU 感知调度,以及按算力和显存分配NPU资源,请先安装CCE NPU Manager 组件。
    • 不开启:表示不使用GPU。
    • 独占GPU:单个容器独享GPU。
  • 容器端口 设置容器端口名称、协议、端口。
  • 容器端口的名称:仅用于区分端口,没有实际功能。
  • 协议:容器端口使用的4层(传输层)协议,支持TCP和UDP。
  • 设置容器对外暴露的端口:必须介于1~65535之间。容器只有对外暴露端口,才能实现对Pod外暴露以及Pod中容器互相通信。一个Pod中的所有容器共享Pod的网络协议栈,因此在Pod中配置多个容器时,端口不能重复。
  • 环境变量 单击 添加环境变量,配置环境变量。Kubernetes 在创建 Pod 时,会将环境变量的信息注入到容器中。 支持以下类型:
  • 自定义:使用env直接在工作负载中硬编码环境变量,支持输入变量名称和变量值,创建自定义的环境变量。
  • 配置项(ConfigMap):使用envFrom获取存储在ConfigMap中的非敏感配置数据。支持部分引用或全部引用配置项中的变量。部分引用时,一条规则仅支持为一个 Key 创建环境变量。
  • 保密字典(Secret):使用envFrom获取存储在ConfigMap中的敏感信息,如密码、API 密钥等。支持部分引用或全部引用保密字典中的变量。部分引用时,一条规则仅支持为一个 Key 创建环境变量。
  • 容器启动项 为容器添加启动项参数,当前支持以下容器启动项参数:
  • stdin:为容器开启标准输入,允许从外部源(如终端或其他输入流)接收输入。
  • tty:为容器分配一个虚拟终端,允许您像在本地终端中一样向容器发送命令。一般需要同时开启stdin,表示将终端(tty)绑定到容器的标准输入(stdin)上,可以支持类似于kubectl exec -i -t命令的交互式操作,但区别在于该参数在Pod启动时就已经配置完成。
  • 特权容器 默认不开启。开启后,特权模式允许容器拥有与所在的Worker节点操作系统近似的权限,例如访问硬件设备、挂载文件系统等。
    初始化容器 默认不开启。选择容器是否作为初始化(Init)容器。初始化(Init)容器不支持设置健康检查。Init容器是一种特殊容器,可以在Pod中的其他应用容器启动之前运行。每个Pod中可以包含多个容器,同时Pod中也可以有一个或多个先于应用容器启动的Init容器,当所有的Init 容器运行完成时,Pod中的应用容器才会启动并运行。详细说明请参见 Init 容器。
  • 注意:容器组中不能全为初始化容器,需要保证至少有一个非初始化容器。若容器组中有多个初始化容器,它们的运行顺序将与其创建顺序一致。
  • 健康检查 支持配置存活检查、就绪检查和启动检查。允许基于HTTP请求检查、TCP端口检查、执行命令检查和GRCP检查的方式,探测容器中的负载是否正常。以下以配置存活检查为例,介绍配置参数。
  • HTTP请求检查:使用HTTP或HTTPS协议,向容器发送一个HTTP GET请求,通过检查响应确认容器状态。您需要进行如下检查配置:
    • 检查协议:支持HTTP或HTTPS。
    • 检查路径:访问HTTP Server的路径。
    • 检查端口:容器暴露的访问端口号或端口名称。
    • 主机地址:请求的主机地址,不填时默认为Pod实例的IP地址。
    • Http请求头:HTTP请求中自定义的请求头(HTTP Headers)。单击添加请求头输入键值对的配置方式。
  • TCP端口检查:向容器发送一个TCP Socket,Kubelet将尝试在指定端口上打开容器的Socket。 如果可以建立连接,容器被认为是健康的,如果不能就认为是失败的。您需要进行如下检查配置:
    • 检查端口:容器暴露的访问端口号或端口名称。
    • 主机地址:请求的主机地址,不填时默认为Pod实例的IP地址。
  • 执行命名检查:在容器内执行指定的命令,通过检查命令执行的结果确认容器状态。 您需要进行如下检查配置:
    • 执行命令:检测容器健康情况的探测命令。多个命令换行分隔。
  • GRPC检查:使用gRPC协议,通过发送POST或GET请求检查服务器应用是否健康。
    • 检查端口:容器暴露的访问端口号或端口名称。
    • GRPC服务:指定GPRC服务名称,不填为整体服务。
  • 公共参数说明:
    • 启动延时:指容器启动后,第一次执行探测时需要等待的时间。
    • 间隔时间:相邻两次检查的时间间隔。
    • 响应超时:指发送检查请求后,等待响应的超时时间。
    • 健康阈值:检查请求发送后,表示系统正常的响应次数。
    • 不健康阈值:检查请求发送后,表示系统异常的无响应次数。
  • 生命周期 在容器的生命周期的特定阶段配置需要执行的操作,例如启动命令、启动后处理和停止前处理,详情请参见设置容器生命周期。
  • 启动命令:为容器设置预启动命令和参数。启动命令与参数定义了容器启动时执行的操作,用于初始化应用服务。适用于需要特定环境变量、挂载点或端口映射的应用部署场景。
  • 启动后处理:为容器设置启动后的命令。启动后处理命令用于容器启动后执行特定任务,如初始化配置、运行脚本等,适用于需要在主进程前完成准备工作的场景。
  • 停止前处理:为容器设置预结束命令。停止前处理命令用于关闭容器内的应用进程,确保数据一致性与服务正常终止。适用于需安全停机避免数据丢失或服务异常的场景。
  • 数据卷 支持为容器挂载不同类型的数据卷进行数据持久化,支持通过subPath方式挂载卷的子路径;支持通过subPathExpr方式挂载卷的扩展路径:
  • 主机目录:使用主机中的目录创建数据卷并挂载。
  • 临时目录:使用临时目录创建数据卷。
  • 配置项:使用已有配置项ConfigMap创建数据卷,支持全部挂载和部分挂载,指定部分数据挂载时,支持配置多数据item,用半角分号(;)分隔。例如 cm1:path1;cm2:path2。
  • 保密字典:使用已有保密字典Secret创建数据卷,支持全部挂载和部分挂载,指定部分数据挂载时,支持配置多数据item,用半角分号(;)分隔。例如 sc1:path1;sc2:path2。
  • 存储卷声明:使用已有存储卷声明PVC创建数据卷。
  • 仓库访问凭证 若有容器使用了私有镜像,请务必添加对应的镜像仓库的访问凭证。支持新建访问凭证和选择已有的,详细信息参考配置访问凭证。
    1. 在高级设置模块中,配置调度策略,点击完成进行工作负载的创建。
    参数 说明
    伸缩配置 支持两种伸缩配置:水平伸缩和定时水平伸缩。
  • 水平伸缩:通过监测容器的性能指标触发自动伸缩。指标伸缩可以帮助您在业务负载出现波动时自动调整工作负载使用的资源总量,在高负载时扩容缓解压力,低负载时缩容节省资源。更多信息,请参见使用容器水平伸缩(HPA)。
  • 定时水平伸缩:通过定时触发工作负载伸缩,适用于业务负载存在周期性变化的场景,例如社交媒体在午餐后和晚餐后周期性的流量高峰。更多信息,请参见使用容器定时水平伸缩(CronHPA)。
    • 注意:使用定时水平伸缩 CronHPA 需要安装CCE CronHPA Controller组件,详细参考 CCE CronHPA Controller介绍。
  • 调度策略 通过配置亲和与反亲和规则,可实现灵活的工作负载调度,支持负载亲和与节点亲和。
  • 节点亲和性:配置工作负载和节点的亲和性调度。包括:强制满足和尽量满足。
    • 不配置:不设置节点亲和策略。
    • 强制调度:通过匹配标签进行调度选择。可以设置 6 种匹配关系(In, NotIn, Exists, DoesNotExist, gt, lt)。
    • 尽量满足:通过匹配标签进行调度选择,允许配置权重。可以设置 6 种匹配关系(In, NotIn, Exists, DoesNotExist, gt, lt)。
  • Pod亲和性:选择Pod将与那些Pod部署在同一拓扑域,设置强制满足/尽量满足(Required/Preferred)条件,多条规则中的标签必须同时在一个工作负载中。包括:强制满足和尽量满足。
    • 不配置:不设置Pod亲和策略。
    • 强制满足:基于命名空间、拓扑域。支持配置选择器(MatchExpressions、MatchLabels)。通过匹配标签进行调度选择。可以设置 4 种匹配关系(In, NotIn, Exists, DoesNotExist)。
    • 尽量满足:基于命名空间、拓扑域。支持配置选择器(MatchExpressions、MatchLabels)。通过匹配标签进行调度选择,允许配置权重。可以设置 4 种匹配关系(In, NotIn, Exists, DoesNotExist)。
  • Pod 反亲和性:选择Pod将不与那些Pod部署在同一拓扑域,设置强制满足/尽量满足(Required/Preferred)条件,多条规则中的标签必须同时在一个工作负载中。包括:强制满足和尽量满足。
    • 不配置:不设置Pod反亲和策略。
    • 强制满足:基于命名空间、拓扑域。支持配置选择器(MatchExpressions、MatchLabels)。通过匹配标签进行调度选择。可以设置 4 种匹配关系(In, NotIn, Exists, DoesNotExist)。
    • 尽量满足:基于命名空间、拓扑域。支持配置选择器(MatchExpressions、MatchLabels)。通过匹配标签进行调度选择,允许配置权重。可以设置 4 种匹配关系(In, NotIn, Exists, DoesNotExist)。
  • 容忍设置 :容忍策略与节点的污点能力配合使用,允许(不强制)负载调度到带有与之匹配的污点的节点上,也可用于控制负载所在的节点被标记污点后负载的驱逐策略,详细信息请参考污点和容忍说明。
  • Pod标签 为该工作负载所属的每个Pod添加标签,对应 Kubernetes 中的 Label,用于识别Pod的键值对,配合选择器,帮助 Kubernetes 快速筛选目标Pod。详细信息参考K8S 标签说明。
    Pod注释 为该工作负载所属的每个Pod添加注解,对应 Kubernetes 中的 Annotation,主要记录用于应用部署、安全策略、调度策略的附加信息,不用于标识和区分资源。详细信息参考K8S 注释说明。

    方式二:通过 YAML 创建

    1. 点击部署列表左上角使用YAML创建,进入新建工作负载页面。
    2. 点击下拉列表选择命名空间,填写 yaml 文件,点击确定。

    说明:

    • 模板类型:可使用示例模板或“我的模板”创建。
    • 复制:复制当前 YAML 文件的内容。
    • 另存为:将当前文件模版另存为“我的模版”。
    • 取消:返回列表页。

    工作负载YAML示例

    Plain Text
    1apiVersion: apps/v1
    2kind: StatefulSet
    3metadata:
    4  name: statefulset-example
    5spec:
    6  serviceName: "nginx"
    7  replicas: 2
    8  selector:
    9    matchLabels:
    10      app: nginx # has to match .spec.template.metadata.labels
    11  template:
    12    metadata:
    13      labels:
    14        app: nginx
    15    spec:
    16      containers:
    17      - name: nginx
    18        image: registry.baidubce.com/cce/nginx-alpine-go:latest
    19        livenessProbe:
    20          httpGet:
    21            path: /
    22            port: 80
    23          initialDelaySeconds: 20
    24          timeoutSeconds: 5
    25          periodSeconds: 5
    26        readinessProbe:
    27          httpGet:
    28            path: /
    29            port: 80
    30          initialDelaySeconds: 5
    31          timeoutSeconds: 1
    32          periodSeconds: 5
    33        ports:
    34        - containerPort: 80
    35          name: web
    36      updateStrategy:
    37        type: RollingUpdate

    方式三:通过 kubectl 创建

    1. 准备 StatefulSet yaml 文件。
    2. 安装 kubectl,并连接集群,详情参见 通过 kubectl 连接集群。
    3. 复制下方的YAML文件,并保存到 statefulset.yaml中。
    Plain Text
    1apiVersion: apps/v1
    2kind: StatefulSet
    3metadata:
    4  name: statefulset-example
    5spec:
    6  serviceName: "nginx"
    7  replicas: 2
    8  selector:
    9    matchLabels:
    10      app: nginx # has to match .spec.template.metadata.labels
    11  template:
    12    metadata:
    13      labels:
    14        app: nginx
    15    spec:
    16      containers:
    17      - name: nginx
    18        image: registry.baidubce.com/cce/nginx-alpine-go:latest
    19        livenessProbe:
    20          httpGet:
    21            path: /
    22            port: 80
    23          initialDelaySeconds: 20
    24          timeoutSeconds: 5
    25          periodSeconds: 5
    26        readinessProbe:
    27          httpGet:
    28            path: /
    29            port: 80
    30          initialDelaySeconds: 5
    31          timeoutSeconds: 1
    32          periodSeconds: 5
    33        ports:
    34        - containerPort: 80
    35          name: web
    36      updateStrategy:
    37        type: RollingUpdate
    1. 执行以下命令,创建 StatefulSet。

      Bash
      1kubectl apply -f statefulset.yaml

      预期输出:

      Bash
      1service/nginx created
      2statefulset.apps/statefulset-example created
    2. 执行以下命令,查看Service的公网IP地址

      Bash
      1kubectl get svc
    3. 执行以下命令,验证 StatefulSet 是否创建成功:

      Bash
      1 kubectl get statefulset

    查看有状态部署详情

    点击列表页任何一行的工作负载名称,即可进入工作负载详情页,详情页内容包括: 工作负载详情、关联容器组、更新升级、伸缩策略、调度策略、监控、事件等信息。

    image.png

    更新 Pod 数

    支持通过控制台快速更新无状态负载中的 Pod 实例个数。

    1. 登录有状态负载管理页面。

      a. 登录 容器引擎CCE控制台。
      b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
      c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 有状态。

    2. 在目标有状态负载的列表,点击需要调整的有状态行中的“伸缩”,在伸缩的弹框页中,填写需要的容器组数量,点击“确认”。

    更新有状态工作负载

    支持通过控制台界面或 YAML 文件编辑已创建的有状态负载。

    1. 登录有状态负载管理页面。

      a. 登录 容器引擎CCE控制台。
      b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
      c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 有状态负载。

    2. 在目标有状态负载的操作列,单击 更新升级 或 编辑 YAML。

    说明:
    通过控制台界面更新和编辑 YAML 文件更新,均不支持更新有状态负载名称、命名空间。

    Plain Text
    1a. 更新:在控制台更新配置信息。详细的参数说明,请参见 [通过控制台创建](https://cloud.baidu.com/doc/CCE/s/cjxpoxrgi)。<br>
    2b. 编辑 YAML:编辑 YAML 文件更新配置信息。详细的 YAML 配置说明,请参见[通过 YAML 创建](https://cloud.baidu.com/doc/CCE/s/cjxpoxrgi)。<br>
    1. 更新完成后,单击提交。

    标签注解管理

    标签是以key/value键值对的形式附加在有状态工作负载上的。添加标签后,可通过标签对有状态工作负载进行管理和选择。您可以给多个工作负载打标签,也可以给指定的某个工作负载打标签。

    说明:
    标签格式要求如下:以字母和数字开头或结尾,由字母、数字、连接符(-)、下划线(_)、点号(.)组成且63字符以内,详细 K8S标签说明。

    1. 登录有状态负载管理页面。

      a. 登录 容器引擎CCE控制台。
      b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
      c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 有状态。

    2. 选择“有状态”页签,单击工作负载后的“更多 > 标签注解”。
    3. 单击添加标签,输入键和值后单击更新。

    查看监控

    您可以通过 CCE 控制台查看工作负载和容器组的 CPU 和内存占用情况,以确定需要的资源规格。

    说明:
    查看工作负载的监控信息时,依赖集群接入 Prometheus 监控服务。若集群未接入Prometheues 监控服务,请根据界面提示接入,详细信息请参见使用Prometheus监控集群。

    1. 登录有状态负载管理页面。

      a. 登录 容器引擎CCE控制台。
      b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
      c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 有状态。

    2. 在目标有状态负载的列表,点击需要调整的有状态行中的“监控”。
    3. 在监控页面查看有状态负载的监控数据。容器相关监控指标说明,请参见 监控指标说明。

    查看日志

    您可以通过“日志”功能查看无状态工作负载的日志信息。

    说明:
    当前显示的日志内容为容器标准输出日志,不具备持久化和高阶运维能力,如需使用更完善的日志能力,可使用日志中心功能。

    1. 登录有状态负载管理页面。

      a. 登录 容器引擎CCE控制台。
      b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
      c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 有状态。

    2. 在目标有状态负载的列表,单击工作负载后的“更多 > 日志”。
    3. 在日志页面查看容器日志数据。

    删除有状态负载

    若工作负载无需再使用,您可以将工作负载删除。

    说明:
    删除有状态负载可能导致服务不可用,请谨慎操作。

    1. 登录有状态负载管理页面。

      a. 登录 容器引擎CCE控制台。
      b. 在左侧导航栏,点击 "集群管理->集群列表",进入集群列表页,点击集群名称,进入集群管理页面。
      c. 在集群管理页面的左侧导航栏中,单击 工作负载 > 有状态。

    2. 在目标有状态负载的列表,单击工作负载后的“更多 > 删除”。
    3. 在系统弹出的二次确认对话框,确认信息后,点击确认。

    image.png

    上一篇
    设置工作负载自动水平伸缩
    下一篇
    使用私有镜像创建工作负载