tarsdocs
  • Readme.md
  • CLA
  • LICENSE
  • 基础介绍
    • 简介
    • 基础概念
    • 基础通信协议 Tars
    • 统一通信协议 Tup
    • 开发模式介绍
    • 模板配置
    • 服务市场
    • 服务扩展
    • 框架版本说明
  • 开源版框架介绍
    • 开源版本部署
      • 部署总体介绍
      • Docker环境安装
      • Mysql安装
      • 框架源码部署(Linux/Mac)
      • 框架源码部署(Windows)
      • 框架Docker部署
      • 框架节点部署
      • 业务服务容器化
      • 框架K8SDocker 部署
      • 框架K8STARS 部署
      • 框架K8SFramework 部署(强烈推荐)
      • 框架更新及扩容
      • 调用链升级注意事项
      • TarsWeb-v3.0.3升级说明
    • 开源版管理平台
      • TarsWeb说明
      • web用户体系
      • web管理平台 API
  • 企业版本介绍
    • 企业版说明
    • 框架集群化机制
    • 框架单节点机制
    • 使用二进制包部署
    • 使用容器部署
    • 业务服务一主多备机制
    • 命令行控制终端
    • IP-LIST级联缓存机制
    • 多数据中心管理
    • 多网络支持
    • 第三方服务管理
    • 数据产生和管理机制
    • 密码重置
    • TarsPython介绍
  • 框架关键特性
    • 业务配置
    • 服务监控
    • 无损发布/重启
    • 调用链
    • IDC分组
    • 鉴权功能
  • TarsCPP
    • 编译
    • 快速开发入门
    • 使用指南
    • 开发规范
    • 服务线程说明文档
    • protobuf 协议支持文档
    • 第三方协议支持
    • HTTP1 支持
    • HTTP2 支持
    • TLS 通信支持
    • Push 功能说明
    • PushCallback 功能说明
    • Cookie 支持
    • 队列模式
    • 手动绑定
    • 性能数据
    • 2.x 版本变化
    • 3.x 版本变化
    • 协程版本说明
    • 基础类库说明
    • [案例]
      • 框架快速入门
      • Http 服务示例
  • TarsJava
    • 快速开始
    • 快速开发入门
    • [使用指南]
      • Tars 服务开发与上线
      • HTTP 服务开发与上线
      • 生成接口调用文件
    • [性能测试]
      • tars java 压测代码
  • TarsGo
    • 基本介绍
    • 快速开始
    • 使用指南
    • cmake 管理代码
    • pb2tarsgo
    • 性能数据
    • 使用示例
  • TarsPHP
    • 搭建 php 环境
    • 快速开发入门
    • [快速起步]
      • 搭建 HttpServer
      • 搭建 TimerServer
      • 搭建 TcpServer
      • 搭建 WebSocketServer
      • 弹幕活动实战
    • [框架简介]
      • 简介
      • tars-server
      • tars-client
      • tars-config
      • tars-deploy
      • tars-extension
      • tars-log
      • tars-monitor
      • tars-registry
      • tars-report
      • tars-utils
      • tars2php
    • [高阶应用]
      • PHP 的 Swoole 框架如何接入 Tars
      • 与 thinkphp 结合使用
      • 与 Swoft 结合使用
      • 与 Laravel 结合使用
      • 与 Yii2 结合使用
      • 持续集成方案
    • [其他]
      • 常见问题
      • 如何 Debug
      • changelog
      • 其他外部文档
  • Tars.js
    • 基本介绍
    • 脚手架
    • 快速开发入门
    • @tars/stream
    • @tars/rpc
    • @tars/logs
    • @tars/config
    • @tars/monitor
    • @tars/notify
    • @tars/utils
    • @tars/dyeing
    • @tars/node-agent
    • @tars/winston-tars
    • tars2node
  • K8SFramework
    • [安装和使用说明]
      • 介绍
      • 特性
      • 安装
      • 升级
      • 云原生运维
      • 管理平台
      • 证书
    • [开发环境构建]
      • Dockerfile 说明
      • 服务发布流程说明
      • 制作基础编译镜像
      • 制作业务服务镜像
      • 制作 Helm 包
      • 发布业务镜像到 K8S 集群
      • 服务发布示例
      • 如何调试业务服务
  • 服务扩展
    • 云告警
    • 接口及压测工具
    • 网关服务
    • dcache缓存服务
    • 发送邮件服务
    • 一致性存储服务
    • 一致性存储web管理平台
    • 唯一计数服务
  • 常见问题
    • 安装常见问题
    • Issues
    • Issues-tarscpp
    • Issues-tarsjava
    • Issues-tarsgo
    • Issues-tarsphp
  • 开源合作
    • TarsFramework 项目 Git 合作规范
  • 直播视频
    • B 站 TARS 培训系列课程
  • 相关文章
    • TARS 技术文章
  • 其它资源分享
    • 下载
    • Tars 介绍.pptx
    • TarsPHP 解密.pdf
    • TarsJava 本地调试.pdf
    • 微服务在腾讯的业务实践.pptx
Powered by GitBook
On this page
  • 准备
  • 1. 选定 namespace
  • 2. 选定可用节点
  • 3. 添加节点标签
  • 4. 选定支持 TLV的节点
  • 5. 准备镜像仓库
  • 执行
  • 1. 获取 Helm Chart
  • 2. 安装 Controller
  • 3. 等待 Controller 启动
  • 4. 生成 Framework 配置文件
  • 5. 安装 Framework
  • 6. 等待 Framework 启动
  • 故障排查

Was this helpful?

  1. K8SFramework
  2. [安装和使用说明]

安装

Previous特性Next升级

Last updated 2 years ago

Was this helpful?

准备

在开始安装前,我们建议您做一些准备工作,这样框架启动会更加顺利.

1. 选定 namespace

您可以在不同的 Kubernetes Namespace 分别部署一套 Framework, 每套 Framework 都是是完整且独立运行的的 Tars 框架. 在正式安装前, 明确您将要部署的 Framework 所在 Namespace 非常重要

2. 选定可用节点

TarsCloud K8SFramework 只会将 Pod 调度到您明确指出可以被 TarsCloud K8SFramework 使用的集群节点 所以在正式部署前, 明确哪些集群节点属于 TarsCloud K8SFramework 可用节点非常重要. 如果您希望查看集群的所有节点, 您可以执行如下命令:

kubectl get nodes -o wide

作为选定节点的参考指标, 我们希望您能理解 TarsCloud K8SFramework 的磁盘管理策略, 具体请参考 <<>> 文档的 "磁盘管理" 一节

3. 添加节点标签

添加标签是为了标识该节点属于 TarsCloud K8SFramework 的可用节点,标签格式为: tars.io/node.${namespace}

您可以使用如下指令完成完成该操作:

kubectl label nodes ${node1} ${node2} ... tars.io/node.${namespace}=

以选定的节点名 node-007, node-008, node-009, 选定的 namespace 名 tars-dev 为例 您可以执行:

kubectl label nodes node-007 node-008 node-009 tars.io/node.tars-dev=

如果您希望追加 TarsCloud K8SFramework 的可用节点, 也可以按以上命令操作 如果你希望撤销 TarsCloud K8SFramework 的可用节点, 您可以执行如下命令:

kubectl label nodes ${node1} ${node2} ... tars.io/node.${namespace}-

撤销标签后, 已经被调度运行的 pod 是否会立刻被节点驱逐由 Kubernetes 的调度器策略决定

4. 选定支持 TLV的节点

在 2 的基础上, 选定支持 tlv( tars local volume) 的节点, 在节点添加 tars.io/SupportLocalVolume 标签

kubectl label nodes ${node1} ${node2} ... tars.io/SupportLocalVolume=

5. 准备镜像仓库

您现有的 Tars 服务程序是以原生形式存在的,需要编译成Docker 镜像后才能被 Kubernetes 集调度. 为此,TarsCloud K8SFramework 内置了 tarsimage, tarskaniko 提供镜像编译服务, 您可以在 TarsCloud K8SFramework 管理平台上传原生程序包,经由 tarsimage, tarskaniko 编译成镜像 在正式安装前,您需要准备一个可用的镜像仓库地址, 用于接收存储编译后的镜像.

执行

1. 获取 Helm Chart

TarsCloud K8SFrameWork 的正式发布版本包含 Controller 和 Framework 两种 Helm Chart

其包名分别为 tarscontroller-${Vesion}.tgz , tarsframework-${Version}.tgz

您可以选择如下任意一种方式获取 TarsCloud K8SFramework 正式发布的 Helm Chart:

  • 直接下载

  • Helm Repo

    您可以 添加 tars-k8s repo, 然后在需要时通过 helm 指令来获取 TarsCloud K8SFramework 正式发布的 Helm Chart

    helm repo add tars-k8s https://tarscloud.github.io/K8SFramework/charts # 添加 tars-k8s repo
    helm repo update tars-k8s                                              # 更新 tars-k8s repo 索引
    helm search repo tars-k8s -l                                           # 查看 tars-k8s repo 索引

默认情况下构建出的 Helm Chart 包位于 charts 目录

2. 安装 Controller

如果您是通过 "直接下载" 或者 "源码构建" 方式获取的 Helm Chart, 执行如下命令:

# 您需要将 ${Version} 替换成实际 版本号
helm install tarscontroller tarscontroller-${Version}.tgz

如果您是通过 Helm Repo 方式获取 Helm Chart, 执行如下命令:

helm update repo tars-k8s
helm install tarscontroller tars-k8s/tarscontroller

3. 等待 Controller 启动

您可以使用如下命令查看 controller pod 启动详情 :

kubectl get pods -n tars-system -o wide

4. 生成 Framework 配置文件

新建 tarsframework.yaml 文件, 按说明填充值

# TarsCloud K8SFramework 内置了镜像编译服务,可以将您的原生程序包编译成 Docker镜像,请将您准备镜像仓库地址填充到 upload.registry
# 如果您的镜像仓库地址需要账号密码认证,那就需要新建一个 Kubernetes docker-registry secret,并将 secret 名字填充到 upload.secret
# 新建 docker-registry secret 的指令为: kubectl create secret docker-registry ${secret-name} -n ${namespace} --docker-server=${registry} --docker-username=${user} --docker-password=${pass}
upload:
  registry: ""
  secret: ""

# 如果您的 Kubernetes 集群安装了 Ingress, 可以通过此域名访问 TarsCloud K8SFramework 管理平台
web: ""

5. 安装 Framework

如果您是通过 "直接下载" 或者 "源码构建" 方式获取的 Helm Chart, 请执行如下命令:

# 您需要将 ${Namespace} 替换成实际 命名空间
# 您需要将 ${Version} 替换成实际 版本号
helm install tarsframework -n ${Namespace} --create-namespace -f tarsframework.yaml tarsframework-${Version}.tgz

如果您是通过 Helm Repo 方式获取 Helm Chart, 请执行如下命令:

# 您需要将 ${Namespace} 替换成实际 命名空间
helm update repo tars-k8s
helm install tarsframework -n ${Namespace} --create-namespace -f tarsframework.yaml tars-k8s/tarsframework

6. 等待 Framework 启动

您可以执行如下命令查看 Framework 服务的 Pod 启动状态:

kubectl get pods -n ${namespace} -o wide

如果未遵循 "准备" 操作, 此时会发现部分 Framework 服务 pod 启动失败. 请参考 "故障排查" 处理

故障排查

故障现象:

  1. 如果您未遵循 "准备" 给任何节点添加 "tars.io/node.${namespace}" 标签, 会导致 所有 pod 处于 "Pending" 状态

  2. 如果您未遵循 "准备" 给任何节点添加 "tars.io/SupportLocalVolume" 标签, 会导致 tars-tarslog-0 处于 "Pending" 状态

  3. 如果您未遵循 "准备" 给任何节点添加 "tars.io/SupportLocalVolume" 标签, 会导致 tars-elasticsearch-0 处于 "Pending" 状态

故障处理:

  • 为处理问题1, 您需要遵循 "准备" 给选定节点添加 "tars.io/node.${namespace}" 标签

    # 查询节点
    kubectl get nodes
    
    # 以选定节点为 node_1, node_2, framework 安装命名空间为 tars-dev 为例
    kubectl label nodes node_1 node_2 tars.io/node.tars-dev=
  • 为处理问题2, 您需要遵循 "准备" 给选定节点添加 "tars.io/SupportLocalVolume" 标签

    # 查询节点
    kubectl get nodes
    
    # 以选定节点为 node_1, node_2为例
    kubectl label nodes node_1 node_2 tars.io/SupportLocalVolume=
  • 为处理问题3, 您需要遵循 "准备" 给选定节点添加 "tars.io/SupportLocalVolume" 标签

    # 查询节点
    kubectl get nodes
    
    # 以选定节点为 node_1, node_2为例
    kubectl label nodes node_1 node_2 tars.io/SupportLocalVolume=
  • 问题3 解决后, 问题4 所述的 pod 会被 Kubernetes 调度器多次重启直到恢复正常, 如果重启间隔过长, 您可以删除 pod 并等待重启恢复

关于 tlv 的介绍可以参考 , "TServer与Statefulset的映射. tserver.spec.k8s.mounts" 和 "磁盘管理.TLV" 章节 如果您仅仅是用于测试, 那么您暂时可以给任意节点添加该标签 您可以使用 以下命令执行该操作:

您可以在 查看并下载 TarsCloud K8SFramework 正式发布的 Helm Chart

您也可以参考 <<>>文档的 构建目标.Chart 节, 自行从源码构建 Chart 包

特性
<<特性>>
github
构建