RISC-V公测平台发布 · 如何在SG2042上玩转k3s

news2024/9/24 15:28:09

前言

Kubernetes是一个开源的容器管理平台,通过Kubernetes的跨集群管理功能,用户可以方便地进行应用程序的复制、迁移和跨云平台的部署。

而k3s作为Kubernetes的轻量级发行版,相比传统的Kubernetes具有更小的二进制文件大小和更低的资源消耗。

使用 K3s 不仅能够缩短启动集群的时间,还能够减少集群需要消耗的资源。是RISC-V软件生态中不可或缺的一部分。

接下来就将教大家如何在SG2042上玩转k3s。

一、本次实验材料

1. 一台SG2042服务器

2. 已经预先编译好的k3s

已预先编译的k3s二进制文件下载

https://github.com/CARV-ICS-FORTH/k3s/releases

二、实验过程

1. 下载、运行k3s

首先我们下载预先编译好的k3s包:

图片

由于预编译好的k3s包已被分为三个文件,因此需要将三个文件合并为一个文件 

图片

解压,并给k3s-riscv64文件添加运行权限:

图片

测试该文件是否能运行,如果出现说明,那就说明成功运行。

图片

将k3s-riscv64文件复制到/usr/local/bin/下,并更名为k3s 

图片

注意:不要忘记加上sudo,否则会提示没有权限。

再次测试,看看k3s是否能运行:

图片

2. 下载、运行k3s安装脚本

当然只有k3s二进制文件是不够的,因此我们还需要使用安装脚本以获得完整的k3s体验。

下载k3s安装脚本:

curl -sfL

https://get.k3s.io > k3s-install.sh

图片

 运行该脚本:

chmod +x k3s-install.sh

 注意,如果直接./k3s-install.sh,会提示不支持的架构,因此需要把前面的参数带上。

INSTALL_K3S_EXEC="server --disable metrics-server" INSTALL_K3S_SKIP_DOWNLOAD="true" bash -x ./k3s-install.sh

 查看状态,如提示active那就说明k3s正在运行:

systemctl status k3s

图片

3.运行k3s容器

新建hello-sg2042.yaml打开并往里面复制以下内容:

改自:

https://raw.githubusercontent.com/CARV-ICS-FORTH/kubernetes-riscv64/main/examples/hello-kubernetes.yaml

apiVersion: v1
kind: Service
metadata:
  name: hello
spec:
  type: ClusterIP
  ports:
  - port: 8080
  selector:
    app: hello
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello-kubernetes
        image: carvicsforth/hello-kubernetes:1.10.1
        env:
        - name: MESSAGE
          value: "Greeting from SG2042!"

 保存退出后使用该模板启动一个新的容器:

sudo kubectl apply -f hello-sg2042.yaml

 注意:不要忘记sudo,不然就会提示没有权限!

图片

 查看pods情况:

sudo kubectl get pods -o wide

图片

(如果看到pod还没显示ip地址,你可以耐心等一会,直到显示pod的ip地址)

使用curl拉取网页,如果拉取到网页,那就说明k3s容器运行成功:

图片

4.开放外部计算机访问

虽然本机可以通过curl访问,但是外部计算机访问不了,那如何让外部计算机访问该网页呢?

这就需要修改hello-sg2042.yaml中的内容了,用编辑器打开hello-sg2042.yaml,然后按照以下内容修改:

 

apiVersion: v1
kind: Service
metadata:
  name: hello
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 30080
    protocol: TCP
  selector:
    app: hello
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello-kubernetes
        image: carvicsforth/hello-kubernetes:1.10.1
        env:
        - name: MESSAGE
          value: "Greeting from SG2042!"

注意:nodePort可以自行修改你想要的,但是只能在30000-32767里选一个。

在浏览器中访问http://175.8.161.253:30080(如果用的是你自己的端口号,请将30080改成你当时设置的nodePort)即可。

图片

三、实验总结:

得益于社区的帮助,k3s已经可以运行在sg2042平台上,但是由于该Fork并未并入k3s官方代码,因此k3s目前未正式支持riscv64。

 参考资料:

kubernetes-riscv64下的运行指南

https://github.com/CARV-ICS-FORTH/kubernetes-riscv64#running

正文完 


RISC-V公测平台发布》系列文章会持续跟大家分享澎峰RISC-V生态圈的开发者朋友们在RISC-V平台的移植测试成果,目前已发布:

1. RISC-V公测平台发布 · Stream带宽完整测试

2. RISC-V公测平台发布 · 我的世界MohistMC

3. RISC-V公测平台发布 · 第一个WEB Server“Hello RISC-V world!”

4. RISC-V公测平台发布 · 如何在SG2042上玩转k3s(本篇)

未来计划发布:

1. RISC-V公测平台发布 · 第一个BLOG Server"RISC-V成长日记”

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

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

相关文章

在简历上写了“精通”后,拥有工作经验的我被面试官问到窒息

前言 如果有真才实学,写个精通可以让面试官眼前一亮! 如果是瞎写?基本就要被狠狠地虐一把里! 最近在面试,我现在十分后悔在简历上写了“精通”二字… 先给大家看看我简历上的技能列表: 熟悉软件测试理论基…

数据存储需求骤变,联想凌拓多招齐发推动数以致用

有人说,数据存储决定着未来数字化转型的深度。深以为然。 今年以来,千行百业的用户们愈发意识到数据存储的重要性。无论是席卷全球的生成式AI浪潮,需要存储“投喂”各种非结构化数据;还是多云环境下,用户们对于数据自…

ODIN_1靶机详解

ODIN_1靶机复盘 下载地址:https: //download.vulnhub.com/odin/odin.ova 靶场很简单,一会儿就打完了。 靶场说明里提醒说加一个dns解析。 我们在/etc/hosts加一条解析 就能正常打开网站了,要么网站打开css是乱的。 这里看到结尾就猜测肯定…

全网最全讲的最详细的多线程原理

在我们开始讲多线程之前,我们先来了解一下什么是进程,什么是线程。进程和线程是操作系统中两个容易混淆的概念。 进程 在Windows操作系统中打开任务管理器,可以查看进程和线程的详细信息。也可以使用专业的进程查看小软件——Process Explo…

适合做笔记的软件有哪些?8款好用强大的笔记软件推荐!

除了Goodnotes和Notability,你还知道哪些值得推荐的免费笔记软件吗?本文结合自己的使用经验,推荐笔记软件的同时,亦推荐一些不错的绘图软件供大家选择使用。 1.OneNote 基本的笔记功能都有,加粗、倾斜、下划线、突…

【RL】我的强化学习代理

一、说明 强化学习代理是一个自主决策的人工智能智能系统,它通过与环境进行交互,通过试错学习,逐步优化其行为以实现其目标。这种代理能够学习如何在环境中进行行为,以实现预期的目标。代理可以通过尝试不同的行为来评估其对环境的…

1.2.2最长上升子序列模型(二)

1.拦截导弹 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。 但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。 某天,雷达捕捉到敌国的导弹来袭。 由…

最全的3D动画软件介绍来了!良心总结9款3D动画制作必备软件

现在,市面上流行着的3D动画软件如此之多,以至于很难敲定到底哪一款更适合自己或自己的团队。本篇文章带来了一些热门的、被视为行业标准的3D动画软件的介绍,帮助您更好地做出选择。 不仅如此,您还能从文章中了解到在数字内容创建…

移动应用项目架构设计

一、项目整体架构设计 按照分层的架构思想,从下到上分为ShareLib(共享库)层、Core(核心功能)层、Business(业务逻辑)层、App(应用展示)层。 架构优势: 严格控制各层的职责范围,使得底层库实现工程间复用且无缝替换,上层业务无感知…

垃圾焚烧设备PLC数据采集远程监控系统解决方案

PLC可以应用于各种污染废物处理设备的自动化控制,如污水处理、垃圾焚烧、空气处理等。例如,通过对垃圾焚烧PLC设备的数据采集,可以实现对垃圾焚烧的温度、时间、氧气流量等数据的远程监控和实时预警,有效提高垃圾焚烧效率和环保效…

使用机器学习进行疾病预测 -- 机器学习项目基础篇(3)

本文旨在实现一个强大的机器学习模型,可以根据他/她所拥有的症状有效地预测人类的疾病。让我们看看如何解决这个机器学习问题: 方法: 收集数据:数据准备是任何机器学习问题的主要步骤。我们将使用来自Kaggle的数据集来解决这个问…

C语言——静态库和动态库的创建和使用

使用库函数是源码的一种保护 库函数其实不是新鲜的东西,我们一直都在用,比如C库。我们执行pringf() 这个函数的时候,就是调用C库的函数. 下面记录静态库和动态库的生成和使用. 静态库:libxxx.a 动态库:libxxx.so 静态库: 在程序编译的时候,将库编译进可执行程序中, 运行的…

【Unity学习笔记】生命周期

文章目录 脚本的生命周期初始化更新顺序动画更新循环各类事件结束阶段 阶段分析协程返回 总结 官方文档:事件函数的执行顺序 脚本的生命周期 如图: 脚本的生命周期主要经历以下几个阶段: 初始化 初始化阶段,(包括初…

RISC-V 指令集介绍

1. 背景介绍 指令集从本质上可以分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC)两种。复杂指令集的特点是能够在一条指令内完成很多事情。 指…

1400*A. Factory

Examples input 1 5 output No input 3 6 output Yes 题意: a 和 m,a 不断加 a%m ,如果 a 有一次能够被 m 整除,则打印 Yes,如果一直循环永远不可能被 m 整除,则打印 No 解析: 可以观…

BUU CODE REVIEW 1

BUU CODE REVIEW 1 考点&#xff1a;PHP变量引用 源码直接给了 <?phphighlight_file(__FILE__);class BUU {public $correct "";public $input "";public function __destruct() {try {$this->correct base64_encode(uniqid());if($this->c…

数据库中RIGHT_TYPE=3和RIGHT_TYPE=“3“的区别

G_USERINFO表归档条件SQL错误&#xff0c; RIGHT_RIGHT_TYPE3应改为RIGHT_TYPE"3"&#xff0c; 该字段为字符类型 在Oracle中&#xff0c;类型&#xff08;type&#xff09;通常是指数据库中的表、视图、索引、存储过程、函数等对象的的数据类型或结构。在比较类型&a…

解决:h5的<video>在移动端浏览器无法自动播放

并不是所有的移动端浏览器都无法自动播放&#xff0c;下载谷歌、火狐、edge等都可以正常播放&#xff0c;目前发现夸克浏览器无法自动播放。即autoplay属性失效。 <video autoplay"autoplay"></video> 可能移动端有移动端的策略&#xff0c;但解决夸克…

C++标识符的作用域与可见性

标识符是一个由程序员定义的名称&#xff0c;为标识区别变量、函数和数据类型等&#xff0c;代表程序的某些元素&#xff0c;变量名就是标识符的一个展现。 作用域讨论的是标识符的有效范围&#xff0c;可见性讨论的是标识符是否可以被引用。在一个函数中声明的变量就只能在这个…

vue中使用代码编辑器 vue2-ace-editor

npm install --save-dev vue2-ace-editor// 全局引入 main.jsimport Editor from vue2-ace-editor; Vue.use(Editor)//组件中引入import Editor from vue2-ace-editor; components: {Editor, },<template><div class"codeEditBox"><editorv-model&qu…