Rancher RFO 正式 GA

news2024/12/26 11:28:09

Rancher RFO GA

RFO 是 Rancher For openEuler 的缩写,旨在面向 openEuler 打造 Rancher 基础平台。其中最核心的工作是打造一款面向 openEuler 生态的 Kubernetes 发行版。它基于上游 RKE2 的技术栈,构建物采用 openEuler base image,致力于满足国内更加注重的安全合规标准,对 openEuler LTS 版本拥有优秀的兼容性。

SUSE 在欧拉开源社区中成立了 RFO SIG,以社区协作方式运作产品迭代,并将 RFO 发行版的工作成果进行开源(https://gitee.com/rfolabs/rfo)。

RFO 发行版的主要愿景如下:

  • 完整可溯源的工程化。确保核心组件的构建记录和端到端测试结果均可溯源。
  • 产品化开箱即用。确保 RFO 的安装部署可以快速上手,并支持从 Rancher Prime 配置部署。
  • 充分依托 openEuler 生态。确保核心组件的构建使用 openEuler 生态体系,依托 openEuler container image 进行最终打包。
  • 软件供应链安全与合规。确保核心组件的分发产物不可篡改,并致力于提供等保加固的 Kubernetes 集群环境。
  • 多样性算力支持。提供面向 AMD64 和 ARM64 以及 RISC-V 等多样性算力的 Kubernetes 基础设施。

RFO SIG 于 2022 年 9 月初在欧拉开源社区成立,历经 3 个月的工程迭代,我们正式推出 RFO 发行版的 GA 版本,欢迎试用并在 Rancher 社区和欧拉开源社区进行反馈。目前有以下已测试的版本可供使用:v1.23.14+rfor1/v1.24.8+rfor1/v1.25.4+rfor1 ,后续我们也会长期跟踪 Kubernetes 的上游版本演进。

快速上手

基于 RFO v1.24.8+rfor1 版本以及 openEuler 22.03-LTS 进行快速上手演示。

安装准备

安装准备步骤需要在所有主机上运行:

1. 查看 OS 版本:

cat /etc/os-release

输出:

NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"

2. 配置 NetworkManager 进行忽略 Canal CNI 的 veth 接口

touch /etc/NetworkManager/conf.d/rfo-canal.conf
cat >> /etc/NetworkManager/conf.d/rfo-canal.conf << EOF
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:flannel*
EOF
systemctl disable nm-cloud-setup.service nm-cloud-setup.timer
systemctl reload NetworkManager

3. 停止 openEuler 防火墙服务,RFO 中默认的 Canal CNI 与 Firewalld 网络栈有冲突,需要禁用 Firewalld

systemctl stop firewalld
systemctl disable firewalld

安装Server

1. 使用 install 脚本安装 RFO:

curl -sfL https://gitee.com/rfolabs/rfo/raw/rfo-master/install-rfo.sh | INSTALL_RFO_VERSION="v1.24.8+rfor1" sh -

该脚本只能通过 root 用户或 sudo 运行

安装结果如下:

[INFO]  using v1.24.8+rfor1 as release
[INFO]  downloading checksums at https://rfolabs.oss-cn-shenzhen.aliyuncs.com/rfo/releases/v1.24.8%2Brfor1/sha256sum-amd64.txt
[INFO]  downloading tarball at https://rfolabs.oss-cn-shenzhen.aliyuncs.com/rfo/releases/v1.24.8%2Brfor1/rfo.linux-amd64.tar.gz
[INFO]  verifying tarball
[INFO]  unpacking tarball file to /usr/local

2. 启用 rfo-server 服务

systemctl enable rfo-server

3. 启动 rfo-server 服务

systemctl start rfo-server.service

4. (可选)查看 rfo-server 服务日志

journalctl -u rfo-server -f

运行此安装程序后:

  • rfo-server 服务将被安装。rfo-server 服务将被配置为在节点重启后或进程崩溃或被杀时自动重启。
  • 其他的实用程序将被安装在/var/lib/rancher/rfo/bin/。它们包括 kubectl, crictl, 和 ctr. 注意,这些默认不在你的路径上。
  • 还有两个清理脚本会安装到 /usr/local/bin/rfo 的路径上。它们是 rfo-killall.shrfo-uninstall.sh
  • 一个 kubeconfig 文件将被写入/etc/rancher/rfo/rfo.yaml
  • 一个可用于注册其他 server 或 agent 节点的令牌将在 /var/lib/rancher/rfo/server/node-token 文件中创建。

注意: 如果你要添加额外的 server 节点,则总数必须为奇数。需要奇数来维持选举数。

安装 Agent

1. 运行安装程序

curl -sfL https://gitee.com/rfolabs/rfo/raw/rfo-master/install-rfo.sh | INSTALL_RFO_VERSION="v1.24.8+rfor1" INSTALL_RFO_TYPE="agent" sh -

2. 启用 rfo-agent 服务

systemctl enable rfo-agent.service

3. 配置 rfo-agent 服务

mkdir -p /etc/rancher/rfo/
vim /etc/rancher/rfo/config.yaml

config.yaml 的内容。

server: https://<server>:9345
token: <token from server node>

其中 token 可以在 server 节点中运行 cat /var/lib/rancher/rfo/server/node-token 命令获取。

rfo server 进程通过端口 9345 监听新节点的注册。正常情况下,Kubernetes API 仍可在端口 6443 上使用。

4. 启动服务

systemctl start rfo-agent.service

5. (可选)查看 rfo-agent 服务日志

journalctl -u rfo-agent -f

访问集群

在安装完成 rfo-server 节点后,即可以在 server 节点中使用内置的 kubectl 以及 kubeconfig 配置访问集群:

export KUBECONFIG=/etc/rancher/rfo/rfo.yml
export PATH=/var/lib/rancher/rfo/bin:$PATH
kubectl get pods --all-namespaces
helm ls --all-namespaces

或在指令中指定 kubeconfig 文件位置:

kubectl --kubeconfig /etc/rancher/rfo/rfo.yml get pods --all-namespaces
helm --kubeconfig /etc/rancher/rfo/rfo.yml ls --all-namespaces

若希望在集群外部访问集群,则可以复制 /etc/rancher/rfo/rfo.yml 配置文件到你位于集群外部的机器上,作为 ~/.kube/config。然后将文件中 127.0.0.1 替换为你的 RFO 服务器的 IP 或主机名。kubectl 现在可以管理你的 RFO 集群了。

功能特点

精简部署

RFO 基于 RKE2 进行重新打包制作而成,具有 RKE2 所有的功能特点,吸取了开发和维护轻量级 Kubernetes 发行版 K3s 的经验教训,并将其应用于构建一个具有 K3s 易用性的企业级发行版。这意味着,RFO 在最简单的情况下是一个单一的二进制文件,需要在所有参与 Kubernetes 集群的节点上安装和配置。一旦启动,RFO 就能够引导和监督每个节点上的角色合适的 agent,同时从网络上获取所需的内容。以下为 RFO 架构示意图:

RFO系统架构

以下组件为 RFO 在项目中使用的 Kubernetes 组件,其中大部分经过重新打包并使用 openEuler base image 进行分发

在使用 install.sh 脚本进行安装时,rfo 将会以 linux system service 的方式安装到系统中,使用 systemd 作为 RFO Supervisor。其余方式(包括下载 rfo binary 直接启动)并不推荐,某些场景下会没有 RFO Supervisor 角色监控 RFO 运行状态,导致 kubelet 等程序常驻后台运行。

一般情况下,RFO 以安装包的方式进行分发,安装包中只包含 rfo 二进制本体、systemd service 配置文件以及卸载脚本。其余组件将在 RFO 启动后,根据启动节点的角色进行拉取并安装启动。

备份恢复

在 RFO 运行的时候,你可以使用 etcd-snapshot 子命令来进行 etcd 快照管理。功能包括:

  • 使用本地目录或 s3 作为快照存储后端
  • 对当前 etcd 数据建立快照
  • 对集群进行重置并从快照中恢复数据到当前或新节点中
  • 定时备份

Helm 集成

RFO 内置 Helm Controller,它使用 HelmChart 自定义资源定义(CRD)来管理 Helm chart。

HelmChart 资源定义捕获了你通常传递给helm命令行工具的大部分选项。下面是一个例子,说明你如何从默认的 chart 资源库部署 Grafana,覆盖一些默认的 chart 值。注意,HelmChart 资源本身在kube-system命名空间中,但 chart 的资源将被部署到monitoring命名空间。

apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
  name: grafana
  namespace: kube-system
spec:
  chart: stable/grafana
  targetNamespace: monitoring
  set:
    adminPassword: "NotVerySafePassword"
  valuesContent: |-
    image:
      tag: master
    env:
      GF_EXPLORE_ENABLED: true
    adminUser: admin
    sidecar:
      datasources:
        enabled: true

另外 RFO 支持通过 HelmChartConfig 资源来自定义部署,允许覆盖作为 HelmCharts 部署的打包组件(如 Canal、CoreDNS、Nginx-Ingress 等)的值。HelmChartConfig资源必须与其对应的 HelmChart 的名称和命名空间相匹配,并支持提供额外的valuesContent,作为一个额外的值文件传递给helm命令。

注意:HelmChart spec.set 值覆盖 HelmChart 和 HelmChartConfig spec.valuesContent设置。

例如对上文例子中的 Grafana helm chart 进行自定义 Grafana image 的 tag,可以创建一个 Kubernetes 资源文件,并用以下内容填充它,并使用 kubectl apply -f <manifest filename> 进行应用:

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: grafana
  namespace: kube-system
spec:
  valuesContent: |-
    image:
      tag: 9.3.2

证书轮换

RFO 中的证书默认在 12 个月后到期。如果证书已经过期或剩余时间少于 90 天,可以使用 certificate 子命令对证书进行轮换,当 RFO 重新启动时,证书将被轮换。

systemctl stop rfo-server

你也可以通过传递 --service 标志来轮换单个服务,例如:rfo certificate rotate --service api-server

Secret 加密

RFO 支持通过子命令 secrets-encrypt 开启对 Secret 进行静态加密,开启后会自动进行以下操作:

  • 生成一个 AES-CBC 密钥
  • 用生成的密钥生成一个加密配置文件:
{
  "kind": "EncryptionConfiguration",
  "apiVersion": "apiserver.config.Kubernetes.io/v1",
  "resources":
    [
      {
        "resources": ["secrets"],
        "providers":
          [
            {
              "aescbc":
                {
                  "keys":
                    [{ "name": "aescbckey", "secret": "xxxxxxxxxxxxxxxxxxx" }],
                },
            },
            { "identity": {} },
          ],
      },
    ],
}

  • 将该配置作为 encryption-provider-config 传递给 Kubernetes APIServer

一旦启用,任何创建的 secret 都将用这个密钥进行加密。请注意,如果你禁用加密,那么任何加密的 secret 将无法读取,直到你使用相同的密钥再次启用加密。

安全可信

RFO 设计上与 Openeuler 紧密结合,在安全合规性上与 Openeuler 系统一致;并在持续集成流水线中,基于 Openeuler 容器镜像运行 sonobuoy 测试,保证 RFO 发行版兼容 CNCF 认证的 Kubernetes 发行版功能要求。

维护原则与发布周期

RFO 的维护与发布周期与 RKE2 以及 Kubernetes 版本生命周期一致,并遵循以下原则:

  • RKE2 小版本将会根据改动内容,在 RKE2 release 后一周内进行跟进;如出现的改动与 RFO 无关,则跳过小版本发布
  • RKE2 大版本目前会跟进 Kubernetes 大版本进行维护,在 RKE2 release 后两周内进行跟进

针对 openEuler OS 的更新,遵循以下原则:

  • 只针对 openEuler LTS(long term support)版本发布对应的 RFO 版本,目前经验为 2 年一个新 LTS 版本,在新版本发布后 RFO 会在最近一个 RFO Release 进行跟进
  • 当 openEuler 出现致命或高等级系统漏洞的情况下,发布 RFO 小版本进行跟进

RFO 除 RKE2 原生的功能外,目前以测试整合 openEuler 操作系统为目标进行维护,并计划后续添加以下支持:

  • ARM64 平台支持
  • 内置 iSula 运行时支持

后续规划

后续规划主要围绕构建物安全可信认证以及扩充构建物分发途径开展。

构建物安全可信认证主要包括以下方面,确保核心组件的分发产物不可篡改,并致力于提供等保加固的 Kubernetes 集群环境:

  • 针对分发的容器镜像,进行镜像签名
  • 针对分发的 RFO charts,进行 helm charts 签名

扩充构建物分发途径主要包括以下方面:

  • 支持离线镜像制作以及离线部署
  • 构建 RFO 以及 kube-explorer RPM 包并通过 openEuler 的软件源进行分发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言及算法设计课程实验一:C程序的运行环境和运行C程序的方法

C语言及算法设计课程实验一&#xff1a;C程序的运行环境和运行C程序的方法一、实验目的二、实验内容2.1、输人并运行一个简单的正确的程序2.2、输人并编辑一个有错误的C程序2.3、输入并运行一个需要在运行时输入数据的程序2.4、运行一个自己编写的程序三、实验步骤3.1、输人并运…

Android OpenGL ES 学习(十一) –渲染YUV视频以及视频抖音特效

OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投影 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用…

基于MWORKS.Sysplorer的电子控制器应用案例——永磁同步电机FOC算法建模

1 前言 MWORKS是面向数字工程的新一代科学计算与系统建模仿真平台&#xff0c;可提供机械、电子、液压、控制、热、信息等多领域统一建模仿真环境。经过同元持续攻关&#xff0c;全新推出的MWORKS.Sysplorer嵌入式代码生成器&#xff0c;现已支持面向电子控制器的产品级的嵌入…

循环神经网络的简洁实现

参考8.6. 循环神经网络的简洁实现 — 动手学深度学习 2.0.0 documentation 本节将展示如何使用深度学习框架的高级API提供的函数更有效地实现相同的语言模型。 我们仍然从读取时光机器数据集开始。 pip install mxnet1.7.0.post1 pip install d2l0.15.0 from mxnet import n…

ubuntu18.04下用Fiddler抓取curl库网络数据包总结

本人在ubuntu18.04下进行开发&#xff0c;需要使用http和服务端进行通信&#xff0c;为了确认自己发送给服务端和服务端返回数据字段&#xff0c;所以需要进行抓包分析参数。本文就说明一下如何在ubuntu18.04使用fidder对自己编写的应用程序进行http协议数据包抓取。 目录 1.…

无线网络渗透测试清单

©网络研究院 无线渗透测试积极检查 WiFi 网络中的信息安全措施的过程&#xff0c;并分析弱点、技术流程和关键无线漏洞。 我们应该关注的最重要的对策是威胁评估、数据盗窃检测、安全控制审计、风险预防和检测、信息系统管理和升级基础设施&#xff0c;并且应该准备一份…

13-14-15-RabbitMq工作模式深度剖析与Spring整合MQ以及RabbitMq高级特性

RabbitMQ消息传递流程 连接( Connection) 在RabbitMQ中&#xff0c;生产者和消费者与RabbitMQ的通信就是基于TCP连接的。不过呢我们知道TCP连接的创建和销毁在高并发场景下对于操作系统来说都是特别昂贵的开销&#xff0c;所以RabbitMQ又引入了信道的概念 信道&#xff08;Chan…

云原生之使用Docker部署轻量级web服务器lighthttpd

云原生之使用Docker部署轻量级web服务器lighthttpd一、Lighthttpd介绍二、检查系统版本三、检查docker状态四、下载lighthttpd镜像五、部署lighthttpd1.创建数据目录2.创建lighthttpd容器3.查看容器状态六、访问lighthttpd服务七、编辑index.html1.编辑index.html文件2.重新访问…

Hadoop大数据存算分离方案:计算层无缝对接存储系统

Hadoop的诞生改变了企业对数据的存储、处理和分析的过程&#xff0c;加速了大数据的发展。随着大数据系统建设的深入&#xff0c;企业的数据基础设施易出现计算资源浪费、存储性能低、管理成本过高等挑战。相比存算一体架构&#xff0c;存算分离架构具有性能与成本最优、兼具灵…

3D地图app

3D三维地图APP 发布时间&#xff1a;2018-07-19 版权&#xff1a; 3D地图依据高程数据等对地表进行渲染&#xff0c;实现地表的起伏&#xff0c;模拟出真实的三维场景&#xff0c;让你有如身临其境般的感觉。 &#xff08;注&#xff1a;Bigemap 3D地图是一个三维地图浏览功能…

项目沟通怎么才能不像在吵架?

项目沟通并非吵架&#xff0c;看起来却总是剑拔弩张。有效沟通才能真正解决问题&#xff0c;笔者给出了一些实用的建议&#xff0c;从对象到场景&#xff0c;再到方法与技巧&#xff0c;应该在沟通中有针对性地注意这些问题。 沟通是个老话题&#xff0c;在项目管理中有专门讲沟…

draw.io使用教程

大部分的绘图应用都离不开三个基本的元素&#xff0c;图形&#xff0c;链接&#xff0c;文本。每个元素都有基本的操作和样式&#xff0c;元素与元素之间又可以进行组合&#xff0c;“三生万物”&#xff0c;生成各种各样的图表。 如果没有这款绘图的 可以点击获取 : drawio文…

企业项目管理的不同与好处

大型企业组织通常同时运行多个复杂项目。尽管这些项目看起来不一定相互关联&#xff0c;但它们都会影响同一个企业组织。企业项目管理(EPM)是指在公司范围内管理项目的实践。它通常涉及实施战略和流程&#xff0c;以大规模简化和提高项目管理的有效性。根据项目管理协会(PMI)的…

burpsuite靶场——XXE

文章目录什么是XML&#xff1f;什么是XML实体&#xff1f;什么是文档类型定义(DTD)&#xff1f;什么是XML自定义实体&#xff1f;什么是XML外部实体&#xff1f;使用外部实体利用 XXE 来检索文件利用 XXE 执行 SSRF 攻击盲XXE漏洞带外交互的盲 XXE过 XML 参数实体进行带外交互的…

【AJAX】AJAX的跨域问题

AJAX的跨域问题跨域的概述区别同源与不同源同源策略有什么用&#xff1f;AJAX跨域解决方案方案一、设置响应头方案二、jsonp方案三、代理机制&#xff08;httpclient&#xff09;跨域的概述 跨域是指从一个域名的网页去请求另一个域名的资源。比如从百度&#xff08;https://ba…

WPF控件模板、数据模板、容器样式选择器

WPF控件模板 利用Tag来绑定控件模板内容 <!--模板定义--> <Style x:Key"ButtonStyle1" TargetType"{x:Type Button}"><Setter Property"Template"><Setter.Value><ControlTemplate TargetType"{x:Type Button…

声音事件检测metric:PSDS

论文&#xff1b;A FRAMEWORK FOR THE ROBUST EVALUATION OF SOUND EVENT DETECTION Abstract 这项工作为多声道声音事件检测&#xff08;SED&#xff09;系统的性能评估定义了一个新的框架&#xff0c;它克服了传统的collar-based事件决定、事件F-cores和事件错误率的限制。…

【Kotlin 协程】Flow 流组合 ( Flow#zip 组合多个流 | 新组合流的元素收集间隔与被组合流元素发射间隔的联系 )

文章目录一、Flow 流组合1、Flow#zip 组合多个流2、新组合流的元素收集间隔与被组合流元素发射间隔的联系一、Flow 流组合 1、Flow#zip 组合多个流 调用 Flow#zip 函数 , 可以将两个 Flow 流合并为一个流 ; Flow#zip 函数原型 : /*** 将来自当前流( this )的值压缩到[其他]流&…

第二十六章 数论——欧拉函数(详解与证明)

第二十六章 数论——欧拉函数&#xff08;详解与证明&#xff09;欧拉函数1、互质2、欧拉函数的定义3、欧拉函数的公式4、欧拉函数的证明5、欧拉函数的使用&#xff08;1&#xff09;问题一&#xff1a;思路代码&#xff08;2&#xff09;问题二&#xff1a;思路case1case1case…

2022/12/17 MySQL索引失效的底层原理

1 复合索引-最左前缀原理 where子句中使用最频繁的一列放在最左边&#xff1b;我们在&#xff08;a,b,c&#xff09;字段上建了一个联合索引&#xff0c;所以这个索引是先按a 再按b 再按c进行排列的&#xff0c;所以&#xff1a;以下的查询方式都可以用到索引 select * from …