k8s配置
一、前期准备
1、修改主机的/etc/hosts文件挟持域名
[root@k8s-master ~]# vim /etc/hosts
192.168.8.199 k8s-master 192.168.8.200 k8s-node1 192.168.8.201 k8s-node2
2、配置yum源
[root@k8s-master ~]# cd /etc/yum.repos.d/
[root@k8s-master yum.repos.d]# vim kubernetes.repo[kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpmpackage-key.gpg
[root@k8s-master yum.repos.d]# vim docker-ce.repo
[docker-ce-stable] name=Docker CE Stable - $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-stable-debuginfo] name=Docker CE Stable - Debuginfo $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/stable enabled=0 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-stable-source] name=Docker CE Stable - Sources baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/stable enabled=0 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test] name=Docker CE Test - $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/test enabled=0 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test-debuginfo] name=Docker CE Test - Debuginfo $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/test enabled=0 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-test-source] name=Docker CE Test - Sources baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/test enabled=0 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-nightly] name=Docker CE Nightly - $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/nightly enabled=0 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-nightly-debuginfo] name=Docker CE Nightly - Debuginfo $basearch baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/debug-$basearch/nightly enabled=0 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg[docker-ce-nightly-source] name=Docker CE Nightly - Sources baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/source/nightly enabled=0 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[root@k8s-master yum.repos.d]# yum clean all && yum makecache
3、安装必备软件
[root@k8s-master yum.repos.d]# yum install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git -y
4、同步时间
[root@k8s-master yum.repos.d]# yum -y install ntpdate
[root@k8s-master yum.repos.d]# ntpdate time2.aliyun.com
[root@k8s-master yum.repos.d]# crontab -e*/5 * * * * /usr/sbin/ntpdate time2.aliyun.com
[root@k8s-master yum.repos.d]# which ntpdate
/usr/sbin/ntpdate
5、配置limit
[root@k8s-master yum.repos.d]# ulimit -SHn 65535
[root@k8s-master yum.repos.d]# vim /etc/security/limits.conf* soft nofile 65536 * hard nofile 131072 * soft nproc 65535 * hard nproc 655350 * soft memlock unlimited * hard memlock unlimited
6、安装 k8s ⾼可⽤性 Git 仓库
[root@k8s-master ~]# git clone https://gitee.com/dukuan/k8s-ha-install.git
重启虚拟机
二、配置内核模块
1、配置 ipvs 模块
[root@k8s-master ~]# yum install ipvsadm ipset sysstat conntrack libseccomp -y
[root@k8s-master ~]# modprobe -- ip_vs
[root@k8s-master ~]# modprobe -- ip_vs_rr
[root@k8s-master ~]# modprobe -- ip_vs_wrr
[root@k8s-master ~]# modprobe -- ip_vs_sh
[root@k8s-master ~]# modprobe -- nf_conntrack[root@k8s-master ~]# vim /etc/modules-load.d/ipvs.conf
# 在系统启动时加载下列 IPVS 和相关功能所需的模块 ip_vs # 负载均衡模块 ip_vs_lc # 用于实现基于连接数量的负载均衡算法 ip_vs_wlc # 用于实现带权重的最少连接算法的模块 ip_vs_rr # 负载均衡rr算法模块 ip_vs_wrr # 负载均衡wrr算法模块 ip_vs_lblc # 负载均衡算法,它结合了最少连接(LC)算法和基于偏置的 轮询(Round Robin with Bias)算法 ip_vs_lblcr # 用于实现基于链路层拥塞状况的最少连接负载调度算法的> 模块 ip_vs_dh # 用于实现基于散列(Hashing)的负载均衡算法的模块 ip_vs_sh # 用于源端负载均衡的模块 ip_vs_fo # 用于实现基于本地服务的负载均衡算法的模块 ip_vs_nq # 用于实现NQ算法的模块ip_vs_sed # 用于实现随机早期检测(Random Early Detection)算法模>块 ip_vs_ftp # 用于实现FTP服务的负载均衡模块 ip_vs_sh nf_conntrack # 用于跟踪网络连接的状态的模块 ip_tables # 用于管理防护墙的机制 ip_set # 用于创建和管理IP集合的模块 xt_set # 用于处理IP数据包集合的模块,提供了与iptables等网络工具的 接口 ipt_set #用于处理iptables规则集合的模块 ipt_rpfilter # 用于实现路由反向路径过滤的模块 ipt_REJECT # iptables模块之一,用于将不符合规则的数据包拒绝,并返 回特定的错误码 ipip # 用于实现IP隧道功能的模块,使得数据可以在两个网络之间进行传 输
2、配置 k8s 内核
[root@k8s-master ~]# yum -y install kubernetes
[root@k8s-master ~]# vim /etc/sysctl.d/k8s.conf
#写入k8s所需内核模块 net.bridge.bridge-nf-call-iptables = 1 # 控制网络桥接与iptables之间的网络转发行为 net.bridge.bridge-nf-call-ip6tables = 1 # 用于控制网络桥>接(bridge)的IP6tables过滤规则。当该参数设置为1时,表示启用对网>络桥接的IP6tables过滤规则 fs.may_detach_mounts = 1 # 用于控制文件系统是否允>许分离挂载,1表示允许 net.ipv4.conf.all.route_localnet = 1 # 允许本地网络上>的路由。设置为1表示允许,设置为0表示禁止。 vm.overcommit_memory=1 # 控制内存分配策略。设置为1表示允 许内存过量分配,设置为0表示不允许。 vm.panic_on_oom=0 # 决定当系统遇到内存不足(OOM)时 是否产生panic。设置为0表示不产生panic,设置为1表示产生panic。 fs.inotify.max_user_watches=89100 # inotify可以监视 的文件和目录的最大数量。 fs.file-max=52706963 # 系统级别的文件描述符的最大数量>。 fs.nr_open=52706963 # 单个进程可以打开的文件>描述符的最大数量。 net.netfilter.nf_conntrack_max=2310720 # 网络连接跟踪表>的最大大小。 net.ipv4.tcp_keepalive_time = 600 # TCP保活机制发送 探测包的间隔时间(秒)。 net.ipv4.tcp_keepalive_probes = 3 # TCP保活机制发送 探测包的最大次数。 net.ipv4.tcp_keepalive_intvl =15 # TCP保活机制在发 送下一个探测包之前等待响应的时间(秒)。 net.ipv4.tcp_max_tw_buckets = 36000 # TCP TIME_WAIT状态的bucket数量。 net.ipv4.tcp_tw_reuse = 1 # 允许重用TIME_WAIT套接字 。设置为1表示允许,设置为0表示不允许。 net.ipv4.tcp_max_orphans = 327680 # 系统中最大的孤>套接字数量。 net.ipv4.tcp_orphan_retries = 3 # 系统尝试重新分>配孤套接字的次数。 net.ipv4.tcp_syncookies = 1 # 用于防止SYN洪水攻击。设 置为1表示启用SYN cookies,设置为0表示禁用。 net.ipv4.tcp_max_syn_backlog = 16384 # SYN连接请求队列 的最大长度。 net.ipv4.ip_conntrack_max = 65536 # IP连接跟踪表的>最大大小。 net.ipv4.tcp_max_syn_backlog = 16384 # 系统中最大的监>听队列的长度。 net.ipv4.tcp_timestamps = 0 # 用于关闭TCP时间戳选项。 net.core.somaxconn = 16384 # 用于设置系统中最大的监>听队列的长度
三、基本组件安装
1、安装 Containerd
[root@k8s-master ~]# yum remove -y podman runc containerd
[root@k8s-master ~]# yum -y install containerd.io[root@k8s-master ~]# yum remove -y docker
[root@k8s-master ~]# yum -y install docker-ce docker-ce-cli
2、配置 Containerd 所需模块
[root@k8s-master ~]# cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
> overlay
> br_netfilter
> EOF[root@k8s-master ~]# modprobe -- overlay
[root@k8s-master ~]# modprobe -- br_netfilter
3、配置 Containerd 所需内核
[root@k8s-master ~]# vim /etc/sysctld./99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1
[root@k8s-master ~]# sysctl --system
4、containerd配置文件
[root@k8s-master ~]# mkdir -p /etc/containerd
[root@k8s-master ~]# containerd config default | tee /etc/containerd/config.toml
[root@k8s-master ~]# vim /etc/containerd/config.toml
#128 sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9"
[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl enable --now containerd
5、配置 crictl 客户端连接的运⾏位置
[root@k8s-master ~]# vim /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false
6、安装 Kubernetes 组件
[root@k8s-master ~]# yum install kubeadm-1.28* kubelet-1.28* kubectl-1.28* -y
[root@k8s-master ~]# yum -y remove kubernetes-client-1.5.2-0.7.git269f928.el7.x86_64
[root@k8s-master ~]# yum -y install kubectl-1.28.2-0.x86_64
[root@k8s-master ~]# yum -y install kubelet-1.28.2-0.x86_64[root@k8s-master ~]# yum -y install kubeadm-1.28.2-0.x86_64
[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl enable --now kubelet
7、Kubernetes 集群初始化
1.Kubeadm 配置⽂件
[root@k8s-master ~]# vim kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3 # 指定Kubernetes>配置文件的版本,使用的是kubeadm API的v1beta3版本 bootstrapTokens: # 定义bootstrap tokens的信息。这>些tokens用于在Kubernetes集群初始化过程中进行身份验证 - groups: # 定义了与此token关联的组- system:bootstrappers:kubeadm:default-node-tokentoken: 7t2weq.bjbawausm0jaxury # bootstrap token的值ttl: 24h0m0s # token的生存时间,这里设置为24小时usages: # 定义token的用途- signing # 数字签名- authentication # 身份验证 kind: InitConfiguration # 指定配置对象的类型,InitConfiguration:表示这是一个初始化配置 localAPIEndpoint: # 定义本地API端点的地址和端口advertiseAddress: 192.168.8.199bindPort: 6443 nodeRegistration: # 定义节点注册时的配置criSocket: unix:///var/run/containerd/containerd.sock # 容器运行时(CRI)的套接字路径name: k8s-master # 节点的名称taints: # 标记- effect: NoSchedule # 免调度节点key: node-role.kubernetes.io/control-plane # 该节点>为控制节点 --- apiServer: # 定义了API服务器的配置certSANs: # 为API服务器指定了附加的证书主体名称(SAN),指定IP即可- 192.168.8.199timeoutForControlPlane: 4m0s # 控制平面的超时时间,这>里设置为4分钟 apiVersion: kubeadm.k8s.io/v1beta3 # 指定API Server>版本 certificatesDir: /etc/kubernetes/pki # 指定了证书的存储目录 clusterName: kubernetes # 定义了集群的名称为"kubernetes" controlPlaneEndpoint: 192.168.8.199:6443 # 定义了>控制节点的地址和端口 controllerManager: {} # 控制器管理器的配置,为空表示使>用默认配置 etcd: # 定义了etcd的配置local: # 本地etcd实例dataDir: /var/lib/etcd # 数据目录 imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers # 指定了Kubernetes使用的镜像仓库的地址,阿里云的镜 像仓库。 kind: ClusterConfiguration # 指定了配置对象的类型,ClusterConfiguration:表示这是一个集群配置 kubernetesVersion: v1.28.2 # 指定了kubernetes的版本 networking: # 定义了kubernetes集群网络设置dnsDomain: cluster.local # 定义了集群的DNS域为:cluster.localpodSubnet: 172.16.0.0/16 # 定义了Pod的子网serviceSubnet: 10.96.0.0/16 # 定义了服务的子网 scheduler: {} # 使用默认的调度器行为
[root@k8s-master ~]# kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml
2.下载组件镜像
[root@k8s-master ~]# kubeadm config images pull --config /root/new.yaml
3.集群初始化
[root@k8s-master ~]# kubeadm init --config /root/new.yaml --upload-certs
相关文章:

k8s配置
一、前期准备 1、修改主机的/etc/hosts文件挟持域名 [rootk8s-master ~]# vim /etc/hosts 192.168.8.199 k8s-master 192.168.8.200 k8s-node1 192.168.8.201 k8s-node2 2、配置yum源 [rootk8s-master ~]# cd /etc/yum.repos.d/ [rootk8s-master yum.repos.d]# vim kubernetes…...

力扣第79题 单词搜索
前言 记录一下刷题历程 力扣第79题 单词搜索 单词搜索 原题目:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻…...

【系统架构设计师】抽象工厂设计模式
抽象工厂(Abstract Factory)模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在抽象工厂模式中,客户端不依赖于产品类实例的如何被创建、组合和表达的细节,这对于产品族(即一组相互关联或相互依赖的产品)的创建尤其…...

海外云手机有哪些推荐?
随着云手机的发展,越来越多的企业和个人开始使用云手机来满足他们的海外业务需求。用户可以通过云手机实现方便、快捷的海外访问,一般用来进行tiktok运营、亚马逊电商运营、海外社媒运营等操作。海外云手机平台有很多,以下是一些比较好的云手…...

旋转目标检测对照实验-mmrotate基础教程
环境安装和测试可以参考mmrotate旋转目标检测实战指南_validate mmrotate-CSDN博客 使用自定义数据集训练 如果需要使用自己的数据集进行训练,首先需要把自己数据的标签格式转换为dota数据集的格式,形如(前八个数为坐标值,第九个…...

Spring常见的面试问答题(一)
在面试过程中,Spring几乎是必问的几个点之一,特别是其中的IOC和AOP。 Spring常见的面试问答题 什么是Spring? 首先,Spring是一个生态,但是呢,这个生态里面又有个Spring Framework框架。 所以从Spring生…...

STM32 之 SDRAM 详解
目录 前言 一、SDRAM 简介 二、SDRAM的组成原理 2.1存储单元阵列 2.1.1地址译码 2.1.2存储电容 2.2控制逻辑 2.2.1时钟同步 2.2.2命令解码 2.2.3模式寄存器 2.3数据输入 / 输出缓冲 2.3.1数据总线 2.3.2数据锁存 2.4刷新电路 2.4.1自动刷新 2.4.2自刷新 三、S…...

基于图神经网络的最大独立集问题的目标分支
文章目录 Abstract1 Introduction2 Related Work分支顶点选择图神经网络Abstract 分支归约方法结合了分支约束原则和归约规则,在处理以前无法管理的现实世界实例方面特别成功。分支策略决定下一个要在哪个顶点上进行分支。最近,最广泛使用的策略是选择最高度的顶点。 在这项…...

【Qt】事件过滤器
事件过滤器 在 Qt 中,⼀个对象可能经常要查看或拦截另外⼀个对象的事件,如对话框想要拦截按键事件,不让别的组件接收到,或者修改按键的默认值等。通过上⾯的学习,我们已经知道,Qt 创建了 QEvent事件对象之后…...

字符串转换为整数、整数转换为字符串
整数转换为字符串 sprintf()它的功能是将各种类型的数据格式化为字符串,并存储到一个字符数组中。 sprintf 是 C 语言标准库中的一个函数,用于将格式化的数据写入一个字符串中。它的用法与 printf 类似,但不同的是,printf 输出到…...

解决samba无权限创建文件问题
将我服务器利用samba工具映射到到电脑后,没有权限在特定的文件里写文件,比如在mcu这个文件夹里面没有写文件的权限。 查看mcu文件夹的用户属性,属于root属性。 rootzwzn2064-CVN-Z690D5-GAMING-PRO:/home/zwzn2064# ls -ll total 9714860 dr…...

Ribbon快速了解
Ribbon 一、Ribbon 介绍 Ribbon 是一个客户端负载均衡器,它是 Netflix 开源的一个组件,常与 Spring Cloud 一起使用。 二、Ribbon 的作用 客户端负载均衡 Ribbon 可以在客户端实现负载均衡,即在服务消费者端根据一定的算法从多个服务提供者实…...

SpringBoot闲一品交易平台
SpringBoot闲一品交易平台 #vue项目实战 #计算机项目 #java项目 SpringBoot闲一品交易平台通过运用软件工程原理和开发方法,借助Spring Boot框架,旨在实现零食交易信息的高效管理,提升用户的购物体验和满意度。 技术栈 开发语言:…...

基于SpringBoot的物流管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于JavaSpringBootVueMySQL的物流管理系统【附源码文档】、…...

uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined
插件默认使用 localStorage 实现持久化,小程序端不兼容,需要替换持久化 API import { defineStore } from pinia export const useCommonStore defineStore(pack-store, {state: (): State > ({wwInfo: {},globalData: {},timerLock: false, //是…...

负载均衡调度器--LVS
文章目录 集群和分布式集群分布式 LVS介绍LVS特点LVS工作原理LVS集群架构 LVS集群中的术语CIPVIPRSDIPRIP LVS集群的工作模式NAT模式DR模式DR的工作原理DR的特点:DR的网络配置1.配置负载均衡器2.配置后端服务器lo接口的作用 3.测试连接: DR的典型应用场景 TUN模式 L…...

TinyWebSever源码逐行注释(五)_ http_conn.cpp
前言 项目源码地址 项目详细介绍 项目简介: Linux下C轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器. 使用 线程池 非阻塞socket epoll(ET和LT均实现) 事件处理(Reactor和模拟Proactor均实现) 的并发模型使用状态机…...

windows手工杀毒-寻找可疑进程之句柄
上篇回顾:windows手工杀毒-寻找可疑进程之内存-CSDN博客 上篇中我们介绍了如果通过进程的内存分析进程是否是可疑进程,主要是通过查看是否有可写可执行的内存页。也可以通过查看内存内容,看是否是可疑内容,不过这个可能需…...

java开发后端
1.BeanUtils.toBean 方法 它是一个常见的 Java 工具方法,用于将一个 JavaBean 对象转换为另一个 JavaBean 对象 FlowOrderDO flowOrder BeanUtils.toBean(createReqVO, FlowOrderDO.class); 这行代码使用了 BeanUtils.toBean 方法,它是一个常见的 Ja…...

Redis 的标准使用规范之数据类型使用规范
数据类型使用规范 提示:以下是本篇文章正文内容,可供参考 (1)、字符文本(STRING) 【建议】选型为简易文本类缓存 :比如普通的字符、文本、Json 结构 ,通常能起到加速读写和降低后端压力的作用。 【建议】…...

人工智能技术导论——基于产生式规则的机器推理
在引出本章的内容之前先介绍一个概念 知识 知识的概念 知识(Knowledge)是人们在改造客观世界的实践中形成的对客观事物(包括自然的和人造的)及其规律的认识,包括对事物的现象、本质、状态、关系、联系和运动等的认识…...

Apache Guacamole 安装及配置VNC远程桌面控制
文章目录 官网简介支持多种协议无插件浏览器访问配置和管理应用场景 Podman 部署 Apache Guacamole拉取 docker 镜像docker-compose.yml部署 PostgreSQL生成 initdb.sql 脚本部署 guacamole Guacamole 基本用法配置 VNC 连接 Mac 电脑开启自带的 VNC 服务 官网 https://guacam…...

在Linux中从视频流截取图片帧(ffmpeg )
Linux依赖说明: 说明: 使用到的 依赖包 1. ffmpegsudo apt update sudo apt-get install ffmpeg2. imagemagick (选装) (检测图像边缘信息推断清晰度,如果是简单截取但个图像帧>用不到<)sudo apt-get install imagemagick备注: 指令及相关参数说明核心指令: (作用: 执…...

使用脚手架来创建 express 项目
使用脚手架(scaffold)可以快速搭建Express应用程序的基本结构。Express自身提供了一个官方脚手架工具叫做express-generator,它可以帮助你快速地生成一个包含基本文件结构的Express项目。 安装Express Generator 首先,你需要全局…...

单片机常用的软件架构
参考 9种单片机常用的软件架构...

服务器模型 Reactor 和 Proactor
Proactor 具体流程如下: 处理器发起异步操作,并关注 IO 完成事件;事件分离器等待操作完成事件;分离器等待过程中,内核并行执行实际的 IO 操作,并将结果存储入用户自定义的缓冲区,最后通知事件分…...

使用 Grype 检查 .jar 包中的漏洞
在开发和部署 Java 应用时,确保依赖库和项目文件中的安全性至关重要。Grype 是一款强大的开源工具,用于扫描项目文件(如 .jar 包)中的已知漏洞。本篇博客将介绍如何手动安装 Grype 并使用它检测 .jar 包中的安全漏洞。 一、手动安…...

IDEA 常用插件推荐,美观又实用!
1、 TONGYl Lingma - Your Al Coding Assistant. Type less, Code more. 通义灵码,是一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力&…...

浮点数精度问题
为什么会产生精度问题? 我们带着这个问题去探寻浮点数二进制的存储原理 浮点数是怎么存在计算机中的? 浮点数在计算机中的表示通常遵循IEEE 754标准。其基本概念如下: 结构:浮点数由三部分组成: 符号位(…...

RK3576芯片在智能家居里中型智慧屏产品的应用方案分析
智能家居在近年来得到了快速发展,AI技术不断发展,人机交互十分成熟,各种家电也都迎来了智能化浪潮,智能家居为人们提供了优秀的产品体验,受到主流消费者的青睐,智能家居里的中型智慧屏产品也随之兴起。 瑞芯…...