v2.1
v2.0
v1.0
  1. Release Notes
    1. Release Notes - 2.1.1最新
    1. Release Notes - 2.1.0
    1. Release Notes - 2.0.2
    1. Release Notes - 2.0.1
    1. Release Notes - 2.0.0
  1. 产品介绍
    1. 什么是 KubeSphere
    1. 平台功能
    1. 为什么选择 KubeSphere
    1. 架构说明
    1. 应用场景
    1. 名词解释
  1. 安装指南
    1. 安装说明
      1. 概览
      2. 网络防火墙配置
      3. 集群其它参数配置
    1. 在 Linux 快速安装 KubeSphere
      1. All-in-One 模式
      2. Multi-Node 模式
      3. 完整安装(开启所有功能组件)
    1. 在 Kubernetes 安装 KubeSphere
      1. 准备工作
      2. 在 Kubernetes 安装 KubeSphere
    1. 安装可插拔的功能组件
      1. 可插拔功能组件概览
      2. 安装应用商店
      3. 安装内置的 DevOps 系统
      4. 安装内置的日志系统
      5. 安装微服务治理组件(Service Mesh)
      6. 安装告警通知系统
      7. 安装 Metrics-server 开启 HPA
      8. 验证可插拔功能组件的安装
    1. 集群高可用配置安装
      1. 在青云安装 HA 集群
      2. 在华为云安装 HA 集群
      3. 持久化存储配置说明
    1. 相关工具与插件
      1. 安装内置 Grafana
      2. 访问 SonarQube 和 Jenkins 服务端
      3. 安装 Porter 负载均衡器插件
      4. 安装 QingCloud 负载均衡器插件
    1. 认证配置
      1. 接入 LDAP / AD 域账号(Beta)
    1. 集群运维
      1. 安装后添加新的存储类型
      2. 集群节点扩容
      3. 卸载
  1. 升级指南
    1. 升级必读
    1. All-in-One 升级
    1. Multi-node 升级
  1. 快速入门
    1. 入门必读
    1. 1. 多租户管理快速入门
    1. 2. 应用路由与服务示例
    1. 3. 创建 Wordpress 应用并发布至 K8s
    1. 4. 一键部署应用
    1. 5. 创建简单任务
    1. 6. 设置弹性伸缩 (HPA)
    1. 7. Source-to-Image
    1. 8. Binary-to-Image
    1. 9. 基于Spring Boot项目构建流水线
    1. 10. 图形化构建流水线
    1. 11. Bookinfo 微服务的灰度发布
    1. 12. 使用 Ingress-Nginx 进行灰度发布
    1. 13. 应用商店
  1. 管理员指南
    1. 多租户管理
      1. 多租户管理概述
      2. 角色权限概览
    1. 平台管理
      1. 企业空间管理
      2. 账号管理
      3. 平台角色
    1. 基础设施
      1. 服务组件
      2. 主机管理
      3. 存储类型
    1. 监控中心
      1. 监控概述
      2. 如何利用监控定位问题
      3. 集群状态监控
      4. 应用资源监控
      5. 监控策略 - 节点级别
      6. 监控消息 - 节点级别
    1. 平台设置
      1. 应用仓库
      2. 基于本地仓库搭建应用仓库部署Redis
      3. 上传应用到 KubeSphere 官方仓库
      4. 基于 GitHub 搭建自有应用仓库
      5. 邮件服务器
      6. 日志收集
      7. 添加 Fluentd 作为日志接收者
      8. 添加 Kafka 作为日志接收者
    1. 工具箱
      1. Web Kubectl
      2. 日志收集
    1. DevOps 配置
      1. 系统配置修改
      2. 上传镜像至 Harbor
      3. 流水线配置邮件服务器
      4. Jenkins 系统设置
    1. FAQ
      1. DevOps 运维FAQ
  1. 用户指南
    1. 应用
      1. 应用模板
      2. 自制应用
      3. 流量治理
      4. 熔断
    1. 工作负载
      1. 工作负载概述
      2. 部署
      3. 有状态副本集
      4. 守护进程集
      5. 任务
      6. 定时任务
      7. 设置健康检查器
      8. 工作负载管理
      9. 落盘日志收集
    1. 存储
      1. 存储概述
      2. 存储卷
      3. Local Volume 使用方法
    1. 网络与服务
      1. 服务管理
      2. 灰度发布
      3. 应用路由
    1. 监控告警
      1. 告警策略 - 工作负载级别
      2. 告警消息 - 工作负载级别
    1. 配置中心
      1. 密钥
      2. 配置
      3. 镜像仓库
    1. 项目设置
      1. 基本信息
      2. 成员角色
      3. 项目成员
      4. 外网访问
    1. DevOps 工程
      1. DevOps 工程概述
      2. 管理 DevOps 工程
      3. 流水线
      4. 凭证管理
      5. 添加代码仓库
      6. 访问 SonarQube 并创建 Token
      7. 设置自动触发扫描
      8. Jenkins Agent 说明
      9. 流水线常见问题
  1. 开发者指南
    1. Helm 应用开发
      1. 开发模板规范
      2. Helm 应用开发入门
    1. Source to Image(S2I) 自定义模版开发
      1. S2I 原理及流程介绍
      2. 自定义 S2I 模版
  1. API 文档
    1. API 文档
    1. 如何调用 API
    1. API 常用术语对照
    1. 监控指标说明
  1. 常见问题
    1. 安装常见问题
    1. 存储常见问题
    1. 控制台使用常见问题
    1. DevOps 常见问题
  1. 附录
    1. 部署 Ceph 存储服务端
    1. 部署 GlusterFS 存储服务端
    1. 安装 OpenEBS 创建 LocalPV 存储类型
    1. 云平台配置端口转发和防火墙
KubeSphere®️ 2020 All Rights Reserved.

Binary to Image

编辑

什么是 Binary-to-image

Binary-to-image (B2I) 是 2.1.0 版本新增的功能,旨在帮助开发者和运维在项目打包成 WAR、JAR、Binary 这一类的制品后,快速将制品或二进制的 Package 打包成 Docker 镜像,并发布到 DockerHub 或 Harbor 等镜像仓库中。并且支持以创建服务的形式,一键将制品生成镜像推送到仓库,并创建其部署 (Deployment) 和服务 (Service) 最终自动发布到 Kubernetes 中。

Binary-to-image 特性

Binary-to-image (B2I)能够在实际的项目快速部署上线、微服务改造的过程中,极大地赋能开发者和运维用户。B2I 无需编写一行 Dockerfile,降低学习成本的同时提升发布效率,使用户能够更好地专注在业务本身。

下图简述了 B2I 的业务实现流程,B2I 已将以下多个步骤工具化和流程化,因此只需要在一个表单中完成。

  • ① 在 KubeSphere 创建 B2I 类型的服务,上传制品或二进制包
  • ② B2I 将在后台创建 K8s Job、Deployment 和 Service
  • ③ 将制品自动打包成 Docker 镜像
  • ④ 推送镜像至 DockerHub 或 Harbor
  • ⑤ B2I Job 将在第二步创建的 Deloyment 中使用仓库中的镜像
  • ⑥ 自动发布至 Kubernetes

说明:在上述流程中,B2I Job 还会在后台执行状态上报的功能

接下来用两个示例介绍 B2I 的两种使用方式,本文提供了示例制品 WAR、JAR、Binary 方便实操。

以下提供 5 个供测试使用的制品包,您也可以提交个人打包的测试项目到 KubeSphere 社区

示例包 示例项目(代码仓库)
b2i-war-java8.war Spring-MVC-Showcase
b2i-war-java11.war SpringMVC5
b2i-binary DevOps-go-sample
b2i-jar-java11.jar java-maven-example
b2i-jar-java8.jar devops-java-sample

创建服务使用 B2I

第一个示例将使用创建服务的方式实现 B2I,实现上图的 6 个步骤。在 2.1.0 版本中,创建服务的方式和用户体验相较于 2.0.x 版本变得更加方便和高效。

前提条件

  • B2I 属于 DevOps 功能组件,因此使用前需开启安装 DevOps 功能组件
  • 已创建了企业空间、项目和普通用户 project-regular 账号 (该已账号已被邀请至示例项目),请参考 多租户管理快速入门

视频教程

创建密钥

由于 B2I 的自动构建流程中需要将打包的 Docker 镜像推送到镜像仓库,因此需要先创建一个镜像仓库的密钥 (Secret),以下创建一个 DockerHub 的密钥,可参考 创建常用的几类密钥

创建服务

  1. 应用负载 → 服务 下点击 创建服务

  2. 下拉至 通过制品构建新的服务,选择 WAR,此处仅以一个 Spring-MVC-Showcase 的项目仓库作为示例,将它的 WAR 包(b2i-war-java8) b2i-war-java8.war 上传到 KubeSphere。

  3. 自定义名称,如 b2i-war-java8,下一步构建设置中,默认无状态服务,点击将本地的制品 b2i-war-java8.war 上传,构建环境选择 tomcat85-java8-centos7:latest

  4. 镜像名称为 <DOCKERHUB_USERNAME>/<IMAGE NAME>,tag 默认 latest,目标镜像仓库选择已创建的 dockerhub-secret

  1. 下一步容器设置,镜像名称和端口名称可自定义,容器端口服务端口 填写 tomcat 默认的 8080

  2. 由于是无状态服务,因此跳过挂载存储。

  3. 在高级设置中勾选外网访问,并设置为 NodePort,点击 创建

预览动图

验证状态

B2I 创建完成后,在 构建镜像 下查看 B2I 的构建状态,包括执行记录 (动态日志)、资源状态、镜像制品、环境变量和 Events。

查看构建镜像

查看服务

查看部署状态

查看任务执行状态

若您习惯使用 kubectl 命令行,也可以通过 工具箱 → Web Kubectl 通过 kubectl get all -n PRJECT_NAME 来查看 B2I 具体创建了哪些资源。

web kubectl 查看资源

访问服务

从服务的列表中,可以看到 NodePort 是 30571,因此在浏览器通过 <$IP>:<$NodePort>/b2i-war-java8/ 访问 Spring-MVC-Showcase 服务(默认的访问路径 <$IP>:<$NodePort> 是 tomcat 服务)。

查看镜像推送

登录 DockerHub 账号,查看 B2I 自动推送的 Docker 镜像。

构建镜像使用 B2I

第一个示例是以创建服务的方式完成了 B2I,最终将 Spring-MVC-Showcase 的 WAR 包打包成镜像后部署到了 Kubernetes。而以 构建镜像 的方式使用 B2I 更像一个基于制品自动生成镜像的 快速工具,最终不会自动发布至 Kubernetes。

以下将使用一个基于 Go 语言示例项目 打包的 Binary 制品 - b2i-binary(点击下载) ,演示 B2I 的第二种使用方式 - 构建镜像使用 B2I。

上传制品包

1、在 构建镜像 下点击 创建构建镜像,然后选择 binary

2、下一步,将下载的 b2i-binary 上传至 KubeSphere,镜像名称可自定义 <DOCKERHUB_USERNAME>/<IMAGE NAME>,目标镜像仓库选择已创建的 dockerhub-secret,点击 创建

验证 B2I 状态

查看任务

验证镜像推送

登录 DockerHub 账号,查看 B2I 自动推送的 Docker 镜像。

总结

您可以根据需求使用上述两种不同的方式来完成 B2I 的自动镜像构建。一般来说,像 Java 语言的项目,可以通过 mvn package 命令打成 JAR/WAR 包,而像 C、C++ 和 Go 这类不需要运行时的语言,可以使用其语言自身的 build 命令打包成 binary 格式的制品,最终就可以通过 KubeSphere B2I 来快速将制品打包成 Docker 镜像,并发布到镜像仓库和 Kubernetes 中。而像 Python、Nodejs 和 PHP 这类脚本式语言的项目,可以通过 KubeSphere Source-to-Image (S2I) 完成类似 B2I 的自动构建与发布。