v2.0
v1.0
  1. Release Notes
    1. Release Notes - 2.0.2最新
    1. Release Notes - 2.0.1
    1. Release Notes - 2.0.0
  1. 产品介绍
    1. 产品简介
    1. 产品功能
    1. 产品优势
    1. 架构说明
    1. 应用场景
    1. 名词解释
  1. 安装指南
    1. 安装说明
    1. 需开放的端口
    1. All-in-One 模式
    1. Multi-Node 模式
    1. 在 Kubernetes 在线部署 KubeSphere
    1. 在 Kubernetes 离线部署 KubeSphere
    1. Master 和 etcd 节点高可用
    1. 存储安装配置说明
    1. 集群组件配置说明
    1. 安装负载均衡器插件
    1. 安装内置 Harbor
    1. 安装内置 GitLab
    1. 升级
    1. 访问 SonarQube 和 Jenkins 服务端
    1. 集群节点扩容
    1. 卸载
  1. 快速入门
    1. 入门必读
    1. 示例一 - 多租户管理快速入门
    1. 示例二 - 应用路由与服务示例
    1. 示例三 - 部署 MySQL
    1. 示例四 - 部署 Wordpress
    1. 示例五 - 创建简单任务
    1. 示例六 - 一键部署应用
    1. 示例七 - 设置弹性伸缩 (HPA)
    1. 示例八 - Source-to-Image
    1. 示例九 - Bookinfo 微服务的灰度发布
    1. 示例十 - 基于Spring Boot项目构建流水线
    1. 示例十一 - 图形化构建流水线
    1. 示例十二 - CI/CD 流水线(离线版)
    1. 示例十三 - 使用 Ingress-Nginx 进行灰度发布
  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. 通用配置
      1. 系统配置修改
      2. 上传镜像至 Harbor
      3. Jenkins 系统设置
    1. FAQ
      1. DevOps 运维FAQ
  1. 用户指南
    1. 应用
      1. 应用模板
      2. 自制应用
      3. 流量治理
      4. 熔断
    1. 工作负载
      1. 工作负载概述
      2. 部署
      3. 有状态副本集
      4. 守护进程集
      5. 任务
      6. 定时任务
      7. 设置健康检查器
      8. 工作负载管理
      9. 自定义 S2i 模板
    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. API 文档
    1. API 文档
    1. 如何调用 API
    1. API 常用术语对照
    1. 监控指标说明
  1. 常见问题
    1. 安装常见问题
    1. 存储常见问题
    1. 控制台使用常见问题
    1. DevOps 常见问题
  1. 附录
    1. 部署 Ceph 存储服务端
    1. 部署 GlusterFS 存储服务端
    1. 云平台配置端口转发和防火墙
KubeSphere®️ 2020 All Rights Reserved.

服务管理

一个 Kubernetes 的服务 (Service) 是一种抽象,它定义了一类 Pod 的逻辑集合和一个用于访问它们的策略 - 有的时候被称之为微服务,而在这个集合中的 Pod 的 IP 地址以及数量等都会发生动态变化,这个服务的客户端并不需要知道这些变化,也不需要自己来记录这个集合的 Pod 信息,这一切都是由抽象层 Service 来完成。

前提条件

已创建了工作负载,若还未创建工作负载可参考 工作负载

创建服务

登录 KubeSphere 控制台,在所属的企业空间中选择已有 项目 或新建项目,访问左侧菜单栏,点击 网络与服务 → 服务 进入服务列表页。

创建服务支持三种方式,页面创建导入 yaml/json 文件编辑模式创建。若选择以编辑模式,可点击右上角编辑模式进入代码界面,支持 yaml 和 json 格式。左上角显示配置文件列表和导入导出按钮。其中导入 yaml 文件方式会自动将 yaml 文件内容填充到页面上,用户根据需要可以在页面上调整后再行创建,编辑模式可以方便习惯命令行操作的用户直接在页面上编辑 yaml 文件创建服务。以下主要介绍页面创建的方式。

第一步:填写基本信息

在服务列表页,点击 创建 按钮,填写基本信息:

  • 名称:为服务起一个简洁明了的名称,便于用户浏览和搜索。
  • 别名:帮助您更好的区分资源,并支持中文名称。
  • 描述信息:详细介绍服务的特性,当用户想进一步了解该服务时,描述内容将变得尤为重要。

基本信息

第二步:服务设置

2.1. 选择需要创建服务的类型,每种服务类型适合不同的场景:

  • VirtualIP:以集群为服务生成的集群内唯一的 IP 为基础,集群内部可以通过此 IP 来访问服务,集群外部可以通过 NodePort 和 LoadBalancer 方式来访问服务。此类型适合绝大多数服务。
  • Headless (selector):集群不为服务生成 IP,集群内部通过服务的后端 Pod IP 直接访问服务。此类型适合后端异构的服务,比如需要区分主从的服务。
  • Headless (externalname):将集群或者项目外部服务映射到集群或项目内。

2.2. 若选择 VIP 或 Headless (selector),需填写服务设置:

  • 选择器:选择器来选择不同的后端,使用键值对 (Label Selector) 或 指定工作负载 可以选择多个部署。
  • 端口:服务的端口号和目标端口,目标端口是对应的后端工作负载的端口号,如 MySQL 的 3306 端口。
  • 会话亲和性

    • None:以 Round robin 的方式轮询后端的 Pods。
    • ClientIP:来自同一个 IP 地址的访问请求都转发到同一个后端 Pod。

创建服务

若选择 Headless (externalname),通过返回 CNAME 和它的值,可以将服务映射到 externalName 字段的内容。

第三步:添加标签

标签设置页用于指定资源对应的一组或者多组标签 (Label)。Label 以键值对的形式附加到任何对象上,如 Pod,Service,Node 等,定义好标签后,其他对象就可以通过标签来对对象进行引用,最常见的用法便是通过节点选择器来引用对象。

添加标签

第四步:外网访问设置

为服务选择外网访问方式,LoadBalancer 的方式需要对应的负载均衡器插件来启用,如果未安装插件则无法使用。服务创建后支持修改外网访问方式。

  • None: 只在集群内部访问服务,集群外部无法访问。
  • NodePort: 集群外部可以通过访问集群节点的对应端口来访问服务,端口将由集群自动创建。
  • LoadBalancer: 通过云服务商提供的负载均衡器来访问服务。

注意:由于使用 Load Balancer 需要在安装前配置与安装与云服务商对接的 cloud-controller-manage 插件,参考 安装负载均衡器插件 来安装和使用负载均衡器插件。

外网访问服务

创建完成后即可在服务列表中查看成功创建的服务详情。

访问服务

服务创建后对外提供了不同的访问方式,可满足不同网络环境下提供不同的访问通道。

集群内部访问 (服务内部域名或 Virtual IP)

后端工作负载的服务暴露给集群内其他工作负载访问的方式,可通过服务在集群中的域名或 Virtual IP 访问。

  • 其中集群内部域名格式为: <服务名称>.<服务所在的项目名称>.svc.cluster.local,例如nginx.demo-namespace.svc.cluster.local,可通过 curl 命令进行验证。
  • Virtual IP 的形式为:Virtual IP:Port,例如访问下图的 nginx : curl 10.233.18.78:80

节点访问 (NodePort)

节点访问是在每个节点的 IP 上开放一个节点端口 (NodePort),通过节点端口对外暴露服务。通过请求 <节点 IP>:<NodePort>,可以从集群的外部访问一个 NodePort 服务。

负载均衡 (LoadBalancer)

通过云服务商提供的负载均衡器从公网来访问服务,由于使用 LoadBalancer 需要在安装前配置与安装与云服务商对接的 cloud-controller-manage 插件,参考 安装负载均衡器插件 来安装和使用负载均衡器插件。

安装完成后,在创服务的外网访问中,需要在 LoadBalancer 中添加两条 Annotation 并填入需要绑定的公网 IP 的 ID,然后就可以通过公网 IP 访问该服务。

service.beta.kubernetes.io/qingcloud-load-balancer-type       0
service.beta.kubernetes.io/qingcloud-load-balancer-eip-ids    填写公网 IP 的 ID