当前位置: 首页 > 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的某一位…...

我见过最聪明的技术人,都在偷偷培养这3种“非技术能力”

在软件测试行业摸爬滚打这些年,我见过太多天赋异禀的技术从业者:有人能一夜吃透新的自动化测试框架,有人能对着流量日志半小时定位出隐藏半年的内存泄漏问题,有人能把性能测试指标优化到远超行业标准。可几年过去,真正…...

3分钟搞定B站缓存:这款神器让视频转换超简单

3分钟搞定B站缓存:这款神器让视频转换超简单 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾为B站视频下架而焦虑&#xff1…...

写给前端的 CANN-ops-rand:昇腾随机数生成算子库到底是啥?

之前做强化学习,兄弟问我:“哥,我想在昇腾上做蒙特卡洛模拟,随机数生成有现成的库吗?” 好问题。今天一次说清楚。 ops-rand 是啥? ops-rand Operations for Random,昇腾随机数生成算子库。 一…...

视频孪生融合落地,无感定位完胜 UWB 静态定位模式

视频孪生融合落地,无感定位完胜 UWB 静态定位模式数字孪生产业加速向实景化、动态化、实景融合方向纵深发展,视频孪生凭借实景画面与虚拟模型共生联动的特性,成为实体场景数字化治理的核心载体。空间定位作为视频孪生的数据根基,直…...

C语言学习笔记20260522—交换两个整数的值(地址传递)/打印1-100直接3倍数的数字/两个数最大公约数(最小公倍数)

一.知识点 函数需要改变实参时,必要要用地址传递,不能用值传递。当一个数%比自己大的数是,%的值就是自己本身。数辗转相除法(欧几里得算法)求两个数的最大公约数。两个数的最小公倍数为两个数的乘积除以最大公约数。 二…...

华为交换机Telnet配置保姆级教程:从无认证到AAA认证,手把手带你避坑

华为交换机Telnet安全配置全指南:从基础到企业级实践 远程管理网络设备是每位网络工程师的必备技能,而Telnet作为最传统的远程登录协议之一,至今仍在许多企业环境中广泛使用。记得我刚入行时,第一次通过Telnet成功登录到一台核心交…...

Temu 运营进阶之路 工具选型与凌风体系分析

TEMU商家体量持续扩张,平台规则与收费体系愈发复杂,纯人工运营耗时费力,核算误差、合规疏漏问题频发。市面上运营工具繁杂,商家难以甄别适配工具。本文以行业实操角度,客观拆解凌风工具箱的适配能力与实用价值&#xf…...

【声呐】基于matlab实时被动声纳控制台模拟器(利用声学信号探测和跟踪水下目标,且不发送任何声音)【含Matlab源码 15546期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

yolo 源码与模型

YOLOv8 官方源码、预训练模型(.pt)、导出 ONNX 模型、以及 ROS2 C 部署源码(含检测框输出),全部是可直接用的工业级版本。 一、YOLOv8 官方源码(Ultralytics) 1. GitHub 源码地址(最…...

Claude Code 终端命令完整指南

引言最初是为了方便我个人学习使用Claude Code才去网络上收集各种终端命令,但想到可能有人同样需要知道这些命令,便打算将其整理发到CSDN上,希望能帮到大家。 有点标题党的是本文并不是真的完整指南,毕竟完整的命令太多了&#xf…...