当前位置: 首页 > news >正文

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

前言

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: ClusterIPports:- port: 8080selector:app: hello
---
apiVersion: apps/v1
kind: Deployment
metadata:name: hello
spec:replicas: 1selector:matchLabels:app: hellotemplate:metadata:labels:app: hellospec:containers:- name: hello-kubernetesimage: carvicsforth/hello-kubernetes:1.10.1env:- name: MESSAGEvalue: "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: NodePortports:- port: 8080targetPort: 8080nodePort: 30080protocol: TCPselector:app: hello
---
apiVersion: apps/v1
kind: Deployment
metadata:name: hello
spec:replicas: 1selector:matchLabels:app: hellotemplate:metadata:labels:app: hellospec:containers:- name: hello-kubernetesimage: carvicsforth/hello-kubernetes:1.10.1env:- name: MESSAGEvalue: "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成长日记”

相关文章:

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

前言 Kubernetes是一个开源的容器管理平台,通过Kubernetes的跨集群管理功能,用户可以方便地进行应用程序的复制、迁移和跨云平台的部署。 而k3s作为Kubernetes的轻量级发行版,相比传统的Kubernetes具有更小的二进制文件大小和更低的资源消耗…...

Linux系统常见小问题

1、新系统在输入命令时,不会自动提示,按上箭头(↑)和下向下箭头(↓)不会匹配之前的输入 以CentOS 为例,可以通过配置 ~/.bashrc 文件来实现按向上箭头显示最相近的命令。以下是具体的实现步骤 …...

WEB:mfw

背景知识 Git泄露 Githack使用 命令执行漏洞 题目 这里页面里有Git,猜测是Git泄露 先用dirsearch扫一下 确实存在.git目录,可以尝试访问一下 使用Githack来下载并恢复.git文件 这里记得使用的时候关闭杀毒软件 结果会自动保存 点进去先看一下flag这个…...

2.4 传统经验光照模型详解

一、光照模型 光照模型(illumination model),也称为明暗模型,用于计算物体某点处的光强(颜色值)。从算法理论基础而言,光照模型分为两类:一种是基于物理理论的,另一种是…...

基于高通QCC5171的对讲机音频数据传输系统设计

一 研发资料准备 二 设计方法 蓝牙连接与配对:使用QCC5171的蓝牙功能,实现设备之间的蓝牙连接和配对。确保设备能够相互识别并建立起稳定的蓝牙连接。 音频采集与处理:将麦克风采集到的音频数据通过QCC5171的ADC(模数转换器&…...

【题解】判断链表中是否有环、链表中环的入口结点

文章目录 判断链表中是否有环链表中环的入口结点 判断链表中是否有环 题目链接:判断链表中是否有环 解题思路1:快慢指针 代码如下: bool hasCycle(ListNode *head) {if(head nullptr) return false;ListNode* fast head;ListNode* slow …...

Pytorch 最全入门介绍,Pytorch入门看这一篇就够了

本文通过详细且实践性的方式介绍了 PyTorch 的使用,包括环境安装、基础知识、张量操作、自动求导机制、神经网络创建、数据处理、模型训练、测试以及模型的保存和加载。 1. Pytorch简介 在这一部分,我们将会对Pytorch做一个简单的介绍,包括它…...

Lambda 表达式的作用域

在Lambda表达式中访问外层作用域和旧版本的匿名对象中的方式类似。你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。 Lambda表达式不会从超类(supertype)中继承任何变量名,也不会引入一个新的作用域。Lambd…...

【portswigger】第二专题-XSS(二)

portswigger 靶场(第二章节)XSS 视频同步更新至bilibili bibi地址 【【portswigger】第二专题-XSS(一前置知识)】 https://www.bilibili.com/video/BV1mp4y157xA/?share_sourcecopy_web 【【portswigger】第二专题-XSS&#xff…...

【计算机视觉|人脸建模】3D人脸重建基础知识(入门)

本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 一、三维重建基础 三维重建(3D Reconstruction)是指根据单视图或者多视图的图像重建三维信息的过程。 1. 常见三维重建技术 人工几何模型仪器采集基于图像的建模描述基于几何建模…...

使用Jetpack Glance创建Android Widget

使用Jetpack Glance创建Android Widget Jetpack Glance发布,让我们使用Google提供的Jetpack Glance创建一个联系人列表小部件。 https://developer.android.com/jetpack/compose/glance 什么是Glance? Jetpack Glance是一个使用Kotlin API创建小型、轻…...

【MyBatis 学习三】子段不一致问题 多表查询 动态SQL

目录 一、解决Java实体类属性与数据库表字段不一致问题 🌷现象1:显示字段不对应:使用ResultType查询结果为null; 🌷解决办法:字段不对应:使用ResultMap解决。 二、数据库的多表查询 &#…...

15. Spring AOP 的实现原理 代理模式

目录 1. 代理模式 2. 静态代理 3. 动态代理 3.1 JDK 动态代理 3.2 CGLIB 动态代理 4. JDK 动态代理和 CGLIB 动态代理对比 5. Spring代理选择 6. Spring AOP 实现原理 6.1 织入 7. JDK 动态代理实现 8. CGLIB 动态代理实现 9. 总结 1. 代理模式 代理模式&#xf…...

死锁产生的原因以及解决方案

一.原因: 1.使用互斥锁. 2.除非主动释放,负责不能被抢占. 3.占用一把锁不释放,等待其它锁资源(保持现状). 4.锁形成环路. 二.解决方案: 给锁编号,上锁的时候从小到大依次上锁,譬如如果一个线程要上1号和2号两把锁,如果1号锁被占用,不能上2号锁,等其它线程释放1号锁资源后…...

【构造】CF1758 D

Problem - D - Codeforces 题意: 思路: 如果需要构造一个和为定值的序列,那么考虑n-d,n-d1,.....nd-1,nd这种形式 如果要保证不能重复,那么先考虑一个排列,然后在排列上操作 如果根据小数据构造出了一些简单情形&a…...

【腾讯云 Cloud Studio 实战训练营】永不宕机的IDE,Coding Everywhere

【腾讯云 Cloud Studio 实战训练营】永不宕机的IDE,随时随地写代码! 写在最前视频讲解:Cloud Studio活动简介何为腾讯云 Cloud Studio?Cloud Studio简介免费试用,上手无忧Cloud Studio 特点及优势云端开发多种预制环境可选metawo…...

JavaScript将一层级对象数组转为children嵌套的三层级树状对象数组(多级树状分类)

有时候后端返回的数据不适合前端,我们就需要进行转换,比如我想用elementUI的级联选择器,而这个组件对数据格式有要求,本篇文章将介绍如何将一层级对象数组数据格式转为三层级嵌套children数组,JavaScript、Vue、小程序等都适用,使用情景为多级分类,嵌套数据 情况1:原数…...

Windows脚本启动Redis、Java和Nginx服务指南

文章目录 1. 完整的批处理脚本2. Redis服务3. Java服务4. Nginx服务 1. 完整的批处理脚本 echo offcd C:\path\to\redis tasklist /FI "IMAGENAME eq redis-server.exe" 2>NUL | find /I /N "redis-server.exe">NUL if "%ERRORLEVEL%"&qu…...

【宝藏系列】STM32之C语言基础知识

【宝藏系列】STM32之C语言基础知识 文章目录 【宝藏系列】STM32之C语言基础知识1️⃣位操作2️⃣define宏定义3️⃣ifdef条件编译4️⃣extern变量声明5️⃣typedef类型别名 C语言是单片机开发中的必备基础知识,本文列举了部分 STM32 学习中比较常见的一些C语言基础知…...

探索自除数:发现区间内的神奇数字

本篇博客会讲解力扣“728. 自除数”的解题思路,这是题目链接。 对于给定的正整数num,我们如何判断它是不是自除数呢?根据定义,我们只需要把num的每一位数字都取出来,判断能不能整除num,如果发现num的某一位…...

EasyAnimateV5-7b-zh-InP与Java集成开发实战

EasyAnimateV5-7b-zh-InP与Java集成开发实战 1. 企业级视频生成需求与解决方案 现在很多企业都需要视频内容,电商要商品展示视频,教育机构要教学动画,营销团队要广告视频。传统视频制作成本高、周期长,一个简单的商品视频可能就…...

Calibre run LVS 中V2LVS tools (Verilog 转 SPICE 网表工具)(20-2)

V2LVS(Verilog to SPICE for LVS)是一个用于将 Verilog 设计网表转换为 SPICE 格式,以便进行版图与原理图一致性检查(LVS)的工具。其 Tcl 接口提供了高度的可编程性和灵活性,是现代复杂设计流程中的关键组件。 0. 核心概念与基础 以下声明类型对 V2LVS 有效:input、o…...

建造者模式如何解决PHP对象构造参数过多问题?

在 PHP 中,当一个类需要大量参数(尤其是包含多个可选参数)时,直接使用构造函数会导致代码难以阅读、维护困难,甚至出现“望远镜构造函数”(Telescoping Constructor)反模式。 建造者模式 (Build…...

javaweb学习资料资源分享共享平台的研究和实现

目录同行可拿货,招校园代理 ,本人源头供货商功能需求分析核心技术实现特色功能设计扩展性考虑项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能需求分析 JavaWeb学习资料共享平台的…...

Live Avatar数字人生成避坑指南:硬件要求与常见问题解决

Live Avatar数字人生成避坑指南:硬件要求与常见问题解决 Live Avatar是阿里联合高校开源的一款端到端数字人生成系统,它能把一张人物照片、一段语音和几句文字描述,变成自然流畅的说话视频。听起来很酷,对吧?但现实往…...

PyTorch 2.8镜像新手入门:无需配置,直接开启你的AI项目实战

PyTorch 2.8镜像新手入门:无需配置,直接开启你的AI项目实战 1. 为什么选择PyTorch 2.8预置镜像? 深度学习项目最让人头疼的往往不是算法本身,而是环境配置。不同版本的PyTorch、CUDA、cuDNN之间的兼容性问题,足以让一…...

用面包板和三极管DIY四比特加法器:从逻辑门到级联的完整实战记录

从零构建四比特加法器:面包板上的数字逻辑之旅 1. 硬件DIY的魅力与数字逻辑基础 在电子工程和计算机科学的世界里,理解数字逻辑电路的工作原理是一项基础而关键的技能。而亲手用面包板和三极管搭建一个四比特加法器,不仅能让你深入理解计算机…...

开源AI图像工作站落地:Pixel Fashion Atelier在数字藏品中的应用

开源AI图像工作站落地:Pixel Fashion Atelier在数字藏品中的应用 1. 项目概述 Pixel Fashion Atelier(像素时装锻造坊)是一款基于Stable Diffusion与Anything-v5的开源图像生成工作站。与传统AI工具不同,它采用了复古日系RPG的&…...

实测科哥版HeyGem稳定性:文件校验、中断恢复、显存保护全解析

实测科哥版HeyGem稳定性:文件校验、中断恢复、显存保护全解析 1. 引言:为什么稳定性对数字人视频生成如此重要 在数字人视频生成领域,我们常常关注生成效果和速度,却容易忽视一个更基础的问题——稳定性。想象一下,当…...

【实战技巧】利用rclone高效下载Google Drive共享大数据集

1. 为什么需要rclone下载Google Drive大数据集 做深度学习的朋友们应该都遇到过这样的场景:好不容易找到一个理想的开源数据集,结果发现它存放在Google Drive上,而且体积动辄几十GB甚至上百GB。这时候如果按照传统方法先下载到本地电脑再上传…...