CCE典型实践之Guestbook搭建

容器引擎 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
  • CCE典型实践之Guestbook搭建
本页目录
  • 概览
  • 操作步骤
  • 1. 百度智能云账号注册与实名认证
  • 2. 创建CCE容器集群
  • 3. 创建CCR镜像仓库
  • 3.1 开通镜像仓库
  • 3.2 创建命名空间
  • 3.3 (可选)新建镜像
  • 3.4 推送镜像到镜像仓库
  • 4. 配置Kubectl命令行工具
  • 4.1 Windows环境下的操作步骤
  • 4.2 Linux环境下的操作步骤
  • 5. (可选)配置Kubernetes-Dashboard
  • 5.1 前提条件
  • 5.2 Windows环境下创建Dashboard服务
  • 5.3 Linux环境下创建Dashboard服务
  • 6. 通过kubernetes-kubectl创建GuestBook
  • 6.1 创建Redis Master Pod
  • 6.2 创建Redis Master Service
  • 6.3 创建Redis Slave Pod
  • 6.4 创建Redis Slave Service
  • 6.5 创建Frontend Pod
  • 6.6 创建Frontend Service
  • 6.7 查看Frontend Service LoadBalancer
  • 7. 绑定域名,提供服务
  • 7.1 购买域名
  • 7.2 绑定域名

CCE典型实践之Guestbook搭建

更新时间:2025-08-21

概览

百度智能云容器引擎CCE基于Kubernetes+Docker构建的弹性高可用的容器集群服务,您可以轻松地在采购的集群上部署所需的业务应用。

本文将以经典的前端应用GuestBook为例,为您展示集群搭建、部署应用的全流程。让您能够使用百度智能云云容器引擎CCE,快速构建一个最简单的web应用。

操作步骤

通用操作流程

Guestbook搭建步骤

  1. 百度智能云账号注册与实名认证
  2. 创建CCE容器集群
  3. 创建CCR镜像仓库
  4. 配置Kubectl命令行工具
  5. (可选)配置Kubernetes-Dashboard
  6. 通过kubernetes-kubectl创建GuestBook
  7. 绑定域名,提供服务

1. 百度智能云账号注册与实名认证

注册百度智能云账号,请参考注册百度账号,完成注册操作。

请根据自身情况,进行“企业认证”或者“个人认证”,具体请参考认证流程。

如果您在创建 CCE 集群的时候仍未完成实名认证,你可以点击页面上的认证提示按钮到实名认证页面完成相关操作。

2. 创建CCE容器集群

容器集群为一组由服务器构成的资源集合,同时包含了Kubernetes的集群能力,您可以在集群之上构建高可用的业务应用,具体容器集群创建流程如下,详情可参考 创建集群。

  1. 登录百度智能云官网。
  2. 登录成功后,选择“产品服务>云容器引擎CCE”,进入“集群列表”页面。
  3. (可选)“集群列表”页面会显示所有已创建的CCE集群名称/ID、状态、地域等信息,并且用户可以通过集群名称进行搜索集群的操作。
  4. (可选)选择区域,请根据实际需求进行选择切换。

    • 集群为全局操作,用户可以根据需要选择不同的地区,如果您需要在多区域创建集群,请参考区域选择说明。
    • 在不同区域创建的集群相互独立。
  5. 点击“创建集群”,进入“创建集群”界面,根据需要填写集群相关配置信息。

image.png

集群配置

image.png image.png

配置说明:

  • 每个区域默认配额为20个集群,每个集群默认配额为200个节点,如需更大配额,可提交工单。
  • 集群名称暂不支持修改,请谨慎输入。用户可以自定义集群名称,自定义名称需遵守“字母、数字以及-_ /.等特殊字符,字母开头,长度1-64”的规则。

网络配置

image.png

节点配置

节点是构成集群的单一服务器资源,支持CPU、GPU多种类型可供选择,后续您创建的业务应用所需要的容器将会分布到各个节点上,构建高可用环境。

image.png image.png image.png

配置说明: 操作系统支持由百度智能云配置过的集成GPU驱动版系统,如果用户在自己的BCC中创建了GPU自定义镜像的话,镜像是支持GPU自定义镜像,用户如果使用自定义镜像需要手动设置集成GPU驱动。

6.点击“完成”后,系统在后台进行集群的创建。

7.点击链接“管理控制台”,进入“集群列表”界面,查看创建集群的状态,创建成功后该集群状态显示为“运行中”。

3. 创建CCR镜像仓库

容器镜像服务CCR为用户提供专有的Docker镜像存储空间,为容器运行的模板服务,支持使用用户自构建镜像、DockerHub、百度智能云镜像,来创建业务应用。详情可参考 容器镜像服务基本操作

3.1 开通镜像仓库

首次进入镜像仓库,会弹出下图所示页面,按照要求填写用户名并设置密码。

注意:

用户名:镜像仓库用户名命名规则是:用户名由4-30个英文小写字母与数字组成。 密 码:是用户登录到docker镜像仓库的凭证。

3.2 创建命名空间

  1. 在镜像仓库分类下选择命名空间,然后在命名空间列表中点击新建命名空间。
  2. 填写新建空间名称并选择空间类型后点击确定完成命名空间的创建。

注意:

命名空间的命名规则为:小写字母、数字及. _ - 构成,开头与结尾必须为小写字母与数字,长度:1-65。

3.3 (可选)新建镜像

1.点击镜像列表页中新建按钮。

2.选择命名空间、填写镜像名称和版本号然后点击确定。

注意:

1.镜像名称和版本号的命名需遵守“小写字母、数字及. _ - 构成,开头与结尾必须为小写字母与数字,长度:1-65”的规则,且不支持中文。命名空间、镜像名称和版本号三者的名称加起来不能重复。 2.如果用户不选择新建镜像,在完成镜像推送到相应命名空间后,也会自动生成以上基本信息。

3.4 推送镜像到镜像仓库

登录百度智能云镜像仓库

Plain Text
1    >$ sudo docker login --username=[username] hub.baidubce.com

username:镜像仓库名称,即是开通镜像仓库服务时填写的用户名。输入密码后完成登录。

上传镜像

Plain Text
1    $ sudo docker tag [ImageId] hub.baidubce.com/[namespace]/[ImageName]:[镜像版本号]
2    $ sudo docker push hub.baidubce.com/[namespace]/[ImageName]:[镜像版本号]
  • ImageId和镜像版本号根据镜像信息补充
  • namespace是开通镜像仓库时填写的命名空间
  • ImageName是在控制台创建的镜像名称

4. 配置Kubectl命令行工具

Kubernetes是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本,也是CNCF最重要的项目之一,主要功能包括:

  • 基于容器的应用部署、维护和滚动升级
  • 负载均衡和服务发现
  • 跨机器和跨地区的集群调度
  • 自动伸缩
  • 无状态服务和有状态服务
  • 广泛的Volume支持
  • 插件机制保证扩展性

目前百度智能云容器服务基于kubernetes v1.8.6,如果用户需要从本地个人计算机连接到百度智能云的 Kubernetes 集群,需要使用 Kubernetes 命令行客户端kubectl,kubectl的安装步骤如下所示

从Kubernetes 版本下载页面下载对应的 kubectl 客户端,关于kubectl 的其他信息,可以参见kubernetes官方安装和设置 kubectl文档。

注意: 下载kubectl之前,用户需要先登录自己的服务器使用指令kubectl version查看自己创建的集群的版本号,然后选择对应的kubectl版本进行下载。例如:用户的集群版本号为1.8,则需要下载的kubectl为1.8版。

4.1 Windows环境下的操作步骤

  1. 创建集群之后,下载windows版本的kubectl工具,例如64位的工具如下:

    注意: 下载kubectl之前,用户需要先登录自己的服务器使用指令kubectl version查看自己创建的集群的版本号,然后选择对应的kubectl版本进行下载。例如:用户的集群版本号为1.8,则需要下载的kubectl为1.8版。下载链接为https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md?spm=5176.app53755.3.2.2uYdIN&file=CHANGELOG.md#client-binaries-17,用户根据自己集群版本号,下载相应版本的工具。

  2. 下载之后,将其解压到任意目录,例如放在D盘下

  3. 在 目录C:\users\下进入用户的文件夹,例如用户名为foo,则文件夹应该为C:\users\foo,同时进入此目录,创建文件夹.kube

  4. 在集群列表页面,下载集群配置文件,放在上一步创建的.kube文件夹中,并且重命名为config

  5. 打开windows命令行提示符

  6. 进入kubectl文件存放的目录,运行kubectl.exe get node可以查看集群的节点。

4.2 Linux环境下的操作步骤

1.解压下载后的文件,为kubectl添加执行权限,并放在PATH下

Plain Text
1chmod +x ./kubectl
2sudo mv ./kubectl /usr/local/bin/kubectl

2.配置kubectl,下载集群凭证。在集群界面下载集群配置文件,放在kubectl的默认配置路径

Plain Text
1mv kubectl.conf  ~/.kube/config

3.配置完成后,您即可以使用 kubectl 从本地计算机访问 Kubernetes 集群

Plain Text
1kubectl get node

5. (可选)配置Kubernetes-Dashboard

Kubernetes Dashboard是基于Web页面的图形化用户界面,支持用户部署业务、监控、管理业务应用。

5.1 前提条件

在本地使用 Kubernetes Dashboard 前,用户需要先配置好kubectl,能通过kubectl连接百度智能云的 Kubernetes 集群。

在本地通过kubectl工具,可以在kubernetes集群里创建一个Dashboard应用,操作步骤如下所示。

5.2 Windows环境下创建Dashboard服务

  1. 首先在存放解压的kubectl.exe的同一个目录下,创建dashboard.yaml文件,例如可以用记事本创建:

    对应的dashboard.yaml文件为:

    Plain Text
    1	apiVersion: apps/v1
    2	kind: Deployment
    3	metadata:
    4	  labels:
    5	    app: kubernetes-dashboard
    6	  name: kubernetes-dashboard
    7	  namespace: kube-system
    8	spec:
    9	  replicas: 1
    10	  selector:
    11	    matchLabels:
    12	      app: kubernetes-dashboard
    13	  template:
    14	    metadata:
    15	      labels:
    16	        app: kubernetes-dashboard
    17	    spec:
    18	      containers:
    19	      - name: kubernetes-dashboard
    20	        image: hub.baidubce.com/public/dashboard:v1.5.0-caas
    21	        imagePullPolicy: Always
    22	        ports:
    23	        - containerPort: 9090
    24	          protocol: TCP
    25	        volumeMounts:
    26	        - name: "kubeconfig"
    27	          mountPath: "/etc/kubernetes/"
    28	          readOnly: true
    29	        args:
    30	          - --kubeconfig=/etc/kubernetes/config
    31	        livenessProbe:
    32	          httpGet:
    33	            path: /
    34	            port: 9090
    35	          initialDelaySeconds: 30
    36	          timeoutSeconds: 30
    37	      volumes:
    38	      - name: "kubeconfig"
    39	        hostPath:
    40	          path: "/root/.kube/"
    41	---
    42	kind: Service
    43	apiVersion: v1
    44	metadata:
    45	  labels:
    46	    app: kubernetes-dashboard
    47	  name: kubernetes-dashboard
    48	  namespace: kube-system
    49	spec:
    50	  type: NodePort
    51	  ports:
    52	  - port: 80
    53	    targetPort: 9090
    54	  selector:
    55	    app: kubernetes-dashboard
  2. 然后输入kubectl.exe create -f dashboard.yaml创建dashboard

  3. 通过kubectl.exe get pod --all-namespaces命令可以查看是否创建成功

  4. 输入kubectl.exe proxy可以打开proxy,然后在浏览器中访问127.0.0.1:8001/ui 即可以访问dashboard

5.3 Linux环境下创建Dashboard服务

输入以下指令完成Dashboard服务的创建

Plain Text
1$ kubectl create -f dashboard.yaml
2deployment "kubernetes-dashboard" created
3service "kubernetes-dashboard" created

对应的dashboard.yaml文件为:

Plain Text
1	apiVersion: apps/v1
2	kind: Deployment
3	metadata:
4	  labels:
5	    app: kubernetes-dashboard
6	  name: kubernetes-dashboard
7	  namespace: kube-system
8	spec:
9	  replicas: 1
10	  selector:
11	    matchLabels:
12	      app: kubernetes-dashboard
13	  template:
14	    metadata:
15	      labels:
16	        app: kubernetes-dashboard
17	    spec:
18	      containers:
19	      - name: kubernetes-dashboard
20	        image: hub.baidubce.com/public/dashboard:v1.5.0-caas
21	        imagePullPolicy: Always
22	        ports:
23	        - containerPort: 9090
24	          protocol: TCP
25	        volumeMounts:
26	        - name: "kubeconfig"
27	          mountPath: "/etc/kubernetes/"
28	          readOnly: true
29	        args:
30	          - --kubeconfig=/etc/kubernetes/config
31	        livenessProbe:
32	          httpGet:
33	            path: /
34	            port: 9090
35	          initialDelaySeconds: 30
36	          timeoutSeconds: 30
37	      volumes:
38	      - name: "kubeconfig"
39	        hostPath:
40	          path: "/root/.kube/"
41	---
42	kind: Service
43	apiVersion: v1
44	metadata:
45	  labels:
46	    app: kubernetes-dashboard
47	  name: kubernetes-dashboard
48	  namespace: kube-system
49	spec:
50	  type: NodePort
51	  ports:
52	  - port: 80
53	    targetPort: 9090
54	  selector:
55	    app: kubernetes-dashboard

在创建好dashboard之后,使用kubectl proxy命令开启一个代理,连接到Kubernetes API Server。

Plain Text
1	kubectl proxy

成功开启代理后,可以在本地浏览器中访问http://localhost:8001/ui,连接到Dashboard。

注意:

localhost 是指的用户使用的本地机器,而不是虚拟机,且对应的IP地址为:127.0.0.1

6. 通过kubernetes-kubectl创建GuestBook

本实践中的GuestBook应用由两部分组成:

  • Web前端服务。
  • Redis存储系统,包含redis master节点和redis slave节点。

6.1 创建Redis Master Pod

redis-master:用于前端web应用进行“写”留言操作的Redis服务。

*注意: 本操作中所有的yaml文件,都和kubectl在同一目录下保存。

在Master节点执行以下命令,将redis-master-deployment.yaml文件发布到Kubernetes集群中,完成redis-master的创建。

Plain Text
1    kubectl apply -f redis-master-deployment.yaml

对应的redis-master-deployment.yaml文件为:

Plain Text
1	apiVersion: apps/v1
2	kind: Deployment
3	metadata:
4	  name: redis-master
5	spec:
6      selector:
7        matchLabels:
8          app: redis
9          role: master
10          tier: backend
11	  replicas: 1
12	  template:
13	    metadata:
14	      labels:
15	        app: redis
16	        role: master
17	        tier: backend
18	    spec:
19	      containers:
20	      - name: master
21	        image: hub.baidubce.com/public/guestbook-redis-master:e2e  # or just image: redis
22	        resources:
23	          requests:
24	            cpu: 100m
25	            memory: 100Mi
26	        ports:
27	        - containerPort: 6379

创建好后,使用以下指令,验证Pod是否正在运行:

Plain Text
1kubectl get pods

答复应类似如下:

Plain Text
1NAME                            READY     STATUS    RESTARTS   AGE
2redis-master-1068406935-3lswp   1/1       Running   0          28s

当STATUS的状态为:Running表示 pod 正常运行。

6.2 创建Redis Master Service

服务为一组配置相同的容器以及如何访问他们的规则,即微服务架构中的部署单元,即是用户业务应用的最小运行单元。

输入以下指令,创建一个于redis-master Pod关联的Service。

Plain Text
1kubectl apply -f redis-master-service.yaml

对应的redis-master-service.yaml文件为:

Plain Text
1	apiVersion: v1
2	kind: Service
3	metadata:
4	  name: redis-master
5	  labels:
6	    app: redis
7	    role: master
8	    tier: backend
9	spec:
10	  ports:
11	  - port: 6379
12	    targetPort: 6379
13	  selector:
14	    app: redis
15	    role: master
16	    tier: backend

注意: tarPort属性,指定Pod内容器应用监听的端口号。

完成之后通过以下指令验证Redis Master Service是否正在运行:

Plain Text
1kubectl get service

答复应该类似于:

Plain Text
1NAME           CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
2kubernetes     10.0.0.1     <none>        443/TCP    1m
3redis-master   10.0.0.151   <none>        6379/TCP   8s

6.3 创建Redis Slave Pod

redis-slave:用于前端Web应用进行“读”留言操作的Redis服务,并与Redis-Master的数据保持同步。

将redis-slave-deployment.yaml文件发布到Kubernetes集群中,完成redis-slave的创建。

Plain Text
1	kubectl apply -f redis-slave-deployment.yaml

对应的redis-slave-deployment.yaml文件为:

Plain Text
1	apiVersion: apps/v1
2	kind: Deployment
3	metadata:
4	  name: redis-slave
5	spec:
6	  selector:
7	    matchLabels:
8	      app: redis
9	      role: slave
10	      tier: backend
11	  replicas: 2
12	  template:
13	    metadata:
14	      labels:
15	        app: redis
16	        role: slave
17	        tier: backend
18	    spec:
19	      containers:
20	      - name: slave
21	        image: hub.baidubce.com/public/guestbook-redis-slave:v1
22	        resources:
23	          requests:
24	            cpu: 100m
25	            memory: 100Mi
26	        env:
27	        - name: GET_HOSTS_FROM
28	          value: dns
29	          # Using `GET_HOSTS_FROM=dns` requires your cluster to
30	          # provide a dns service. As of Kubernetes 1.3, DNS is a built-in
31	          # service launched automatically. However, if the cluster you are using
32	          # does not have a built-in DNS service, you can instead
33	          # instead access an environment variable to find the master
34	          # service's host. To do so, comment out the 'value: dns' line above, and
35	          # uncomment the line below:
36	          # value: env
37	        ports:
38	        - containerPort: 6379

完成上述操作后,执行以下代码查询Pods列表以验证Redis Slave Pods是否正在运行:

Plain Text
1kubectl get pods

答复应该类似于:

Plain Text
1NAME                            READY     STATUS              RESTARTS   AGE
2redis-master-1068406935-3lswp   1/1       Running             0          1m
3redis-slave-2005841000-fpvqc    1/1       Running             0          6s
4redis-slave-2005841000-phfv9    1/1       Running             0          6s

6.4 创建Redis Slave Service

输入以下指令启动redis-slave的两个副本,每个副本上的Redis进行都与redis-master进行数据同步,与redis-master共同构成一个具有读写能力的Redis集群。

Plain Text
1kubectl apply -f redis-slave-service.yaml

对应的redis-slave-service.yaml文件为:

Plain Text
1	apiVersion: v1
2	kind: Service
3	metadata:
4	  name: redis-slave
5	  labels:
6	    app: redis
7	    role: slave
8	    tier: backend
9	spec:
10	  ports:
11	  - port: 6379
12	  selector:
13	    app: redis
14	    role: slave
15	    tier: backend

完成上述操作后,通过以下指令查询服务列表以验证Redis Slave Service是否正在运行:

kubectl get services

答复应该类似于:

Plain Text
1NAME           CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
2kubernetes     10.0.0.1     <none>        443/TCP    2m
3redis-master   10.0.0.151   <none>        6379/TCP   1m
4redis-slave    10.0.0.223   <none>        6379/TCP   6s

6.5 创建Frontend Pod

将frontend-deployment.yaml文件发布到Kubernetes集群中,完成redis-slave的创建。

Plain Text
1kubectl apply -f frontend-deployment.yaml

对应的frontend-deployment.yaml文件为:

Plain Text
1	apiVersion: apps/v1
2	kind: Deployment
3	metadata:
4	  name: frontend
5	spec:
6	  selector:
7	    matchLabels:
8	      app: guestbook
9	      tier: frontend
10	  replicas: 3
11	  template:
12	    metadata:
13	      labels:
14	        app: guestbook
15	        tier: frontend
16	    spec:
17	      containers:
18	      - name: php-redis
19	        image: hub.baidubce.com/public/guestbook-frontend:v4
20	        resources:
21	          requests:
22	            cpu: 100m
23	            memory: 100Mi
24	        env:
25	        - name: GET_HOSTS_FROM
26	          value: dns
27	          # Using `GET_HOSTS_FROM=dns` requires your cluster to
28	          # provide a dns service. As of Kubernetes 1.3, DNS is a built-in
29	          # service launched automatically. However, if the cluster you are using
30	          # does not have a built-in DNS service, you can instead
31	          # instead access an environment variable to find the master
32	          # service's host. To do so, comment out the 'value: dns' line above, and
33	          # uncomment the line below:
34	          # value: env
35	        ports:
36	        - containerPort: 80

完成上述操作后,通过以下指令查询Pods列表以验证三个前端副本是否正在运行:

Plain Text
1	kubectl get pods -l app=guestbook -l tier=frontend

答复应该类似于:

Plain Text
1NAME                        READY     STATUS    RESTARTS   AGE
2frontend-3823415956-dsvc5   1/1       Running   0          54s
3frontend-3823415956-k22zn   1/1       Running   0          54s
4frontend-3823415956-w9gbt   1/1       Running   0          54s

6.6 创建Frontend Service

创建Frontend Service的目的是使用Service的NodePort给Kubernetes集群中的redis-master和redis-slave Service映射一个外网可以访问的端口。

注意: 如果您使用百度智能云提供的负载均衡器,请注释type: NodePort,并取消注释type: LoadBalancer。

输入以下指令完成Frontend Service的创建

Plain Text
1	kubectl apply -f frontend-service.yaml

对应的frontend-service.yaml文件为:

Plain Text
1    apiVersion: v1
2	kind: Service
3	metadata:
4	  name: frontend
5	  labels:
6	    app: guestbook
7	    tier: frontend
8	spec:
9	  # comment or delete the following line if you want to use a LoadBalancer
10	  type: LoadBalancer 
11	  # if your cluster supports it, uncomment the following to automatically create
12	  # an external load-balanced IP for the frontend service.
13	  ports:
14	  - port: 80
15	  selector:
16	    app: guestbook
17	    tier: frontend

完成上述操作后,通过以下代码查询服务列表以验证前端服务是否正在运行:

Plain Text
1	kubectl get services 

答复应该类似于:

Plain Text
1	NAME           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
2	frontend       10.0.0.112   <nodes>       80:32372/TCP   6s
3	kubernetes     10.0.0.1     <none>        443/TCP        4m
4	redis-master   10.0.0.151   <none>        6379/TCP       2m
5	redis-slave    10.0.0.223   <none>        6379/TCP       1m

6.7 查看Frontend Service LoadBalancer

运行以下命令获取Frontend ServiceIP地址。

Plain Text
1	kubectl get service frontend

答复应该类似于:

Plain Text
1    NAME       CLUSTER-IP      EXTERNAL-IP        PORT(S)        AGE
2	frontend   10.0.0.112      180.76.174.157     80:32372/TCP   1m

复制外部IP地址,并在浏览器中加载页面以查看您的Guestbook。

7. 绑定域名,提供服务

7.1 购买域名

如果用户已经有注册过的域名,则可以直接进行下一步绑定域名,如果没有域名,则可以参考域名购买

7.2 绑定域名

  1. 登录管理控制台,进入域名管理
  2. 选择需要绑定frontend service的外网IP的域名,点击操作栏中的解析。

  3. 在弹出的添加解析菜单栏中,记录类型选择A记录类,记录值填写frontend service的外网IP。

  4. 用域名访问服务,结果如下图所示:

上一篇
用户使用自定义 CNI 插件方法
下一篇
使用KMS对etcd数据加密