蓝鲸容器管理平台(BCS,Blueking Container Service)是高度可扩展、灵活易用的容器管理服务。支持社区原生 Kubernetes 模式,用户无需关注基础设施的安装、运维和管理,只需要调用简单的 API,或者在页面上进行简单的配置,便可对容器进行启动、停止等操作,查看集群、容器及服务的状态,以及使用各种组件服务。

产品架构图

 BCS 是蓝鲸基于社区原生 K8S 的容器部署管理解决方案

产品优势

1、支持原生 Kubernetes 容器编排方案

Kubernetes 是基于 Google borg 系统开源的项目,集成了 资源调度 和 应用编排 的能力,面向分布式应用、微服务和大规模集群管理。

2、基于 Kubernetes

  • 基于原生 Kubernetes 实现,秉承社区开源、开放的心态
  • 支持社区容器、网络、存储实施方案

3、基于 Docker 的服务生态

  • 服务发现

基于 Kubernetes 的集群,都自带了服务发现的能力。服务发现有两种模式,一是通过服务的域名访问服务,在域名上动态绑定当前服务的后端;另一种是通过服务代理容器,流量全部导向服务代理容器,由代理容器将流量转发到服务的后端。

  • 负载均衡

负载均衡器是一组特殊的容器,用来帮一个服务或者多个服务实现后端流量或者处理能力的均衡。用户可以设定负载均衡的算法以达到不同的负载均衡效果。

  • 分布式配置中心

业务程序在运行过程中往往需要使用不同的配置启动,在活动期间,也可能需要通过配置调整策略。蓝鲸容器服务提供了分布式配置中心,用户可以将配置存放在配置中心,业务容器可以通过指定的协议方式获取到对应的配置。

  • CNI 格式的 Overlay 和 Underlay 网络支持

容器的网络方案不仅支持 Overlay,也支持 Underlay 的方案。在 Underlay 方案下,每个容器拥有一个真实的内网 IP,并且在容器销毁时自动回收该 IP,用户也可以设定容器重启、迁移时使用固定的一组 IP。

4、认证

蓝鲸智云容器管理平台 于 2019 年 7 月 30 日通过了中国 云计算开源产业联盟 组织的 可信云容器解决方案评估认证

蓝鲸智云容器管理平台在基本能力要求、应用场景技术指标、安全性等解决方案质量方面,以及产品周期、运维服务、权益保障等服务指标的完备性和规范性方面均达到可信云容器解决方案的评估标准。应用场景满足以下四个:

  • 开发测试场景
  • 持续集成、持续交付
  • 运维自动化
  • 微服务

产品功能

模板集使用介绍

在 BCS 中,模板集合是 Kubernetes 配置文件模板的集合。您可以通过将多个应用的配置构成一个模板集,来简化服务管理的复杂度;您还可以将模板里面需要频繁修改的数据设置成变量,以方便维护。

通过『模板集』+『变量』来管理您的业务将非常方便。

1、理解“服务”

如果您的服务由多个应用构成,通过 模板集 + 变量 生成 “应用” 来管理您的服务将会非常方便。

为了方便大家理解,本文将以一个简单的 Nginx 服务为例来说明。该服务下只有一个 Nginx 应用,通过修改模板中 NGINX_PORT 变量的值,将应用以不同的端口部署到不同的命名空间中。

2、创建模板集

推送镜像到仓库

在创建模板前,先通过以下几个步骤将 Nginx 应用的镜像推送到蓝鲸容器服务的镜像仓库中。

获取镜像的压缩包

在本地执行 docker save 获取镜像压缩包,您也可以直接点击下载 nginx.tar

docker pull nginx
docker save nginx > nginx.tar

上传镜像

选中【仓库】菜单的【项目镜像】页面,参考 Harbor 仓库使用指南,通过命令行工具来推送镜像。

创建项目模板集

选中【模板集】菜单,点击【添加模板集】,选择【表单模式】。进入创建模板集页面后,可以在模板集定义 Deployment、Service 等资源。本文的案例中,只需要创建一个 Deployment。首先填入一些基本信息,包括名称、描述,实例数量。Kubernetes 使用选择器(spec.selector.matchLabels)关联资源,所以在创建模板的时候需要给应用打一个固定的标签,并且把这个标签添加到选择器中。点击下方的 【Pod 模板设置】,将网络策略设置为 Host 模式,可以直接使用主机网络,将 Nginx 容器端口对外暴露。

接着定义 Nginx 容器,需要填写名称、描述,选择 Nginx 镜像,同时将容器端口设置成变量,这样可以将应用以不同的端口部署到不同的命名空间中(nginx默认监听80端口,这里的变量使用仅为示例效果,实际指定时设置为80)。

点击上方的【保存】按钮,将模板集的保存到一个版本中。

3、设置变量

一份模板集,通过设置变量,可以实例化出不同的模板集实例。变量有 3 种类型:全局变量、集群变量和命名空间变量。

  • 全局变量:一个项目下只会有一个值的变量。如系统变量里面的:项目 ID、业务 ID
  • 集群变量:同一个变量可以针对不同的集群设置不同的值。如系统变量里面的:集群 ID、仓库域名
  • 命名空间变量:同一个变量可以针对不同的命名空间设置不同的值

注意:同一个项目下变量的 key 不允许重复

更多变量管理内容可点击这里查看

4、创建服务示例

选中【模板集】菜单,点击【实例化】按钮进入实例化页面,选择模板集、命名空间,点击【创建】按钮完成实例化操作。

5、确认完成

应用部署完成后,您可以在容器服务左侧导航中点击【应用】,查看 Nginx 服务应用实例,并可以通过 Host IP 和配置的容器端口访问服务。

镜像仓库使用指南

1、仓库

容器服务采用 Harbor 做镜像仓库。仓库分为公共镜像和项目镜像,公共镜像可以被所有项目共享,项目镜像只有当前项目有权限访问。

2、Harbor 镜像仓库简介

Harbor 是 VMware 公司开源的企业级 Docker Registry 管理项目。在 Harbor 仓库中,用户和仓库都是基于项目进行组织,用户基于项目可以拥有不同的权限。

Harbor 项目类型分为公共仓库和私有仓库两种类型,其中

  • 公共仓库:任何使用者都可以获取这个仓库中的镜像。
  • 私有仓库:只有被授予权限的用户可以获取这个仓库中的镜像。

更多关于 Harbor 项目和用户的使用指引,请参考 Harbor 的用户手册

3、登录服务中的 Harbor 仓库

获取项目仓库账号

选中【的【Charts Helm】菜单中仓库】,点击右上角【如何推送 Helm Chart 到项目仓库】指引,可以获取仓库信息。

具体包含以下内容:

  • 镜像仓库地址,下文用<registry_url>表示(注意:地址包含端口)。<registry_url>实际是服务上(如集群中的 Node 节点)配置的内网 consul 域名,如果需要浏览器或者本地终端访问,可以本地配置 hosts,如10.0.0.1 <registry_url>,其中10.0.0.1是<registry_url>后端服务器上的 IP(如外网 IP,保证本地可访问)
  • 镜像仓库用户名和密码 (Harbor 中的一个项目账号,可以上传 镜像 和 Charts)
  • 项目 code,下文用<project_code>表示,如上图中的demoproj1

登录镜像仓库

docker login --username=<username> <registry_url>
Password:
Login Succeeded

注意:镜像仓库地址包含端口。

推送镜像

推送镜像之前,要先将镜像 tag 为满足 Harbor 项目前缀要求的格式。

例如需要将本地镜像nginx:1.18.0推送到当前项目下,首先将镜像按下面的命令重新 tag。

docker tag nginx:1.18.0 <registry_url>/<project_code>/nginx:1.18.0
docker push <registry_url>/<project_code>/nginx:1.18.0

拉取镜像

拉取项目镜像前需先完成登录,拉取公共镜像可以不登录。

docker pull <registry_url>/<project_code>/nginx:1.18.0

4、登录 Harbor Web仓库

获取Harbor

  • 获取项目仓库账号

在 【Chart 仓库】菜单下,点击【查看项目 Chart 仓库配置信息】后,可以获取 Harbor 的项目账号,访问项目(BCS 中新建的项目)仓库。

  • 获取 Harbor 管理员账号

常用环境变量 中可以找到 Harbor 的用户名HARBOR_SERVER_ADMIN_USER以及密码HARBOR_SERVER_ADMIN_PASS。

访问 Harbor Web 端

  • 项目仓库账号视角

通过浏览器可以访问地址 <registry_url>,进入 Harbor 管理页面,从中可以看到项目的访问级别有“公开”和“私有”。

在上图中点击 项目仓库 joyfulgame,可以看到有 2 个镜像,其中joyfulgame是<project_code>。

点击 【Helm Charts】页面,可以看到仓库中上传的 Charts。

  • Harbor 管理员账号 Web 端

使用管理员账号,可以实现用户管理、仓库管理、复制管理、配置管理。

更多产品功能可点击这里进入产品文档

场景案例

快速构建 Nginx 集群

1、情景

传统的 Nginx 集群要先部署多个 Nginx 节点,然后通过 upstream 统一一个入口提供给用户访问。 该过程操作繁琐,接下来看 BCS(容器管理平台) 如何通过 容器调度 快速构建 Nginx 集群。

2、前提条件

  • K8S 基本概念,包含 DeploymentServices
  • 完成 BCS 部署
  • 准备 2 台云主机:4 核 8 G,不低于 CentOS 7,K8s Master 和 Node 各 1 台
  • 完成上述 2 台云主机的 Agent 安装 ,并分配至 CMDB 业务下

3、操作步骤

1.新建集群

2.BCS 快速构建 Nginx 集群

4、新建集群

启用容器服务

在 BCS 首页,点击新建项目,如欢乐游戏(demo)。

然后选择容器编排类型为 Kubernetes ,关联 前提条件 中提到的 CMDB 业务,点击启用容器服务。

新建集群

启用容器服务后,进入容器服务欢迎页,点击创建容器集群。

按提示填写集群的基本信息。

容器服务的集群划分和 传统单体应用在 CMDB 中的集群划分很类似,可以按照地域(如华北区)或者完全独立的应用集合(微信区)来划分。

选择 1 台云主机作为 Master。

点击确定后,集群开始初始化。

点击节点管理

点击添加节点,按提示节点添加。

至此,新建集群完毕。可以看到集群的基础信息。

另外,在集群的设置(⋮)下拉菜单中,可以看到集群主要性能指标。

5、BCS 快速构建 Nginx 集群

新建命名空间

新建命名空间dev。

新建模板集

模板集,可以类比为 K8S 中 Helm 的Charts,在 K8S 编排中,是 K8S 对象的集合:Deployment(无状态)、StatefulSet(有状态)、DaemonSet(守护进程集)、Job(定时任务)、Configmap(配置项)、Secret(保密字典),具体参见 模板集使用介绍 。

打开菜单[模板集],新建模板集web-nginx。

按提示,填写Deployment

填写Service

实例化

检查部署效果

在菜单网络 -> Services中,找到刚实例化的 Service web-nginx。

在菜单[应用] -> [Deployment]中可以找到 web-nginx。

以及其运行指标:

通过访问 Node+NodePort,可以查看刚刚部署 Nginx 集群的版本号。

[root@ip-10-0-5-94-n-bcs-k8s-40015 ~]# curl 10.0.5.94:30008 -I
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Thu, 08 Aug 2019 09:11:42 GMT

通过访问Service IP + Port,也可以查看刚部署 Nginx 的版本号。

[root@ip-10-0-5-94-n-bcs-k8s-40015 ~]# curl 10.254.11.4:8088 -I
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Thu, 08 Aug 2019 09:12:33 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 11 Jul 2017 13:29:18 GMT
Connection: keep-alive
ETag: "5964d2ae-264"
Accept-Ranges: bytes

更多场景案例可点击这里进入官网文档查看

下载部署

蓝鲸社区版V6.0.3点击下载

容器管理平台点击下载

BCS部署文档:点击跳转

部署福利活动:点击跳转

BCS目前已正式对外开源,欢迎共建

硬件要求

  • 系统版本:CentOS 7(推荐使用)
  • 服务器数量:3台(体验环境)
数据库服务器 BCS后台服务器 容器监控服务器
4核+8G+200G磁盘 4核+8G+100G磁盘 4核+4G+100G磁盘

如何使用蓝鲸容器管理平台

视频内容

其他渠道观看教程视频

腾讯课堂:点击这里

系列课程及相关PPT可进入腾讯课堂获取

腾讯视频:点击这里

高清视频可进入腾讯视频观看

问题咨询及反馈

1、蓝鲸问答社区--部署安装板块(专人解答):点击跳转

2、蓝鲸问答社区--产品使用板块(专人解答):点击跳转

文章来源于腾讯云开发者社区,点击查看原文