K8s 安装部署-Master和Minion(Node)
K8s 安装部署-Master和Minion(Node)
操作系统版本:CentOS 7.4
Master :172.20.26.167
Minion-1:172.20.26.198
Minion-2:172.20.26.210(后增加节点)
ETCD:172.20.27.218
先安装部署ETCD
yum install etcd -y

cd /etc/etcd/
cp etcd.conf etcd.conf.bak #备份etcd.conf 文件

grep -aivE "#|^$" etcd.conf #去掉#、空行的显示
[root@localhost etcd]# grep -aivE "#|^$" etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"

vim etcd.conf

[root@localhost etcd]# mkdir -p /data/etcd/ #创建ETCD的数据目录
[root@localhost etcd]# id etcd #看看ETCD用户
uid=997(etcd) gid=995(etcd) 组=995(etcd)
[root@localhost etcd]# chown -R etcd.etcd /data/etcd/ #对数据目录授权etcd用户和组
[root@localhost etcd]# ls -ld /data/etcd/ #查看数据目录权限
drwxr-xr-x. 2 etcd etcd 6 4月 17 13:32 /data/etcd/

启动ETCD 服务
systemctl start etcd.service
ps -ef |grep -aiE etcd

创建key
etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'

安装部署Master
yum install kubernetes-master flannel -y


[root@bogon kubernetes]# vim apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://172.20.26.218:2379"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

因为我们没有配置账号和密码,所以要把“ServiceAccount,”删除掉,否则会出问题
[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true"
KUBE_MASTER="--master=http://172.20.26.167:8080"

[root@bogon kubernetes]# systemctl start kube-apiserver
[root@bogon kubernetes]# systemctl start kube-controller-manager
[root@bogon kubernetes]# systemctl start kube-scheduler
[root@bogon]#ps -ef | grep kube

查看kube-apiserver、kube-controller-manager、kube-scheduler服务进程都起来了,到此Master 端部署完成。
也可以使用for I in 命令重新启动各个服务:
for I in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $I
systemctl enable $I
systemctl status $I
done
安装部署(Node)Minion端
yum install kubernetes-node docker flannel *rhsm* -y
[root@bogon ~]# cd /etc/kubernetes/

[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true" 在web管理界面中,让勾选“以特权身份运行”生效
KUBE_MASTER="--master=http://172.20.26.167:8080"

[root@bogon kubernetes]# vim kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=172.20.26.198"
KUBELET_API_SERVER="--api-servers=http://172.20.26.167:8080"

vim /etc/sysconfig/flanneld #配置flannel网络

service flanneld start #先启动flanneld服务
service docker start #再启动docker 服务

在Master端也要配置flannel网络
[root@bogon ~]# vim /etc/sysconfig/flanneld

service flanneld start #启动flanneld服务

回到Minion端
启动kubelet、kube-proxy服务
[root@bogon ~]# service kubelet start
Redirecting to /bin/systemctl start kubelet.service
[root@bogon ~]# service kubelet restart
Redirecting to /bin/systemctl restart kubelet.service
[root@bogon ~]# service kube-proxy start
Redirecting to /bin/systemctl start kube-proxy.service

查看相关进程
[root@bogon ~]# ps -ef |grep kube
[root@bogon ~]# ps -ef |grep docker
[root@bogon ~]# ps -ef |grep flanneld

至此Minion端配置完成。
在Master端输入kubectl get nodes 验证是否成功?看到STATUS 的状态为Read 即可
[root@bogon ~]# kubectl get nodes

在Master端查看IP地址信息

在Minion端查看IP地址信息

在Master端查看FORWARD参数策略是否为ACEEPT(允许)?
[root@bogon ~]# iptables -t filter -L -n

Ping Minion端IP地址是通的
[root@bogon ~]# ping 172.17.60.1
[root@bogon ~]# ping 172.17.60.0

在Minion 端ping 172.17.34.0 看是否通

至此,Master和Minion端网络已打通。
在Minion端查看FORWARD 规则参数为DROP(丢弃)状态

需要将FORWARD 规则设置为ACCEPT(允许)状态
[root@bogon ~]# iptables -P FORWARD ACCEPT
[root@bogon ~]# iptables -t filter -L -n

K8S集群搭建完成。
创建K8S的web 管理界面
在Minion端导入两个镜像文件:pod-infrastructure、kubernetes-dashboard-amd64
这两个镜像文件直接从网络上下载可能会超时,导致导入失败,所以可以先从本地上传后进行导入。

Docker镜像导入指令如下:
docker load <pod-infrastructure.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure

docker load <kubernetes-dashboard-amd64.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3

然后在Master端,上传两个yaml文件:dashboard-controller.yaml、dashboard-service.yaml

在Master 端创建k8s目录,将dashboard-controller.yaml、dashboard-service.yaml 移动到k8s目录下

然后修改一下dashboard-controller.yaml文件里的api地址
[root@bogon k8s]# vim dashboard-controller.yaml

保存退出
创建dashboard dashborad pods模块
kubectl create -f dashboard-controller.yaml
kubectl create -f dashboard-service.yaml

[root@bogon k8s]# kubectl get pods -n kube-system

看到STATUS状态为Running ,表示web界面配置成功。
通过浏览器访问Master端IP地址的8080端口
http://172.20.26.167:8080

在http://172.20.26.167:8080后面加上ui 即可访问k8s的web界面
http://172.20.26.167:8080/ui

制作centOS7镜像,先上传一个centos7-ansible镜像包,使用Dockerfile 文件制作镜像
vim Dockerfile

mkdir -p /Docker
将Dockerfile 文件移动到/Docker目录下
mv Dockerfile /Docker/
cd /Docker
docker build -t centos7-ssh:v1 .



在k8s管理界面,点击“创建”,新建一个名称为centos7容器,容器镜像:centos7-ssh:v1,显示高级选项,勾选“以特权身份运行”,点击“部署”



Centos7容器创建完成,点击“容器组”里的“centos7-3728401273-pzr09”新建容器名,

也可以点击右上角的“运行命令“按钮,进入命令行界面


也可以通过Minion端通过ssh 连接进入这个容器

创建部署nginx容器



可以对nginx容器进行扩容多个



再增加Node(Minion)节点
yum install kubernetes-node docker flannel* *rhsm* -y

[root@bogon ~]# cd /etc/kubernetes/

编辑
[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true" 在web管理界面中,让勾选“以特权身份运行”生效
KUBE_MASTER="--master=http://172.20.26.167:8080"

[root@bogon kubernetes]# vim kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=172.20.26.210"
KUBELET_API_SERVER="--api-servers=http://172.20.26.167:8080"

[root@bogon /]# vim /etc/sysconfig/flanneld 配置flannel网络
FLANNEL_ETCD_ENDPOINTS="http://172.20.218:2379"

service flanneld start 先启动flanneld服务
flanneld服务无法启动,报错

将Minion端系统重启一下,
再执行service flanneld start 启动flanneld服务
service docker start #再启动docker 服务

启动kubelet、kube-proxy服务
[root@bogon ~]# service kubelet start
Redirecting to /bin/systemctl start kubelet.service
[root@bogon ~]# service kubelet restart
Redirecting to /bin/systemctl restart kubelet.service
[root@bogon ~]# service kube-proxy start
Redirecting to /bin/systemctl start kube-proxy.service

也可以用for I in命令启动服务
for I in kube-proxy kubelet flanneld docker
do
systemctl restart $I
systemctl enable $I
done
service iptables stop;iptables -P FORWARD ACCEPT
查看相关进程
[root@bogon ~]# ps -ef |grep kube
[root@bogon ~]# ps -ef |grep docker
[root@bogon ~]# ps -ef |grep flanneld

至此新增加的Node(Minion)节点配置完成。
在Master端输入kubectl get nodes 验证是否成功?看到STATUS 的状态为Read 即可
[root@bogon ~]# kubectl get nodes

回到k8s 管理界面,查看节点情况,172.20.26.210节点成功增加

创建K8S的web 管理界面
因没有创建本地仓库,所以需要在Minion端再导入pod-infrastructure、kubernetes-dashboard-amd64两个镜像文件。如果已创建好本地仓库,在第一次部署Minion节点时,将pod-infrastructure、kubernetes-dashboard-amd64镜像上传到本地仓库即可。
这两个镜像文件直接从网络上下载可能会超时,导致导入失败,所以可以先从本地上传后进行导入。

Docker镜像导入指令如下:
docker load <pod-infrastructure.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure

docker load <kubernetes-dashboard-amd64.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3

回到k8s管理界面,查看节点数量

新部署tomcat容器,数量为2,将会在两个节点中分别创建1台tomcat容器。


由于是在网上下载tomcat 镜像,需要等待时间较长,最后完成情况如下

在master控制端查看所有云主机的IP 地址
[root@bogon ~]# kubectl get -n default pods -o wide

[root@bogon ~]# kubectl get -n default pods -o wide|awk '{print $1,$6}'|awk -F"-" 'NR>1 {print $1,$NF}'|awk '{print $1,$NF}'

可以通过宿主机重启容器
[root@bogon ~]# docker ps |grep tomcat 查看tomcat容器ID
[root@bogon ~]# docker restart 574bf1497167 重启tomcat容器

重启,数据不会丢失
如果是删除云主机,会自动产生一台云主机,但是数据丢失
创建本地私有仓库
在172.20.26.198上创建本地私有仓库
docker pull docker.io/registry

mkdir -p /data/registry/
docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry

[root@bogon ~]# vim /etc/docker/daemon.json
"insecure-registries":["172.20.26.198:5000"]

[root@bogon ~]# service docker restart
[root@bogon ~]# ps -ef |grep 5000 查看5000端口状态

Docker images 查看一下镜像信息
对centos7-ssh镜像修改tag号
[root@bogon ~]# docker tag 5a97f88791d1 172.20.26.198:5000/centos7-ssh:v1

将修改好tag号的centos7-ssh镜像上传到本地仓库中
docker push 172.20.26.198:5000/centos7-ssh:v1

[root@bogon ~]# docker ps -a 查看docker 容器情况docker.io/registry
[root@bogon ~]# docker start bf5bd542fba4 启动docker.io/registry
[root@bogon ~]# ps -ef |grep 5000 查看5000端口情况
[root@bogon ~]# docker push 172.20.26.198:5000/centos7-ssh:v1 再次上传镜像到本地仓库

上传成功

上传一个nginx镜像到本地仓库
[root@bogon Docker]# vim Dockerfile_nginx 编写安装nginx的Dockerfile文件
[root@bogon Docker]# docker build -t centos7-nginx:v1 - < Dockerfile_nginx

[root@bogon ~]# docker images
[root@bogon ~]# docker tag 0672328a3122 172.20.26.198:5000/centos7-nginx:v1 修改tag号
[root@bogon ~]# docker push 172.20.26.198:5000/centos7-nginx:v1 上传nginx镜像到本地仓库
[root@bogon ~]# docker ps | grep 5000

查看本地私有仓库里的镜像
ls -l /data/registry/docker/registry/v2/repositories/

添加2个nginx“外部”服务的容器,使用本地私有仓库



Failed to pull image "172.20.26.198:5000/nginx:latest": Get https://172.20.26.198:5000/v1/_ping: http: server gave HTTP response to HTTPS client
Error syncing pod, skipping: failed to "StartContainer" for "nginx" with ErrImagePull: "Get https://172.20.26.198:5000/v1/_ping: http: server gave HTTP response to HTTPS client"
以上错误原因是在172.20.26.210节点上daemon.json文件里要指定本地私有仓库的地址,
vim /etc/docker/daemon.json

执行以下命令,重启相关服务
for I in kube-proxy kubelet flanneld docker
do
systemctl restart $I
systemctl enable $I
done
service iptables stop;iptables -P FORWARD ACCEPT
回到k8sweb界面,查看错误状态是否已消失

故障问题:
用Dockerfile 做了个镜像,改了tag号,push 到本地仓库,提示连接被拒绝

解决:
docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
docker ps
docker push 172.20.26.198:5000/centos7-nginx:v2

创建部署外部nginx主机



故障问题:


故障问题

Master、Minion端排查解决:
Master端:
1、ps -ef | grep kube 查看kube-apiserver、kube-controller-manager、kube-scheduler服务
2、 ps -ef |grep flanneld 查看flanneld的状态
3、ifconfig 查看网卡地址情况(是否有flannel0地址)
Minion端:
1、ps -ef |grep kube 查看kubelet、kube-proxy服务
2、ps -ef |grep docker 查看Docker状态
3、 ps -ef |grep flanneld 查看flanneld的状态
4、iptables -t filter -L -n 查看是否是Chain FORWARD (policy ACCEPT)状态,如不是,执行iptables -P FORWARD ACCEPT命令
相关文章:
K8s 安装部署-Master和Minion(Node)
K8s 安装部署-Master和Minion(Node) 操作系统版本:CentOS 7.4 Master :172.20.26.167 Minion-1:172.20.26.198 Minion-2:172.20.26.210(后增加节点) ETCD:172.20.27.218 先安装部署ETCD y…...
从零学习Linux操作系统 第二十部分 mariadb数据库的管理
一、对于数据库的基本介绍 1.什么是数据库 数据库就是个高级的表格软件 2.常见数据库 Mysql Oracle mongodb db2 sqlite sqlserver … 3.Mysql (SUN -----> Oracle) 4.mariadb (Mysql的一种) 数据库中的常用名词 1.字段 :表格中的表头 2.表 &…...
数据脱敏和数据加密有什么区别
数据脱敏:主要是为了兼顾数据安全与数据使用,采用专业的数据脱敏算法。 数据加密:通过对数据进行编码来保护数据,获取实际值的唯一方法是使用解密密钥解码数据。 数据加密是可逆的,数据脱敏是不可逆的。 处理方法不同 保护内容…...
主流排序算法
冒泡排序(Bubble Sort): 基本思想:通过比较相邻元素的大小,不断交换相邻元素的位置,使得较大的元素逐渐“浮”到数组的最后。时间复杂度:O(n^2)。 选择排序(Selection Sort…...
MySql的使用方法
一.什么是MySql MySql是一种数据库管理系统,是用来存储数据的,可以有效的管理数据,数据库的存储介质为硬盘和内存。 和文件相比,它具有以下优点: 文件存储数据是不安全的,且不方便数据的查找和管理…...
C#,数据检索算法之三元搜索(Ternary Search)的源代码
数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文发布 三元搜索(Ternary Search)的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algo…...
windbg:常用指令
windbg 调试 参考文档 1、viewing-and-editing-global-variables-in-windbg WinDBG 常用调试命令 加载符号 .sympath // 查看当前符号查找路径 .sympath c:\symbols // 将符号查找路径设为:c:\symbols .sympath c:\symbols // 将c:\symbols添加…...
23. 集合类
集合 1. 概述2. 分类2.1 单列集合(Collection)2.2 双列集合(Map) 单列集合 Collection、List、Set、ArrayList、LinkedList’、Vector、HashSet、TreeSet、LinkedHashSet双列集合 Map、HashTable、HashMap、TreeMap、Properties、…...
OpenAI平台:引领人工智能的创新与应用
在当今迅速发展的技术世界中,OpenAI已成为人工智能(AI)研究和应用的先驱。作为一个致力于确保人工智能的安全和广泛受益的组织,OpenAI通过其平台提供了一系列强大的工具和API,这些工具和API正在重塑我们与技术的互动方…...
redis原理(五)Lua语言
一、介绍: 1、背景: 在 Redis 的 2.6 以上版本中,除了可以使用命令外,还可以使用 Lua 语言操作 Redis。 Redis 命令的计算能力并不算很强大,而使用 Lua 语言则在很大程度上弥补了 Redis 的这个不足。 2、特点&#…...
SOHO外贸怎么建网站?做海洋建站的步骤?
SOHO外贸如何做跨境独立站?搭建外贸自建站的策略? 一位成功的SOHO外贸从业者不仅需要精湛的贸易技能,还需要一个优质的网站来展示产品、与客户互动,并建立强大的在线品牌形象。海洋建站将探讨在SOHO外贸领域如何建立一个成功的网…...
[论文阅读] |RAG评估_Retrieval-Augmented Generation Benchmark
写在前面 检索增强能够有效缓解大模型存在幻觉和知识时效性不足的问题,RAG通常包括文本切分、向量化入库、检索召回和答案生成等基本步骤。近期组里正在探索如何对RAG完整链路进行评估,辅助阶段性优化工作。上周先对评估综述进行了初步的扫描࿰…...
【Linux】动态库和静态库——动态库和静态库的打包和使用、gcc编译、拷贝到系统默认的路径、建立软连接
文章目录 动态库和静态库1.静态库和动态库的介绍2.静态库的打包和使用2.1生成静态库2.2使用静态库的三种方式2.2.1gcc编译2.2.2拷贝到系统默认的路径2.2.3建立软连接 3.动态库的打包和使用3.1生成动态库3.2使用动态库3.3解决加载不到动态库的方法 动态库和静态库 1.静态库和动…...
【Redis】Redis有哪些适合的场景
🍎个人博客:个人主页 🏆个人专栏:Redis ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 (1)会话缓存(Session Cache) (2)全页缓存(FPC…...
uniapp上传音频文件到服务器
视频教程地址: 【uniapp录音上传组件,将录音上传到django服务器】 https://www.bilibili.com/video/BV1wi4y1p7FL/?share_sourcecopy_web&vd_sourcee66c0e33402a09ca7ae1f0ed3d5ecf7c uniapp 录制音频文件上传到django服务器保存到服务器 …...
C#-正则表达式
1.C#功能点: 验证格式:通过正则表达式,我们可以检查一个字符串是否符合特定的格式要求,例如验证邮箱、电话号码、身份证号码等。 查找和提取:我们可以使用正则表达式来查找字符串中符合特定模式的部分,并将…...
【word】论文、报告:①插入图表题注,交叉引用②快速插入图表目录③删改后一键更新
【word】①插入图表题注,②删改后一键更新 写在最前面插入题注交叉引用修改插入题注的文字格式快速插入图表目录 插入题注后有删改,实现编号一键更新 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你…...
Spring Security 的TokenStore三种实现方式
博主介绍:✌专注于前后端领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有需要可以联系作者我哦&…...
微信小程序 图片自适应高度 宽度 完美适配原生或者uniapp
-- - - - 查了一下百度看到网上图片高度自适应的解决方案 基本是靠JS获取图片的宽度进行按比例计算得出图片高度。 不是很符合我的需求/ 于是我脑瓜子一转 想到一种新的解决方案 不用JS计算也能完美解决。 我写了一个组件,直接导入可以使用。 - - - 1.新…...
Go语言基础之反射
1.变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。值信息:程序运行过程中可动态变化的。 2.反射介绍 反射是指在程序运行期间对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址ÿ…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
