安装与部署

概述

本章节主要介绍 rubik 组件的安装以及部署方式。

软硬件要求

硬件要求

  • 当前仅支持 x86、aarch64 架构
  • rubik 磁盘使用需求:配额 1GB 及以上。
  • rubik 内存使用需求:配额 100MB 及以上。

软件要求

  • 操作系统:openEuler 22.03-LTS-SP1
  • 内核:openEuler 22.03-LTS-SP1 版本内核

环境准备

  • 安装 openEuler 系统,安装方法参考《openEuler 22.03-LTS-SP1 安装指南》
  • 安装并部署 kubernetes,安装及部署方法参考《Kubernetes 集群部署指南》。
  • 安装 docker 或 isulad 容器引擎,若采用 isulad 容器引擎,需同时安装 isula-build 容器镜像构建工具。

安装 rubik

rubik 以DaemonSet形式部署在 k8s 的每一个节点上,故需要在每一个节点上使用以下步骤安装 rubik rpm 包。

  1. 配置 yum 源:openEuler 22.03-LTS-SP1 和 openEuler 22.03-LTS-SP1:EPOL(rubik 组件当前仅在 EPOL 源中),参考如下:

    # openEuler 22.03-LTS-SP1 官方发布源
    name=openEuler22.03-LTS-SP1
    baseurl=https://repo.openeuler.org/openEuler-22.03-LTS-SP1/everything/$basearch/ 
    enabled=1
    gpgcheck=1
    gpgkey=https://repo.openeuler.org/openEuler-22.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler
    
    # openEuler 22.03-LTS-SP1:Epol 官方发布源
    name=openEuler22.03-LTS-SP1-Epol
    baseurl=https://repo.openeuler.org/openEuler-22.03-LTS-SP1/EPOL/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=https://repo.openeuler.org/openEuler-22.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler
    
  2. 使用 root 权限安装 rubik:

    sudo yum install -y rubik
    

说明

rubik 工具相关文件会安装在/var/lib/rubik 目录下

部署 rubik

rubik 以容器形式运行在混合部署场景下的 k8s 集群中,用于对不同优先级业务进行资源隔离和限制,避免离线业务对在线业务产生干扰,在提高资源总体利用率的同时保障在线业务的服务质量。当前 rubik 支持对 CPU、内存资源进行隔离和限制等特性,需配合 openEuler 22.03-LTS-SP1 版本的内核使用。若用户想要开启内存优先级特性(即针对不同优先级业务实现内存资源的分级),需要通过设置/proc/sys/vm/memcg_qos_enable 开关,有效值为 0 和 1,其中 0 为默认值表示关闭特性,1 表示开启特性。

sudo echo 1 > /proc/sys/vm/memcg_qos_enable

部署 rubik daemonset

  1. 使用 docker 或 isula-build 容器引擎构建 rubik 镜像,由于 rubik 以 daemonSet 形式部署,故每一个节点都需要 rubik 镜像。用户可以在一个节点构建镜像后使用 docker save/load 功能将 rubik 镜像 load 到 k8s 的每一个节点,也可以在各节点上都构建一遍 rubik 镜像。以 isula-build 为例,参考命令如下:
isula-build ctr-img build -f /var/lib/rubik/Dockerfile --tag rubik:1.0.0 .
  1. 在 k8s master 节点,修改/var/lib/rubik/rubik-daemonset.yaml文件中的 rubik 镜像名,与上一步构建出来的镜像名保持一致。
...
containers:
- name: rubik-agent
  image: rubik_image_name_and_tag  # 此处镜像名需与上一步构建的 rubik 镜像名一致
  imagePullPolicy: IfNotPresent
...
  1. 在 k8s master 节点,使用 kubectl 命令部署 rubik daemonset,rubik 会自动被部署在 k8s 的所有节点:
kubectl apply -f /var/lib/rubik/rubik-daemonset.yaml
  1. 使用kubectl get pods -A命令查看 rubik 是否已部署到集群每一个节点上(rubik-agent 数量与节点数量相同且均为 Running 状态)
[root@localhost rubik]# kubectl get pods -A | grep rubik
NAMESPACE     NAME                                            READY   STATUS    RESTARTS   AGE
...
kube-system   rubik-agent-76ft6                               1/1     Running   0          4s
...
  1. 用户也可以在安装完 rubik 之后,使用/var/lib/rubik/build_rubik_image.sh脚本自动构建 rubik 容器镜像。运行此文件需要用户提前安装docker组件。

常用配置说明

通过以上方式部署的 rubik 将以默认配置启动,用户可以根据实际需要修改 rubik 配置,可通过修改 rubik-daemonset.yaml 文件中的 config.json 段落内容后重新部署 rubik daemonset 实现。以下介绍几个常见配置,其他配置详见 配置文档

Pod 优先级自动配置

rubik 开启了 Pod 自动感知配置功能,用户仅需在部署业务 Pod 时在 yaml 中通过 annotation 指定其优先级,部署后 rubik 会自动感知当前节点 Pod 的创建与更新,并根据用户配置的优先级设置 Pod 优先级。

支持自动校对 Pod 优先级

rubik 支持在启动时对当前节点 Pod QoS 优先级配置进行一致性校对,此处的一致性是指 k8s 集群中的配置和 rubik 对 Pod 优先级的配置之间的一致性。该校对功能默认关闭,用户可以通过 autoCheck 选项控制是否开启。若开启该校对功能,启动或者重启 rubik 时,rubik 会自动校验并更正当前节点 Pod 优先级配置。

在/离线业务配置示例

rubik 部署成功后,用户在部署实际业务时,可以根据以下配置示例对业务 yaml 文件进行修改,指定业务的在离线类型,rubik 即可在业务部署后对其优先级进行配置,从而达到资源隔离的目的。

以下为部署一个 nginx 在线业务的示例:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: qosexample
  annotations:
    volcano.sh/preemptable: "false"   # volcano.sh/preemptable 为 true 代表业务为离线业务,false 代表业务为在线业务,默认为 false
spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      limits:
        memory: "200Mi"
        cpu: "1"
      requests:
        memory: "200Mi"
        cpu: "1"

文档捉虫

“有虫”文档片段

问题描述

提交类型 issue
有点复杂...
找人问问吧。
PR
小问题,全程线上修改...
一键搞定!
问题类型
规范和低错类

● 错别字或拼写错误;标点符号使用错误;

● 链接错误、空单元格、格式错误;

● 英文中包含中文字符;

● 界面和描述不一致,但不影响操作;

● 表述不通顺,但不影响理解;

● 版本号不匹配:如软件包名称、界面版本号;

易用性

● 关键步骤错误或缺失,无法指导用户完成任务;

● 缺少必要的前提条件、注意事项等;

● 图形、表格、文字等晦涩难懂;

● 逻辑不清晰,该分类、分项、分步骤的没有给出;

正确性

● 技术原理、功能、规格等描述和软件不一致,存在错误;

● 原理图、架构图等存在错误;

● 命令、命令参数等错误;

● 代码片段错误;

● 命令无法完成对应功能;

● 界面错误,无法指导操作;

风险提示

● 对重要数据或系统存在风险的操作,缺少安全提示;

内容合规

● 违反法律法规,涉及政治、领土主权等敏感词;

● 内容侵权;

您对文档的总体满意度

非常不满意
非常满意
提交
根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。