当前位置: 首页 > news >正文

《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.12单master集群》

一、架构图

如下图所示:
在这里插入图片描述


二、环境信息

主机名K8S版本系统版本内核版本IP地址备注
k8s-master-621.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.62master节点
k8s-worker-631.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63worker节点
k8s-worker-641.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.64worker节点

三、安装和配置先决条件

3.1、主机名设置

说明:分别在对应的节点IP上设置主机名。

root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-master-62
root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-worker-63
root@lolaage-virtual-machine:~#  hostnamectl set-hostname k8s-worker-64

3.2、配置主机hosts

说明:以下操作无论是master节点和worker节点均需要执行。

root@k8s-master-62:~# vim /etc/hosts
192.168.1.62 k8s-master-62
192.168.1.63 k8s-worker-63
192.168.1.64 k8s-worker-64

3.3、关闭防火墙

说明:以下操作无论是master节点和worker节点均需要执行。

root@k8s-master-62:~# ufw status
root@k8s-master-62:~# ufw disable

3.4、关闭selinux

说明:以下操作无论是master节点和worker节点均需要执行。

root@k8s-master-62:~# apt install selinux-utils
root@k8s-master-62:~# apt install policycoreutils
root@k8s-master-62:~# sed -i 's#SELINUX=permissive#SELINUX=disabled#g' /etc/selinux/config
root@k8s-master-62:~# sestatus -v

说明:如果selinux默认关闭则无需修改。


3.5、关闭swap分区

说明:以下操作无论是master节点和worker节点均需要执行。

root@k8s-master-62:~# swapoff -a
root@k8s-master-62:~# sed -i 's/^\/swapfile\(.*\)$/#\/swapfile \1/g' /etc/fstab

3.6、时间时区同步

说明:以下操作无论是master节点和worker节点均需要执行。

1、设置时区为Asia/Shanghai,如果已经是则请忽略

root@k8s-master-62:~# timedatectlLocal time: 五 2023-03-31 14:11:36 CSTUniversal time: 五 2023-03-31 06:11:36 UTCRTC time: 五 2023-03-31 06:11:36    Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes                       NTP service: active                    RTC in local TZ: no  

2、使用chrony同步时间

root@k8s-master-62:~# apt install chrony -y
root@k8s-master-62:~# vim /etc/chrony/chrony.conf
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
#pool ntp.ubuntu.com        iburst maxsources 4
#pool 0.ubuntu.pool.ntp.org iburst maxsources 1
#pool 1.ubuntu.pool.ntp.org iburst maxsources 1
#pool 2.ubuntu.pool.ntp.org iburst maxsources 2root@k8s-master-62:~# systemctl enable chronyd.service
root@k8s-master-62:~# systemctl restart chronyd.service
root@k8s-master-62:~# systemctl status chronyd.service

阿里云NTP服务器地址列表,状态检测如下所示:
在这里插入图片描述

然后就是chrony客户端上的一些常用命令:

#查看可用的时间同步源
chronyc sources -v#查看时间同步源的状态
chronyc sourcestats -v#对客户端系统时间进行强制同步
chronyc -a makestep

3.7、修改内核参数

说明:以下操作无论是master节点和worker节点均需要执行。

说明:有一些ipv4的流量不能走iptables链,因为linux内核的一个过滤器,每个流量都会经过他,然后再匹配是否可进入当前应用进程去处理,所以会导致流量丢失。配置k8s.conf文件,如下所示:

root@k8s-master-62:~# cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFroot@k8s-master-62:~# modprobe overlay
root@k8s-master-62:~# modprobe br_netfilter# 设置所需的sysctl参数,参数在重新启动后保持不变
root@k8s-master-62:~# cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF# 应用sysctl参数而不重新启动
root@k8s-master-62:~# sysctl --system

3.8、启用IPVS模式

说明:以下操作无论是master节点和worker节点均需要执行。

说明:ube-proxy开启ipvs的前提需要加载以下的内核模块

ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4

注意:如果出现modprobe: FATAL: Module nf_conntrack_ipv4 not found in directory /lib/modules/5.15.0-69-generic错误,这是因为使用了高内核,当前内核版本为5.15.0-69-generic,在高版本内核已经把nf_conntrack_ipv4替换为nf_conntrack了。

# 1、安装ipvs
root@k8s-master-62:~#  apt -y install ipvsadm ipset sysstat conntrack# 2、加载内核模块脚本
root@k8s-master-62:~# cat > /etc/profile.d/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
chmod 755 /etc/profile.d/ipvs.modules#3、执行加载模块脚本
bash /etc/profile.d/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

四、安装containerd

说明:以下操作无论是master节点和worker节点均需要执行。

kubernetes 1.24.x以后版本默认CRI为containerd,cri称之为容器运行时插件。

方式一、二进制安装

方式二、apt工具安装

1、安装软件包

root@k8s-master-62:~# apt install containerd -y

2、生成默认配置文件

root@k8s-master-62:~# mkdir -p /etc/containerd&& containerd config default > /etc/containerd/config.toml

3、配置systemd cgroup驱动

root@k8s-master-62:~# sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml

4、重载沙箱(pause)镜像

root@k8s-master-62:~# sed -i 's#sandbox_image = "registry.k8s.io/pause:3.6"#sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.7"#g' /etc/containerd/config.toml

5、重启containerd服务并设置开机自启

root@k8s-master-62:~# systemctl restart containerd && systemctl enable containerd

说明:由于网络问题,无法下载国外的K8S镜像,所以这里使用阿里云的镜像仓库地址registry.cn-hangzhou.aliyuncs.com/google_containers代替。如果你有阿里云的账号,可以对 containerd配置镜像加速地址来实现快速下载镜像。


五、安装kubelet、kubeadm和kubectl

说明:以下操作无论是master节点和worker节点均需要执行。

1、安装使用Kubernetes apt仓库所需要的包

root@k8s-master-62:~# apt-get install -y apt-transport-https ca-certificates curl

2、编辑镜像源文件,加入阿里云k8s镜像源配置

root@k8s-master-62:~# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

3、编辑镜像源文件,加入阿里云k8s镜像源配置

root@k8s-master-62:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add

4、更新源

root@k8s-master-62:~# apt-get update

5、安装指定版本kubeadm、kubelet、kubectl

root@k8s-master-62:~# apt-get install -y kubelet=1.24.12-00 kubeadm=1.24.12-00 kubectl=1.24.12-00

六、k8s镜像下载

说明:以下操作无论是master节点和worker节点均需要执行。

1、查看需要下载的镜像

registry.k8s.io/kube-apiserver:v1.24.12
registry.k8s.io/kube-controller-manager:v1.24.12
registry.k8s.io/kube-scheduler:v1.24.12
registry.k8s.io/kube-proxy:v1.24.12
registry.k8s.io/pause:3.7
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.8.6

2、下载相关镜像

#!/bin/bash
k8s_version=v1.24.12
pause_version=3.7
etcd_version=3.5.6-0
coredns_version=v1.8.6
registry_address=registry.cn-hangzhou.aliyuncs.com/google_containers
ctr image pull --all-platforms ${registry_address}/kube-apiserver:${k8s_version}
ctr image pull --all-platforms ${registry_address}/kube-controller-manager:${k8s_version}
ctr image pull --all-platforms ${registry_address}/kube-scheduler:${k8s_version}
ctr image pull --all-platforms ${registry_address}/kube-proxy:${k8s_version}
ctr image pull --all-platforms ${registry_address}/pause:${pause_version}
ctr image pull --all-platforms ${registry_address}/etcd:${etcd_version}
ctr image pull --all-platforms ${registry_address}/coredns:${coredns_version}

3、将镜像并打包成tar.gz格式

#!/bin/bash
k8s_version=v1.24.12
pause_version=3.7
etcd_version=3.5.6-0
coredns_version=v1.8.6
registry_address=registry.cn-hangzhou.aliyuncs.com/google_containers
ctr image export --all-platforms kube-apiserver-${k8s_version}.tar.gz ${registry_address}/kube-apiserver:${k8s_version}
ctr image export --all-platforms kube-controller-manager-${k8s_version}.tar.gz ${registry_address}/kube-controller-manager:${k8s_version}
ctr image export --all-platforms kube-scheduler-${k8s_version}.tar.gz \${registry_address}/kube-scheduler:${k8s_version}
ctr image export --all-platforms kube-proxy-${k8s_version}.tar.gz ${registry_address}/kube-proxy:${k8s_version}
ctr image export --all-platforms pause-${pause_version}.tar.gz ${registry_address}/pause:${pause_version}
ctr image export --all-platforms etcd-${etcd_version}.tar.gz ${registry_address}/etcd:${etcd_version}
ctr image export --all-platforms coredns-${coredns_version}.tar.gz ${registry_address}/coredns:${coredns_version}

说明:由于网络问题,无法访问registry.k8s.io镜像仓库地址,这里使用国内阿里云的镜像仓库来下载k8s镜像。如果你的是专网环境,请找一台能访问阿里云镜像仓库的服务器下载然后打包成tar.gz格式,上传到要部署的专网服务器,通过ctr image import命令导入镜像即可。


七、calico镜像及yml文件下载

calico 3.25版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 82、支持k8s版本
v1.23
v1.24
v1.25
v1.26

1、calico.yml文件下载
说明:以下操作只需要在master节点执行。

root@k8s-master-62:~# wget https://docs.tigera.io/archive/v3.25/manifests/calico.yaml
root@k8s-master-62:~# grep "image:" calico.yaml image: docker.io/calico/cni:v3.25.0image: docker.io/calico/cni:v3.25.0image: docker.io/calico/node:v3.25.0image: docker.io/calico/node:v3.25.0image: docker.io/calico/kube-controllers:v3.25.0

2、calico相关镜像下载
说明:以下操作无论是master节点和worker节点均需要执行。

#!/bin/bash
calico_version=v3.25.0
ctr image pull --all-platforms docker.io/calico/cni:${calico_version}
ctr image pull --all-platforms docker.io/calico/node:${calico_version}
ctr image pull --all-platforms docker.io/calico/kube-controllers:${calico_version}
ctr image export --all-platforms cni-${calico_version}.tar.gz \docker.io/calico/cni:${calico_version} 
ctr image export --all-platforms node-${calico_version}.tar.gz \docker.io/calico/node:${calico_version}
ctr image export --all-platforms kube-controllers-${calico_version}.tar.gz \docker.io/calico/kube-controllers:${calico_version}

七、使用kubeadm init初始化集群

说明:以下操作仅在master节点执行。

1、生成默认kubeadm初始化config文件

root@k8s-master-62:~# kubeadm config print init-defaults > kubeadm.yaml

2、修改kubeadm默认config文件

root@k8s-master-92:~# vim kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controlPlaneEndpoint: "192.168.1.92:6443"
apiServer:extraArgs:service-node-port-range: 30000-36000
imageRepository: "registry.cn-hangzhou.aliyuncs.com/google_containers"
kubernetesVersion: 1.24.12
networking:dnsDomain: cluster.localpodSubnet: 10.48.0.0/16serviceSubnet: 10.96.0.0/16
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs

3、使用kubeadm init初始化集群

root@k8s-master-62:~# kubeadm init --config=kubeadm.yaml

如下图所示:
在这里插入图片描述

4、对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s集群进行管理

root@k8s-master-62:~# mkdir -p $HOME/.kube
root@k8s-master-62:~# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
root@k8s-master-62:~# chown $(id -u):$(id -g) $HOME/.kube/config
root@k8s-master-62:~# export KUBECONFIG=/etc/kubernetes/admin.conf
root@k8s-master-62:~# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
root@k8s-master-62:~# source /etc/profile

5、安装网络插件Calico

root@k8s-master-62:~# kubectl apply -f calico.yam

如下图所示:
在这里插入图片描述

6、设置kubelet开机自启

root@k8s-master-62:~# systemctl enable kubelet

八、将worker节点加入k8s集群

说明:以下操作仅在worker节点执行。

1、将worker节点加入k8s集群

#注意:kubeamd join命令的token只有24h,24h就过期,需要执行kubeadm token create --print-join-command重新生成。
root@k8s-worker-63:~# kubeadm join 192.168.1.62:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:4dc96a7ecd538256dd5116b8c0f7a1155e52874532a1e10f3c7d02a15922d0a9

如下图所示:
在这里插入图片描述
2、设置kubelet开机自启

root@k8s-master-62:~# systemctl enable kubelet

九、k8s集群测试

1、查看集群节点状态

root@k8s-master-62:~# kubectl get nodes
root@k8s-master-62:~# kubectl get cs
root@k8s-master-62:~# kubectl get pods -A
root@k8s-master-62:~# kubectl get svc -A

如下图所示:
在这里插入图片描述

2、验证k8s DNS是否可用和是否可以正常访问网络

root@k8s-master-62:~# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
If you don't see a command prompt, try pressing enter.
/ # nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.localName:      kubernetes.default
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
/ # ping www.baidu.com
PING www.baidu.com (14.119.104.254): 56 data bytes
64 bytes from 14.119.104.254: seq=0 ttl=53 time=7.779 ms
64 bytes from 14.119.104.254: seq=1 ttl=53 time=8.404 ms

如下图所示:
在这里插入图片描述


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:企业级K8s集群运维实战

相关文章:

《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.12单master集群》

一、架构图 如下图所示&#xff1a; 二、环境信息 主机名K8S版本系统版本内核版本IP地址备注k8s-master-621.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.62master节点k8s-worker-631.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63worker节点k8s-worker-641…...

MAZDA CX-50没现车怎么办?赶紧去VR看车啊!

爱车一族往往都有过这样的经历&#xff1a;听说某家品牌出了一款心仪的新车&#xff0c;于是一直心心念念想要先睹为快。然而这时候问题就来了&#xff1a;新车从发布到量产上市往往要经历一段过程。没有现车的日子里&#xff0c;就算每天去4S店蹲守也看不到新车。那种心里痒痒…...

结构体全解,适合初学者的一条龙深度讲解(附手绘图详解)

我们知道&#xff0c;C语言是允许我们自己来创造类型的&#xff0c;这些类型就叫做——自定义类型。 自定义类型又包括结构体类型&#xff0c;联合体类型还有枚举类型。 今天的文章&#xff0c;我们就着重讲解这其中的结构体类型。 目录 结构体的声明 1.1结构的基础知识 …...

什么是SD-WAN技术?企业网络优化的利器!

现今&#xff0c;企业网络架构已成为其发展不可或缺的组成部分。针对网络性能优化方面&#xff0c;SD-WAN是一种值得深思熟虑的选择&#xff0c;在企业网络中应用SD-WAN技术能够带来多重好处。 什么是SD-WAN技术以及它是如何工作的&#xff1f; SD-WAN是软件定义的广域网&…...

JAVA练习106- 生命游戏

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、题目-生命游戏 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 4 月12日练习…...

【案例教程】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术

【原文链接】: 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247537049&idx3&sn31ef342c4808aed6fee6ac108b899a33&chksmfe6897f3c91f1ee5c4fa8e4eeea34…...

php7类型约束,严格模式

在PHP7之前&#xff0c;函数和类方法不需要声明变量类型 &#xff0c;任何数据都可以被传递和返回&#xff0c;导致几乎大部分的调用操作都要判断返回的数据类型是否合格。 为了解决这个问题&#xff0c;PHP7引入了类型声明。 目前有两类变量可以声明类型&#xff1a; 形参&a…...

2023-04-11 无向图的匹配问题

无向图的匹配问题 之所以把无向图的这个匹配问题放到最后讲是因为匹配问题借鉴了有向图中一些算法的思想 1 最大匹配和完美匹配 二分图回顾 二分图&#xff1a;把一个图中的所有顶点分成两部分&#xff0c;如果每条边的两端分别属于不同部分&#xff0c;则这个图是二分图。更多…...

国家出手管人工智能AI了

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 全球都在封杀AI&#xff0c;国家也出手了&#xff0c;人工智能AI的强监管来了!这次反应速度算是很快了。国家出手&#xff0c;AI必须管。 国家网信办拟针对生成式人工智能服务出台管理办法&#…...

day24—选择题

文章目录1.将N条长度均为M的有序链表进行合并&#xff0c;合并以后的链表也保持有序&#xff0c;时间复杂度为&#xff08;A&#xff09;2.已知某个哈希表的n个关键字具有相同的哈希值&#xff0c;如果使用二次探测再散列法将这n个关键字存入哈希表&#xff0c;至少要进行&…...

自投递简历以来的第一次面试

投完简历之后HR小姐姐接着就安排了面试&#xff0c;原定时间是今天下午六点&#xff0c;我五点五十进的会议&#xff0c;结果等到六点二十&#xff08;真的有点不耐烦了说实话&#xff09;面试官打电话过来了说网络不是很好&#xff0c;所以改成电话面试了。 1、session信息保…...

【C++11】新特性 - 右值引用详解

文章目录STD容器使用右值引用场景移动语义在容器中的使用主要体现在两个方面&#xff1a;移动构造函数和移动赋值运算符。移动语义只对右值有效&#xff0c;对左值无效原因STD容器使用右值引用场景 移动语义在容器中的使用主要体现在两个方面&#xff1a;移动构造函数和移动赋…...

C++学习笔记

C学习笔记函数一般有返回值&#xff0c;构造函数有没有返回值&#xff1f;有返回值&#xff0c;返回一个对象&#xff0c;确定所以没写&#xff1b;在头文件中&#xff0c;防卫式声明&#xff0c;#ifndef…#define … #endif;pass by value或者 reference&#xff0c;传值是整包…...

项目1实现login登录功能方案设计第三版

需求优化点:MySQL表常用功能模块实现方案index页面home页面需求 实现一个登录功能 实现的功能 注册(邮箱注册)登录(邮箱密码)重置密码查看操作记录(登录, 注册, 重置密码, 登出. 都算操作)登出在第2版的基础上进行优化:\ 优化点: VerificationCode(验证码储存库): 增加时间字段…...

Node【七】初识Express框架

文章目录&#x1f31f;前言&#x1f31f;Express框架&#x1f31f;1.什么是框架&#x1f31f;2.express安装&#x1f31f;3.创建web服务基本遵循之前的四个步骤&#xff1a;&#x1f31f;4.路由&#x1f31f; 由 &#xff1a;请求方式请求路径&#xff08;1&#xff09;get发送…...

Android 高通Camera2 Camera Device Close

1、很多人看到这个日志第一感觉可能觉得哪里没有合理释放&#xff0c;于是带着这个思路去进行百度探索 2、一开始我去寻找 ImageReader.OnImageAvailableListener 这个问题 var afterBitmap: Bitmap? null/**监听拍照的图片 */private val imageAvailableListener ImageRead…...

TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5

原文&#xff1a;Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的…...

4、浅谈Makefile文件及其简单的使用知识

文章目录1、什么是Makefile&#xff1f;&#xff08;1&#xff09;makefile关系到了整个工程的编译规则。&#xff08;2&#xff09;makefile带来的好处就是——“自动化编译”&#xff08;3&#xff09;make是一个命令工具&#xff0c;是一个解释makefile中指令的命令工具2、为…...

5G/V2X赛道「重启」

在提升高阶智能驾驶安全性和感知冗余能力的道路上&#xff0c;除了激光雷达、高精度地图及定位&#xff0c;还有一项技术可能即将掀起一场新的风暴。 就在今年3月&#xff0c;作为全球通信领域的年度风向标 — 2023世界移动通信大会&#xff08;MWC&#xff09;上&#xff0c;…...

pytorch进阶学习(四):使用不同分类模型进行数据训练(alexnet、resnet、vgg等)

课程资源&#xff1a;5、帮各位写好了十多个分类模型&#xff0c;直接运行即可【小学生都会的Pytorch】_哔哩哔哩_bilibili 目录 一、项目介绍 1. 数据集准备 2. 运行CreateDataset.py 3. 运行TrainModal.py 4. 如何切换显卡型号 二、代码 1. CreateDataset.py 2.Train…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...