k8s 集群搭建详细教程
参考: Kubernetes 文档 / 入门 / 生产环境 / 使用部署工具安装 Kubernetes / 使用 kubeadm 引导集群 / 安装 kubeadm
B. 准备开始
- 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令
- 每台机器
2 GB或更多的 RAM (如果少于这个数字将会影响你应用的运行内存) 2 CPU 核或更多- 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
- 节点之中
不可以有重复的主机名、MAC 地址或 product_uuid。请参见这里了解更多详细信息。 - 开启机器上的某些端口。请参见这里 了解更多详细信息。
- 禁用交换分区。为了保证 kubelet 正常工作,你 必须
禁用交换分区。
U. 确保每个节点上 MAC 地址和 product_uuid 的唯一性
- 你可以使用命令
ip link或ifconfig -a来获取网络接口的 MAC 地址 - 可以使用
sudo cat /sys/class/dmi/id/product_uuid命令对 product_uuid 校验
一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 Kubernetes 使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装 失败。
V.
虚拟机
新建… / 创建自定虚拟机 /
Linux /Ubuntu 64位
- 设置过程
| ID | 『虚拟机』设置 | 建议配置 | 默认值 | 说明 |
|---|---|---|---|---|
| 1 | 处理器 | - | 2 | 最低要求 |
| 2 | 内存 | - | 4096 MB | 节约内存 |
| 3 | 显示器 | 取消复选加速 3D 图形 | 复选 | 节约内存 |
| 4 | 网络适配器 | - | nat | 需上网 |
| 5 | 硬盘 | 40GB | 20 GB | 保证练习容量 |
| 6 | 选择固件类型 | UEFI | 传统 BIOS | VMware Fusion 支持嵌套虚拟化 |
- 设置结果
| ID | Your computer’s name | CPU 核 | RAM | DISK | NIC |
|---|---|---|---|---|---|
| 1 | k8s-master | 4 或更多 | 8 GB或更多 | 40 GB | nat |
| 2 | k8s-worker1 | 同上 | 2 GB或更多 | 同上 | 同上 |
| 3 | k8s-worker2 | 同上 | 同上 | 同上 | 同上 |
I. 安装 Ubuntu 22.04 LTS
- Willkommen! Bienvenue! Welcome! Welkom!
[
English]

- Installer update available
[
Continue without updating]

- Keyboard configuration
[
Done]

- Choose type of install
(
X) Ubuntu Server (minimized)
/ [Done]

- Network connections
[
Done]

- Configure proxy
[
Done]

- Configure Ubuntu archive mirror
Mirror address: http://mirror.nju.edu.cn/ubuntu
/ [Done]

- Guided storage configuration
[
Done]
- Storage configuration
[
Done]


- Profile setup
Your name:
kiosk
Your server 's name:k8s-master
Pick a username:kiosk
Choose a password:ubuntu
Confirm your password:ubuntu
/ [Done]
- SSH Setup
[
X] Install OpenSSH server
/ [Done]

- Featured Server Snaps
[
Done]

- Install complete!
🅰️ [
Cancel update and reboot]
🅱️ [
Reboot Now]
-
建议(可选)
关机后,做个快照
P. 准备工作
[kiosk@k8s-master|k8s-worker1|k8s-worker2]$
-
设置当前用户sudo免密
sudo tee /etc/sudoers.d/$USER >/dev/null <<EOF $USER ALL=(ALL) NOPASSWD:ALL EOF -
使用国内镜像仓库
# 国内镜像仓库 MIRROR_URL=http://mirror.nju.edu.cn/ubuntu# 生成软件仓库源 sudo tee /etc/apt/sources.list >/dev/null <<EOF deb $MIRROR_URL jammy main restricted universe multiverse deb $MIRROR_URL jammy-updates main restricted universe multiverse deb $MIRROR_URL jammy-backports main restricted universe multiverse deb $MIRROR_URL jammy-security main restricted universe multiverse EOF -
安装相关软件
# 更新 sudo apt -y update# 安装 sudo apt install -y openssh-server \vim sshpass nfs-common \bash-completion netcat-openbsd \open-vm-tools
[kiosk@k8s-master]$
-
设置静态IP
# 配置IP sudo tee /etc/netplan/00-installer-config.yaml >/dev/null <<EOF network:ethernets:ens33:dhcp4: falseaddresses: [192.168.147.128/24]gateway4: 192.168.147.2nameservers:addresses: [8.8.8.8]version: 2 EOF# dns sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf# active sudo netplan apply
[kiosk@k8s-worker1]$
-
设置静态IP
# 配置IP sudo tee /etc/netplan/00-installer-config.yaml >/dev/null <<EOF network:ethernets:ens33:dhcp4: falseaddresses: [192.168.147.129/24]gateway4: 192.168.147.2nameservers:addresses: [8.8.8.8]version: 2 EOF# dns sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf# active sudo netplan apply
[kiosk@k8s-worker2]$
-
设置静态IP
# 配置IP sudo tee /etc/netplan/00-installer-config.yaml >/dev/null <<EOF network:ethernets:ens33:dhcp4: falseaddresses: [192.168.147.130/24]gateway4: 192.168.147.2nameservers:addresses: [8.8.8.8]version: 2 EOF# dns sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf# active sudo netplan apply
[kiosk@k8s-master|k8s-worker1|k8s-worker2]$
-
编辑 hosts
sudo tee -a /etc/hosts >/dev/null <<EOF 192.168.147.128 k8s-master 192.168.147.129 k8s-worker1 192.168.147.130 k8s-worker2 EOF# 设置 root 密码 (echo ubuntu; echo ubuntu) | sudo passwd root echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config sudo systemctl restart sshd
[kiosk@k8s-master]$
-
ssh免密
# 生成 keypair ssh-keygen -f ~/.ssh/id_rsa -N ''# 拷贝公钥 for i in k8s-master k8s-worker1 k8s-worker2; dosshpass -pubuntu ssh-copy-id -o StrictHostKeyChecking=no kiosk@$isshpass -pubuntu ssh-copy-id -o StrictHostKeyChecking=no root@$i done
[kiosk@k8s-master|k8s-worker1|k8s-worker2]$
-
禁用swap
# 交换文件 SWAPF=$(awk '/swap/ {print $1}' /etc/fstab)# 立即禁用 sudo swapoff $SWAPF# 永久禁用 sudo sed -i '/swap/d' /etc/fstab# 删除交换文件 sudo rm $SWAPF -
扩容
# 逻辑卷名 export LVN=$(sudo lvdisplay | awk '/Path/ {print $3}')# 扩容 sudo lvextend -l 100%PVS $LVN# 立即生效 sudo resize2fs $LVN# 验证 df -h / -
模块支持
# 安装 sudo apt -y install bridge-utils# 立即生效 sudo modprobe br_netfilter# 内核支持 sudo tee /etc/sysctl.d/k8s.conf >/dev/null <<EOF net.ipv4.ip_forward=1 vm.swappiness=0 vm.overcommit_memory=1 vm.panic_on_oom=0 EOF# 立即生效 sudo sysctl -p /etc/sysctl.d/k8s.conf
- docker: k8s-master, k8s-worker1
- containerd: k8s-worker2
[kiosk@k8s-master|k8s-worker1]$
-
安装运行时
# 创建文件夹 sudo mkdir -p /etc/docker# 生成配置文件 sudo tee /etc/docker/daemon.json >/dev/null <<EOF {"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m","max-file": "10"},"registry-mirrors": ["https://docker.nju.edu.cn/"] } EOF# 安装 runtime sudo apt -y install docker.io# 开机自启 sudo systemctl enable docker# 立即重启 sudo systemctl restart docker# 安装命令 cri-dockerd curl -# https://vmcc.xyz:8443/k8s/cri-docker/cri-dockerd-0.2.5.amd64.tgz \-o cri-dockerd-0.2.5.amd64.tgz tar -xf cri-dockerd-0.2.5.amd64.tgz sudo cp cri-dockerd/cri-dockerd /usr/bin/# 安装服务 cri-docker.service sudo curl -s https://vmcc.xyz:8443/k8s/cri-docker/cri-docker.service \-o /usr/lib/systemd/system/cri-docker.service sudo sed -i '/ExecStart/s+$+ --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8+' /usr/lib/systemd/system/cri-docker.service# 安装 cri-docker.socket sudo curl -s https://vmcc.xyz:8443/k8s/cri-docker/cri-docker.socket \-o /usr/lib/systemd/system/cri-docker.socket# 启动服务 cri-dockerd sudo systemctl daemon-reload sudo systemctl enable cri-docker sudo systemctl restart cri-docker# 安装 crictl 命令 curl -# https://vmcc.xyz:8443/k8s/crictl-v1.24.2-linux-amd64.tar.gz \-o crictl-v1.24.2-linux-amd64.tar.gz tar -xf crictl-v1.24.2-linux-amd64.tar.gz sudo cp crictl /usr/bin/ # crictl 配置文件 sudo tee /etc/crictl.yaml >/dev/null <<EOF runtime-endpoint: unix:///var/run/cri-dockerd.sock image-endpoint: unix:///var/run/cri-dockerd.sock timeout: 10 debug: false pull-image-on-create: true EOF
[kiosk@k8s-worker2]$
-
安装运行时
# 安装 containerd sudo apt install -y containerd# 创建目录 sudo mkdir /etc/containerd# 生成默认配置文件 containerd config default | \ sudo tee /etc/containerd/config.toml >/dev/null# 修改配置文件 sudo sed -i \ -e '/sandbox_image/s?k8s.gcr.io?registry.aliyuncs.com/google_containers?' \ -e '/SystemdCgroup/s?false?true?' \ -e '/registry.mirrors/a\ [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]' \ -e '/registry.mirrors/a\ endpoint = ["https://docker.nju.edu.cn/"]' /etc/containerd/config.toml# 服务重启 sudo systemctl restart containerd# 安装 crictl 命令 curl -# https://vmcc.xyz:8443/k8s/crictl-v1.24.2-linux-amd64.tar.gz \-o crictl-v1.24.2-linux-amd64.tar.gz tar -xf crictl-v1.24.2-linux-amd64.tar.gz sudo cp crictl /usr/bin/ # crictl 配置文件 sudo tee /etc/crictl.yaml >/dev/null <<EOF runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false pull-image-on-create: true EOF
K. 安装 k8s
[kiosk@k8s-master|k8s-worker1|k8s-worker2]$
-
安装 kubeadm、kubelet 和 kubectl
# 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包 sudo apt -y install apt-transport-https ca-certificates curl# 下载 Google Cloud 公开签名秘钥 curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -# 添加 Kubernetes apt 仓库 MIRROR_URL=https://mirror.nju.edu.cn/kubernetes/apt/ sudo tee /etc/apt/sources.list.d/kubernetes.list >/dev/null <<EOF deb $MIRROR_URL kubernetes-xenial main EOF# 更新 apt 包索引 sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d sudo apt update -y sudo apt-cache madison kubelet | grep 1.24# 安装 kubelet、kubeadm 和 kubectl 考试版本 sudo apt install -y kubelet=1.24.1-00 kubeadm=1.24.1-00 kubectl=1.24.1-00# 锁定版本 sudo apt-mark hold kubelet kubeadm kubectl
[kiosk@k8s-worker2]$
# 增加 k8s 支持sudo sed -i '/ExecStart=\//s|$| --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd|' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# 重启 kubelet 服务
sudo systemctl daemon-reload
sudo systemctl restart kubelet
[kiosk@k8s-master]$
-
初始化
# 生成初始文件 sudo kubeadm config print init-defaults > kubeadm-config.yaml# 修改文件 sudo sed -i \-e "/advertiseAddress/s?:.*?: 192.168.147.128?" \-e "/name/s?:.*?: k8s-master?" \-e "/clusterName/s?:.*?: ck8s?" \-e "/imageRepository/s?:.*?: registry.aliyuncs.com/google_containers?" \-e "/criSocket/s+containerd/containerd+cri-dockerd+" kubeadm-config.yaml# 使用初始文件,初始化集群 sudo kubeadm init --config kubeadm-config.yaml…输出省略…
Your Kubernetes control-plane has initializedsuccessfully!To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run “kubectl apply -f [podnetwork].yaml” with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.147.128:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:c4781194de65ebb47984fc5e7e64d4897875410825ce4d18df81da1a298afa1f -
配置文件
# 创建目录 mkdir -p $HOME/.kube# user 复制配置文件 sudo \cp /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config# root 变量 sudo tee -a ~root/.bashrc >/dev/null <<EOF export KUBECONFIG=/etc/kubernetes/admin.conf EOF -
创建网络
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml -
命令补全
# 立即生效 source <(kubectl completion bash)# 永久生效 mkdir ~/.kube kubectl completion bash > ~/.kube/completion.bash.inc printf " # Kubectl shell completion source '$HOME/.kube/completion.bash.inc' " >> $HOME/.bash_profile source $HOME/.bash_profile -
命令别名
# 永久生效 tee -a $HOME/.bashrc >/dev/null <<EOF alias k='kubectl' complete -F __start_kubectl k EOF# 立即生效 source $HOME/.bashrc
[kiosk@k8s-worker1]$
-
加入集群
sudo kubeadm join 192.168.147.128:6443 \--token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:c4781194de65ebb47984fc5e7e64d4897875410825ce4d18df81da1a298afa1f \--cri-socket unix://var/run/cri-dockerd.sock
[kiosk@k8s-worker2]$
-
加入集群
sudo kubeadm join 192.168.147.128:6443 \--token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:c4781194de65ebb47984fc5e7e64d4897875410825ce4d18df81da1a298afa1f
C. 确认环境正常
[kiosk@k8s-master]
$ kubectl get componentstatuses
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler `Healthy` ok
controller-manager `Healthy` ok
etcd-0 `Healthy` {"health":"true","reason":""}$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-worker1 `Ready` <none> 4m4s `v1.24.1`
k8s-worker2 `Ready` <none> 4m44s `v1.24.1`
k8s-master `Ready` control-plane,master 13m `v1.24.1`$ kubectl -n kube-system get pod -w
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-555bc4b957-8ccgh 1/1 Running 0 27m
calico-node-5qqcq 1/1 Running 0 9m29s
calico-node-7qclz 1/1 Running 0 27m
calico-node-kcvt5 1/1 Running 0 9m29s
coredns-74586cf9b6-69fn7 1/1 Running 0 156m
coredns-74586cf9b6-8mgl9 1/1 Running 0 156m
etcd-k8s-master 1/1 Running 0 156m
kube-apiserver-k8s-master 1/1 Running 0 156m
kube-controller-manager-k8s-master 1/1 Running 0 156m
kube-proxy-8j248 1/1 Running 0 9m29s
kube-proxy-g7r55 1/1 Running 0 9m29s
kube-proxy-rbdcp 1/1 Running 0 156m
kube-scheduler-k8s-master 1/1 Running 0 156m
<Ctrl-C>
相关文章:
k8s 集群搭建详细教程
参考: Kubernetes 文档 / 入门 / 生产环境 / 使用部署工具安装 Kubernetes / 使用 kubeadm 引导集群 / 安装 kubeadm B. 准备开始 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令每…...
国有行面试:掌握这11个测评要素
银行笔试期一结束,面试也接连不断。大家做好拿下offer的准备了吗?回顾过往银行面试,半结构化和无领导题型备受考官喜爱,“有备无患,方能走向远方”,银行面试备考,了解掌握面试本质测评要素&…...
云视如何实现流量转化
云视如何实现流量转化 大家好我是小鱼 小伙伴很好奇 云视除了直播带货 打赏,广告 还有哪些方式 可以实现流量转化 今天我和大家分享一下这个话题 接下来我们要讲讲 我们要用的工具 优惠券 适用于刺激消费回流,构建闭环消费圈。 课程赠送 趣味推广营销&am…...
Metersphere+jar+beanshell+连接linux
Meterspherejarbeanshell连接linux java编写连接linux代码 使用jsch连接linux,下载jsch包或者使用maven <dependencies><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55<…...
前端开发工程师如何提升个人审美
✨求关注~ 😀博客:www.protaos.com 作为前端开发工程师,提升个人审美能力对于设计和开发出高质量的用户界面至关重要。个人审美是指对于颜色、布局、字体、图形等视觉元素的理解和判断能力。通过提升个人审美,前端开发工程师能够设…...
【软件测试】Python自动化软件测试算是程序员吗?
今天早上一觉醒来,突然萌生一个念头,【软件测试】软件测试算是程序员吗?左思右想,总感觉哪里不对。做了这么久的软件测试,还真没深究过这个问题。 基于,内事问百度的准则: 结果…… 我刚发出软…...
react函数组件常用的几个钩子函数
react框架 react框架包括包括两大类:类组件函数组件。 类组件构成:constructor自定义方法。调用方法通过this.方法名()。constructor(superstate)构造器里面必有super字段。render()方法里面写页面布局。 函数组件构成:各种钩子函数return()方…...
如何进行大数据测试
大数据解决方案 大数据解决方案包括一系列工具和技术,用于收集、存储、处理和分析大量的数据。以下是一些常用的大数据解决方案: Apache Hadoop:Hadoop是一个开源的大数据处理框架,可以在商用硬件上处理大规模数据集。它包括HDFS…...
java版本企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发
一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…...
Redis哨兵集群搭建及其原理
Redis哨兵集群搭建及其原理 1.Redis哨兵1.1.哨兵原理1.1.1.集群结构和作用1.1.2.集群监控原理1.1.3.集群故障恢复原理1.1.4.小结 2.搭建哨兵集群2.1.集群结构2.2.准备实例和配置2.3.启动2.4.测试 3.RedisTemplate3.1.引入依赖3.2.配置Redis地址3.3.配置读写分离 1.Redis哨兵 R…...
读书笔记--读数学之美有感
大概是在10年前,无意间读到吴军老师撰写得数学之美,感觉吴老师对数学与信息论的结合讲述的太好了,吴老师结合自身的多年工作经历将信息技术中用到的数学,特别是数学里面的很多概率论、线性代数、模型算法、编解码规则等࿰…...
[PyTorch][chapter 33][卷积神经网络]
前言 参考: 《数字图像处理与机器视觉》 第五章 空间域图像增强, 图像卷积: 空间域图像增强 图像增强是根据特定需要突出一副图像中的某些信息,同时削弱或去除 某些不需要信息的处理方法,其主要目的是是的处理后的图像对某种特定的…...
Lift, Splat, Shoot 论文学习
1. 解决了什么问题? LSS 在工业界具有非常重要的地位。自从 Tesla AI Day 上提出了 BEV 感知后,不少公司都进行了 BEV 工程化的探索。当前 BEV 下的感知方法大致分为两类: 自下而上:利用 transformer 的 query 机制,…...
【密码产品篇】动态口令系统密钥体系结构(SM3、SM4)
【密码产品篇】动态口令系统密钥体系结构(SM3、SM4) 动态口令是一种一次性口令机制,用户无须记忆口令,也无须手工更改口令。口令通过用户持有的客户端器件生成,并基于一定的算法与服务端形成同步,从而作为…...
PDF工具Adobe Arcrobat Pro DC下载安装教程
wx供重浩:创享日记 对话框发送:adobe 免费获取Adobe Arcrobat Pro DC安装包 Acrobat是一款PDF(Portable Document Format,便携式文档格式)编辑软件。借助它,您可以以PDF格式制作和保存你的文档 ,…...
大量从IT培训班出来的程序员们最后都怎样了?
在当今信息时代,IT行业越来越受到人们的关注。越来越多的年轻人选择进入IT行业学习编程技术,而IT培训班也因此应运而生。据统计,在中国,每年约有100万人通过各种途径进入IT行业。其中,通过IT培训班获得技能认证的人数也…...
【论文阅读笔记】Federated Unlearning with Knowledge Distillation
个人阅读笔记,如有错误欢迎指出 Arxiv 2022 [2201.09441] Federated Unlearning with Knowledge Distillation (arxiv.org) 问题: 法律要求客户端有随时要求将其贡献从训练中消除的权利 让全局模型忘记特定客户的贡献的一种简单方法是从头开始对模型进…...
常用MQ介绍与区别
RabbitMQ RabbitMQ是实现AMQP协议(0.9.1) 的消息中间件的一种,由RabbitMQ Technologies Ltd开发并且提供商业支持的,最初起源于金融系统,服务器端用Erlang语言编写,用于在分布式系统中存储转发消息,在易用性、扩展性、…...
今天面试招了个20K的人,从腾讯出来的果然都有两把刷子···
现在找个会自动化测试的人真是难呀,10个里面有8个写了会自动化,但一问就是三不知 公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-20k,面试的…...
加速度传感器的量程估算
下面推导过程中包含一个重要的错误:sinx/x1没有错,但是这里的x是 t,当x t时,位移并非sin(t),而是n*sin(t),我稍後修訂。 在测震动和噪声的场合,现有的加速度传感器,需要客户提供加…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...
【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
基于Python的气象数据分析及可视化研究
目录 一.🦁前言二.🦁开源代码与组件使用情况说明三.🦁核心功能1. ✅算法设计2. ✅PyEcharts库3. ✅Flask框架4. ✅爬虫5. ✅部署项目 四.🦁演示效果1. 管理员模块1.1 用户管理 2. 用户模块2.1 登录系统2.2 查看实时数据2.3 查看天…...
DriveGPT4: Interpretable End-to-end Autonomous Driving via Large Language Model
一、研究背景与创新点 (一)现有方法的局限性 当前智驾系统面临两大核心挑战:一是长尾问题,即系统在遇到新场景时可能失效,例如突发交通状况或非常规道路环境;二是可解释性问题,传统方法无法解释智驾系统的决策过程,用户难以理解车辆行为的依据。传统语言模型(如 BERT…...
