手机相册的 “智能分类” 功能
我们以手机相册的 “智能分类” 功能(识别图片中的物体类型)为例,演示如何使用 TensorFlow Lite 框架将端侧模型部署到 Android 设备上。该场景通用且覆盖端侧部署的核心步骤:模型准备→环境配置→代码集成→硬件加速→业务调用。
一、场景需求与模型选择
需求:手机相册扫描本地图片,自动分类为 “风景”“宠物”“美食” 等类别(支持 1000 + 类)。
模型选择:使用轻量级图像分类模型 MobileNetV3-Small(TFLite 格式),体积仅 5.4MB,精度接近 ResNet-50,但推理速度更快(手机端 < 30ms)。
二、模型准备与项目配置
- 获取 TFLite 模型
从 TensorFlow 官方模型库下载预训练的 MobileNetV3-Small TFLite 模型:
下载地址(选择.tflite格式)。
将模型文件重命名为mobilenet_v3_small.tflite,放入 Android 项目的app/src/main/assets/models/目录。 - 配置 Android 项目依赖
在build.gradle中添加 TFLite 依赖(支持硬件加速和量化模型):
gradle
dependencies {// TFLite基础库implementation 'org.tensorflow:tensorflow-lite:2.15.0'// GPU加速代理(可选,需设备支持)implementation 'org.tensorflow:tensorflow-lite-gpu-delegate:2.15.0'// NNAPI加速代理(可选,Android 8.1+)implementation 'org.tensorflow:tensorflow-lite-nnapi:2.15.0'
}
三、核心代码实现(端侧部署)
- 模型加载与初始化(含硬件加速)
创建ImageClassifier类,封装模型加载、推理和资源释放逻辑,支持自动选择最优加速方案(NNAPI→GPU→CPU 多线程):
kotlin
```kotlin
import android.content.Context
import android.graphics.Bitmap
import android.os.Build
import org.tensorflow.lite.Interpreter
import org.tensorflow.lite.gpu.CompatibilityList
import org.tensorflow.lite.gpu.GpuDelegate
import org.tensorflow.lite.nnapi.NnApiDelegate
import java.nio.ByteBuffer
import java.nio.ByteOrderclass ImageClassifier(private val context: Context) {private var interpreter: Interpreter? = nullprivate var nnApiDelegate: NnApiDelegate? = nullprivate var gpuDelegate: GpuDelegate? = null// 模型输入参数(根据MobileNetV3配置)private val inputWidth = 224private val inputHeight = 224private val inputChannel = 3private val inputSize = inputWidth * inputHeight * inputChannel * 4 // FP32每通道4字节init {initializeModel()}/** 初始化模型(自动选择加速方案) */private fun initializeModel() {val options = Interpreter.Options().apply {// 优先使用NNAPI(需Android 9+)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {nnApiDelegate = NnApiDelegate().also { addDelegate(it) }} // 次优使用GPU(需设备支持)else if (CompatibilityList().isDelegateSupportedOnThisDevice) {gpuDelegate = GpuDelegate(CompatibilityList().bestOptionsForThisDevice).also { addDelegate(it) }} // 兜底使用CPU多线程else {setNumThreads(4)}setAllowFp16PrecisionForFp32(true) // 允许FP16混合精度}// 从assets加载模型val modelBuffer = context.assets.open("models/mobilenet_v3_small.tflite").use { inputStream ->val buffer = ByteBuffer.allocateDirect(inputStream.available()).order(ByteOrder.nativeOrder())inputStream.read(buffer.array())buffer}interpreter = Interpreter(modelBuffer, options)}/** 执行图像分类推理 */fun classify(bitmap: Bitmap): List<Pair<String, Float>> {// 1. 预处理图像(缩放+归一化)val inputBuffer = bitmapToByteBuffer(bitmap)// 2. 初始化输出缓冲区(1000类概率)val output = Array(1) { FloatArray(1000) }// 3. 运行推理interpreter?.run(inputBuffer, output)// 4. 后处理(取Top5类别)return output[0].withIndex().sortedByDescending { it.value }.take(5).map { "类别${it.index}" to it.value } // 实际需替换为真实类别名称(如"狗")}/** 释放模型资源 */fun release() {interpreter?.close()nnApiDelegate?.close()gpuDelegate?.close()}/** 图像转ByteBuffer(模型输入格式) */private fun bitmapToByteBuffer(bitmap: Bitmap): ByteBuffer {val resizedBitmap = Bitmap.createScaledBitmap(bitmap, inputWidth, inputHeight, true)val buffer = ByteBuffer.allocateDirect(inputSize).order(ByteOrder.nativeOrder())buffer.rewind()val pixels = IntArray(inputWidth * inputHeight)resizedBitmap.getPixels(pixels, 0, inputWidth, 0, 0, inputWidth, inputHeight)for (pixel in pixels) {// 归一化到[0,1](MobileNetV3输入范围)buffer.putFloat((pixel shr 16 and 0xFF) / 255.0f) // Rbuffer.putFloat((pixel shr 8 and 0xFF) / 255.0f) // Gbuffer.putFloat((pixel and 0xFF) / 255.0f) // B}return buffer}
}
四、业务方调用示例
在相册应用的图片浏览界面,调用ImageClassifier实现智能分类:```kotlin
class PhotoDetailActivity : AppCompatActivity() {private lateinit var classifier: ImageClassifieroverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)classifier = ImageClassifier(applicationContext)// 从Intent获取图片路径val imagePath = intent.getStringExtra("image_path")val bitmap = BitmapFactory.decodeFile(imagePath)// 执行分类val result = classifier.classify(bitmap)showClassificationResult(result)}private fun showClassificationResult(result: List<Pair<String, Float>>) {// 在界面显示Top5类别(如"狗: 92.3%", "宠物: 6.5%")val resultText = result.joinToString("\n") { "${it.first}: ${(it.second * 100).format(1)}%" }findViewById<TextView>(R.id.tv_result).text = "分类结果:\n$resultText"}override fun onDestroy() {classifier.release() // 释放模型资源super.onDestroy()}
}
五、关键优化点说明
硬件加速:
NNAPI(Android 9+):调用设备 GPU/TPU 专用加速器,推理速度提升 30%-50%;
GPU Delegate:通过 OpenGL/Vulkan 调用 GPU,适合不支持 NNAPI 的旧设备;
CPU 多线程:默认 4 线程,平衡速度与功耗。
模型压缩:
使用量化模型(如 INT8):体积从 15MB(FP32)缩小至 4MB,推理速度提升 2 倍,精度损失 < 2%;
若需更高精度,可保留 FP16 混合精度(体积 8MB,速度接近 INT8)。
内存优化:
使用ByteBuffer直接内存(避免 Java 堆内存拷贝);
复用输入 / 输出缓冲区(减少 GC 频率)。
六、测试与验证
性能测试:使用TFLite Benchmark工具(官方文档)测量推理延迟(目标 < 50ms);
精度验证:用 COCO 数据集测试模型准确率(MobileNetV3-Small 在 ImageNet 上的 Top-1 准确率约 67%);
设备兼容性:在主流 Android 机型(如小米、三星、Pixel)上测试,确保 NNAPI/GPU 加速正常。
通过以上步骤,业务方只需集成ImageClassifier类,传入图片即可实现端侧智能分类,无需关注底层模型加载、加速配置等细节。该方案可扩展至其他端侧场景(如目标检测、文本分类),只需替换模型和输入输出处理逻辑即可。
相关文章:
手机相册的 “智能分类” 功能
我们以手机相册的 “智能分类” 功能(识别图片中的物体类型)为例,演示如何使用 TensorFlow Lite 框架将端侧模型部署到 Android 设备上。该场景通用且覆盖端侧部署的核心步骤:模型准备→环境配置→代码集成→硬件加速→业务调用。…...
配置Hadoop集群-上传文件
(一)上传小文件 上传文件的时候,我们传一个大一点的(>128M),再传一个小一点的。对于大一点的文件,我们要去看看它是否会按128M为单位去拆分这个大文件,而拆分成大文件之后&#x…...
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信(附源码)
简言: 在万物互联的时代,MQTT协议凭借其轻量级、高效率的特性,已成为物联网通信的事实标准。本教程将带领您在Ubuntu系统上搭建EMQX 5.9.0消息服务器,并使用Spring Boot快速实现两个客户端的高效通信。通过本指南,您将…...
windows c++ (9) 程序内注册服务并修改登录账户
实现方式全以批处理文件实现,直接在进程内调用即可 1、注册服务 注册服务manage.bat内容如下 echo off setlocalset ServiceExeYouProcess.exe set ServiceNameYouProcess set BASE%~dp0:: 检查命令行参数 if "%~1""" (echo Usage: manage_p…...
按键精灵ios脚本新增元素功能助力辅助工具开发(三)
元素节点功能(iOSElement) 在按键精灵 iOS 新版 APP v2.2.0 中,新增了元素节点功能 iOSElement,该功能包含共 15 个函数。这一功能的出现,为开发者在处理 iOS 应用界面元素时提供了更为精准和高效的方式。通过这些函…...
OpenHarmony平台驱动开发(十五),SDIO
OpenHarmony平台驱动开发(十五) SDIO 概述 功能简介 SDIO(Secure Digital Input and Output)由SD卡发展而来,与SD卡统称为MMC(MultiMediaCard),二者使用相同的通信协议。SDIO接口…...
ICMP协议详解及不同VLAN/VXLAN主机通信中的ICMP示例
一、ICMP协议概述 ICMP(Internet Control Message Protocol,互联网控制消息协议)是TCP/IP协议栈中的一项核心协议,用于在IP网络中传输控制消息和错误报告。ICMP定义在RFC 792中,主要用于诊断网络问题和传递控制信息。…...
SQL server数据库实现远程跨服务器定时同步传输数据
项目背景 数据需要定期迁移,数据存在于客户政务外网下,从旧数据库迁移到新数据库中,且要求能够定时增量同步。 注意: 源数据库所在服务器为windows服务器,目标数据库所在服务器为linux服务器。 源数据库所在windows服…...
贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现
贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现 目录 贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.BO-TransformerSVM多变量时间序列预测,…...
服务器租用与托管注意事项有哪些
在当今数字化的时代,服务器对于企业和个人的重要性不言而喻。无论是搭建网站、运行应用程序,还是存储数据,服务器都是关键的基础设施。而服务器租用与托管作为常见的选择方式,其中的注意事项你可不能马虎。 企业在进行租用或者是…...
【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.3 风险指标可视化监控
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 PostgreSQL金融风控分析之风险指标可视化监控实战一、引言二、案例背景三、数据准备(一)数据来源与字段说明(二)数据清洗 四、…...
【AI提示词】贝叶斯分析专家
提示说明 一名专业的贝叶斯推断专家,具备统计建模、数据分析和不确定性决策方面的专长。 提示词 # Role: 贝叶斯分析专家## Profile - language: 中文 - description: 一名专业的贝叶斯推断专家,具备统计建模、数据分析和不确定性决策方面的专长 - ba…...
星云智控自定义物联网实时监控模板-为何成为痛点?物联网设备的多样化-优雅草卓伊凡
星云智控自定义物联网实时监控模板-为何成为痛点?物联网设备的多样化-优雅草卓伊凡 引言:物联网监控的模板革命 在万物互联的时代,设备监控已成为保障物联网系统稳定运行的核心环节。传统的标准化监控方案正面临着设备类型爆炸式增长带来的…...
#跟着若城学鸿蒙#HarmonyOS NEXT学习之Blank组件详解
一、组件介绍 Blank(空白)组件是HarmonyOS NEXT中一个简单但非常实用的UI组件,它主要用于在布局中创建空白区域,帮助开发者更灵活地控制界面元素之间的间距和布局结构。虽然Blank组件本身不显示任何内容,但它在界面设…...
《Docker 入门与进阶:架构剖析、隔离原理及安装实操》
1 docker 简介 1.1 Docker 的优点 Docker 是一款开放平台,用于应用程序的开发、交付与运行,能将应用和基础架构分离,实现软件快速交付 ,还能以统一方式管理应用和基础架构,缩短代码从编写到上线的时间。其核心优势如…...
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——mqtt库
准备工作 请依照这篇文章搭建环境 OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——环境配置_openharmony交叉编译-CSDN博客 下载 wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.9.tar.xz 解压 tar -xf mkdir ./out cd ./out Cmake命…...
【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树
⭐️个人主页:小羊 ⭐️所属专栏:LeetCode 热题 100 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 二叉树的中序遍历二叉树的最大深度翻转二叉树对称二叉树二叉树的直径二叉树的层序遍历将有序数组转换为二叉搜索树验…...
中国版 Cursor---腾讯云 CodeBuddy | 从安装VSCode到数独小游戏问世
中国版 Cursor---腾讯云 CodeBuddy | 从安装VSCode到数独小游戏问世 引言CodeBuddy环境准备VSCodeCodeBuddyNode.js下载安装 游戏开发Craft模型一句话生成数独游戏游戏体验 EdgeOne PagesMCPPages MCP Server配置 MCP Server 游戏源码总结 引言 在正文开始之前,先引…...
【蓝桥杯嵌入式】【复盘】第13届国赛真题
1. 前言 最近在准备16届的蓝桥杯嵌入式赛道的国赛,打算出一个系列的博客,记录STM32G431RBT6这块比赛用板上所有模块可能涉及到的所有考点,如果有错误或者遗漏欢迎各位大佬斧正。 本系列博客会分为以下两大类: 1.1. 单独模块的讲…...
Docker疑难杂症解决指南
Docker疑难杂症解决指南 Docker作为容器化技术的代表,广泛应用于开发、测试和部署环境中。然而,在使用过程中,用户可能会遇到各种问题。以下是一些常见的Docker疑难杂症及其解决方法。 容器无法启动 容器无法启动是常见问题之一࿰…...
嵌入式开发学习日志(数据结构--顺序结构单链表)Day19
一、顺序结构 安装软件命令: sudo apt-get install (软件名) 安装格式化对齐:sudo apt-get install clang-format 内存泄漏检测工具: sudo apt-get install valgrind 编译后,使用命令 valgrind ./a.out 即可看内…...
MySQL 8.0 OCP 1Z0-908 题目解析(2)
题目005 Choose two. Which two actions can obtain information about deadlocks? □ A) Run the SHOW ENGINE INNODB MUTEX command from the mysql client. □ B) Enable the innodb_status_output_locks global parameter. □ C) Enable the innodb_print_all_deadlock…...
短板效应--双指针
1.根据题意取决于最小的高,那么 若当移动最小高的一端,mv可能会变 但若移动较大的一端,v一定会变小就没有意义了,所以我们只需要每次移动一端,直到lr就行 2.原理就是与左右端点有关且每次只要移动一端就行 #include…...
CodeBuddy终极测评:中国版Cursor的开发革命(含安装指南+HTML游戏实战)
一、腾讯云CodeBuddy产品全景解读 1. 什么是腾讯云代码助手? 官方定义: Tencent Cloud CodeBuddy是由腾讯自研的AI编程辅助工具,基于混元大模型DeepSeek双引擎,提供: ✅ 智能代码补全(支持200语言&#x…...
【Linux】简单设计libc库
📝前言: 经过之间两篇文章,【Linux】基础IO(一)和【Linux】基础IO(二)的学些,我们对文件的基础IO已经有了一定的理解。 这篇文章我们来简单设计一下libc库,来复习一下文…...
3335. 字符串转换后的长度 I
3335. 字符串转换后的长度 I class Solution:def lengthAfterTransformations(self, s: str, t: int) -> int:# 大质数mod 10**97# 创建一个长度为26的数组cnt,对应26个小写字母cnt [0]*26# 计算出s中26个字符分别有多少个for ch in s:cnt[ord(ch)-ord(a)] 1f…...
《医院网络安全运营能力成熟度评估指南》(试行版)研究解读
引言 随着数字化转型的不断深入,医院信息化建设已从单点应用走向全面系统集成,信息系统已成为支撑医院业务运行和管理决策的基础设施。然而,信息化发展也带来了日益复杂的网络安全挑战,从传统的边界防护到如今的全方位安全威胁,医院网络安全建设面临着前所未有的压力。20…...
鸿蒙5.0项目开发——鸿蒙天气项目的实现(介绍)
【高心星出品】 文章目录 项目简介:项目运行效果图:主要功能:使用的技能点:开发环境: 项目简介: 这是一个基于鸿蒙系统(HarmonyOS)开发的天气应用,采用 ArkTS 语言开发&…...
软考软件测评师——计算机网络
目录 第一部分 核心知识点解析 1. IPv4地址规范 2. 层次化网络架构 3. 网络设备解析 4. URL结构规范 5. 关键网络命令 6. SNMP配置要求 第二部分 历年真题精析 2020年真题 2016年真题 2015年真题 高频考点总结 第一部分 核心知识点解析 1. IPv4地址规范 特殊地址说…...
Node.js 中的 URL 模块
一、URL 模块基础 1. 模块导入方式 // Node.js 方式 const url require(url);// ES 模块方式 (Node.js 14 或启用 ESM) import * as url from url; 2. 核心功能 解析 URL 字符串 格式化 URL 对象 URL 处理工具方法 WHATWG URL 标准实现 二、URL 解析与构建 1. 传统解…...
JavaWeb 前端开发
JavaWeb前端 初识 HTMLCSS 入门程序 什么是HTML HTML是由标签构成的 什么是CSS HTML快速入门 标签可以是大写,也可以是小写,也可以是大小写混用。 属性值也可以使用单引号,但一般使用双引号。 HTML的语法结构比较松散,不严谨…...
设计模式深度解析:AI大模型下的策略模式与模板方法模式对比解析
目录 一、策略模式:AI大模型的动态决策引擎 1.1 核心原理与工业级实现 1.2 AI时代的技术演进 二、模板方法模式:AI流水线的标准化基石 2.1 多模态处理框架设计 三、策略与模板方法的协同创新 3.1 电商推荐系统实践 四、前沿趋势与挑战 4.1 量子计算增强模式 五、伦理…...
2. 盒模型/布局模块 - 响应式产品展示页_案例:电商产品网格布局
2. 盒模型/布局模块 - 响应式产品展示页 案例:电商产品网格布局 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">:root {--primary-color…...
H5S 视频监控AWS S3 对象存储
本文介绍一下如何使用S3对象存储作为H5S 存储空间进行录像存储 然后创建一个对象存储,本文以minio 为例(实际项目亲测天翼云): 首先安装 s3fs 如果是redhat系列,使用如下命令 sudo yum install epel-release sudo yum install s3fs-fuse …...
Visual Studio 2022 跨网络远程调试
🚀 Visual Studio 2022 跨网络远程调试实践指南 在本地开发软件时,Visual Studio 的调试器是我们最依赖的工具之一。但是当目标程序运行在远程设备上,例如测试服务器、工控设备或嵌入式终端,如何实现 跨网络远程调试 成为了开发中…...
最短路与拓扑(1)
1、找最长良序字符串 #include<bits/stdc.h> using namespace std; const int N105; int dis[N]; int vis[N]; int edge[N][N]; int n,m; int vnum;void dij(int u, int v) {// 初始化距离数组和访问标记for(int i0; i<vnum; i) {vis[i] 0;dis[i] edge[u][i];}// D…...
【前缀和】和为 K 的子数组(medium)
【前缀和】和为 K 的子数组 题目描述算法原理和细节问题代码 题目描述 和为 K 的子数组 给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。 示例 1: 输入:nums [1,1,1], k 2 输出: 2 解释: 此题 [1,1] 与 [1,1] 为两种不同的…...
深入理解 JVM:StackOverFlow、OOM 与 GC overhead limit exceeded 的本质剖析及 Stack 与 Heap 的差异
摘要 在 Java 开发过程中,内存管理相关的问题一直是开发者需要重点关注的领域。StackOverFlow、OutOfMemory(OOM)和GC overhead limit exceeded是常见的运行时错误,而理解Stack(栈)和Heap(堆&a…...
汽车功能安全--TC3xx MBIST设计要点
英飞凌针对硬件潜伏故障的自测,提供了四种机制:PBIST、LBIST、MONBIST和MBIST。 LBIST和MONBIST我们已经聊过了,今天就快速介绍下MBIST。 MBIST,全程Memory Built-in Self Test,用于检测SRAM数据单元的完整性。 在2…...
blazor与硬件通信实现案例
在网页接入硬件交互通信方案这篇博客中,曾经提到了网页中接入各种硬件操作的方法,即通过Windows Service作为指令的中转,并建立websocket通信连接,进而实现接入硬件的各种操作。这篇博客就以实际的案例来讲解具体怎么实现。 一、建立Windows Service项目 比如我就建立了一…...
思迈特软件携手天阳科技,打造ChatBI金融智能分析新标杆
5月10日,广州思迈特软件有限公司(以下简称“思迈特软件”)与天阳宏业科技股份有限公司(以下简称“天阳科技”)在北京正式签署战略合作协议。思迈特软件董事长吴华夫、CEO姚诗成,天阳科技董事长兼总裁欧阳建…...
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
在上一篇中,我们理解了微服务架构的核心理念以及Spring Cloud为我们提供的强大工具集。我们提到,微服务架构的一个核心挑战在于,服务实例的网络位置是动态的,服务之间需要一种机制来互相定位。 想象一下,你开了一家新…...
Linux之初见进程
1. 冯诺依曼体系结构 冯诺依曼体系结构是计算机的基本设计原则之一,也被认为是现代计算机的基础。它由美国数学家约翰冯诺伊曼在20世纪40年代后期提出。冯诺依曼体系结构包括存储程序概念、将数据和指令存储在同一存储器中、按照顺序执行指令等关键特征。 具体来说…...
Docker入门教程:常用命令与基础概念
目录 简介常用命令Docker 常用命令汇总docker run 命令格式与参数解析 简介 Docker 是一个客户端-服务器(client-server)架构的应用程序,其中包含两个主要组件:Docker 客户端和 Docker 守护进程(也称为 Docker Daemon…...
内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
内核深入学习3——ARM32/ARM64在Linux内核中的实现(2) 今天我们来讨论的是一个硬核的内容,也是一个老生常谈的话题——那就是分析ARM32和ARM64体系架构下的Linux内存区域示意图的内容。对于ARM64的部分,我们早就知道一个基本的…...
vim 练习题
文章目录 前言:学习了vim基础命令,上机实操下吧命令模式练习插入模式练习末行模式练习视图模式练习高级操作练习 总结 前言:学习了vim基础命令,上机实操下吧 命令模式练习 打开任意文本文件,使用gg跳转到首行&#x…...
CSS3 选择器完全指南:从基础到高级的元素定位技术
CSS3选择器完全指南:从基础到高级的元素定位技术 一、基本选择器:精准定位的基石 (一)元素选择器 通过元素标签名直接匹配页面元素,语法简洁直观: p { color: #333; } /* 选择所有<p>元素 */ div…...
从SAM看交互式分割与可提示分割的区别与联系:Interactive Segmentation Promptable Segmentation
SAM的火爆也带来了一项新的任务:Promptable Segmentation,并且作者在文中对比了交互式分割Interactive Segmentation,并且在训练过程中也参考了交互式分割的训练方法,那么可提示分割与交互式分割有什么区别? 个人观点…...
k8s初始化时候,报错无法通过 CRI(容器运行时接口)与 containerd 通信
报错主要信息处 [reset] Unmounting mounted directories in “/var/lib/kubelet” W0513 11:34:19.818023 27124 cleanupnode.go:134] [reset] Failed to evaluate the “/var/lib/kubelet” directory. Skipping its unmount and cleanup: lstat /var/lib/kubelet: no such f…...
k8s之k8s集群部署
一、kubernetes基础环境搭建 1.安装虚拟机 2. 基础环境配置 2.1 关闭防火墙 更改主机名 #系统更新 sudo dnf update -y # 关闭防火墙 sudo systemctl stop firewalld sudo systemctl disable firewalld # 临时关闭 SELinux sudo setenforce 0 # 永久关闭 SELinux sudo sed -i…...