Linux系统【RockyLinux9.4】下K8S集群【1.31.0】安装部署指南

news2024/11/14 13:43:56

1.概述

公司之前一直使用的是CentOS系统作为测试、开发、生产环境的基础系统镜像,由于最近的CentOS的镜像彻底终止维护之后,我们在为后续项目的基础系统镜像选型进行的调研, 最好是可以平替的进行类似系统的移植, 经过多番对比, 决定使用Rocky Linux系统来完成我们开发测试环境的系统移植,系统镜像的下载、安装、部署都比较简单, 基本跟CentOS发现版都很类似, 这里就不进行详细讲解说明了, 下面我们主要演示在Rocky Linux系统下完成K8S集群开发测试环境搭建的整个过程。

2.软件包来源及下载途径

RockyLinux9.4: https://rockylinux.org/zh-CN/download
docker-ce: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cri-docker: https://github.com/Mirantis/cri-dockerd/releases
cri-docker.service: https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.service
cri-docker.socket: https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.socket
阿里云k8s源: https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/
gpgkey: https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/repodata/repomd.xml.key
Calico配置文件: https://github.com/projectcalico/calico/blob/master/manifests/calico.yaml

3.K8S集群规划

由于资源限制,只有3台开发服务器, 这里的K8S集群搭建采用 1台master, 2台worker节点
集群各节点资源规划分配

IP地址主机名角色系统版本CPU/内存/磁盘
10.10.100.128master管理节点Rocky Linux 9.42U/4G/100G
10.10.100.129worker01管理节点Rocky Linux 9.42U/4G/100G
10.10.100.130worker02管理节点Rocky Linux 9.42U/4G/100G

4.主机集群基础环境配置

4.1.集群各节点域名设置

把每一台主机进行hostname设置,方便查看【master、worker节点】

,master节点执行

hostnamectl set-hostname master

,worker01节点执行

hostnamectl set-hostname worker01

,worker02节点执行

hostnamectl set-hostname worker02

4.2.集群IP域名映射

以下命令在所有节点上都执行.

cat >> /etc/hosts << "EOF"
10.10.100.128 master
10.10.100.129 worker01
10.10.100.130 worker02
EOF

4.3.修改终端颜色

以下命令在所有节点上都执行.

cat << EOF >> ~/.bashrc
PS1="\[\e[37;47m\][\[\e[32;47m\]\u\[\e[34;47m\]@\h \[\e[36;47m\]\w\[\e[0m\]]\\$ "
EOF

让修改立即生效

source ~/.bashrc

4.4.关闭防火墙

以下命令在所有节点上都执行.

systemctl disable --now firewalld && systemctl is-enabled firewalld

systemctl status firewalld

4.5.禁用selinux

以下命令在所有节点上都执行.

sed -ri 's#(SELINUX=)enforcing#\1disabled#' /etc/selinux/config

grep ^SELINUX= /etc/selinux/config

setenforce 0

getenforce 

4.6.修改软件镜像源

以下命令在所有节点上都执行.

sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/rocky-*.repo

在所有节点上都执行以下命令将服务器上的软件包信息缓存到本地,

yum makecache

4.7.配置epel源

以下命令在所有节点上都执行. 所有的主机节点上都要进行配置

vi /etc/yum.repos.d/epel.repo

repo文件内容如下:

[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
# It is much more secure to use the #metalink, but if you wish to use a local mirror
# place its address here.
baseurl=https://repo.huaweicloud.com/epel/$releasever/Everything/$basearch/
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
 
[epel-debuginfo]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug
# It is much more secure to use the #metalink, but if you wish to use a local mirror
# place its address here.
baseurl=https://repo.huaweicloud.com/epel/$releasever/Everything/$basearch/debug/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
gpgcheck=1
 
[epel-source]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Source
# It is much more secure to use the #metalink, but if you wish to use a local mirror
# place its address here.
baseurl=https://repo.huaweicloud.com/epel/$releasever/Everything/source/tree/
enabled=0

在所有节点上都执行以下命令将服务器上的软件包信息缓存到本地,

yum makecache

4.8.主机集群时间同步设置

检查时区和时间
在这里插入图片描述
如果时区和时间不对,需要手动设置时区和设置时间同步,时间同步我们借助chrony服务来进行设置, 如果没有安装该服务, 先通过一下命令进行安装(所有主机节点都执行):

yum install -y ntpdate chrony

修改chrony服务配置文件

vim /etc/chrony.conf

#注释掉官方的时间服务器,换成国内的时间服务器即可

server ntp.aliyun.com iburst

在这里插入图片描述
重启chrony服务


systmctl enable chronyd  --now

4.9.修改系统最大打开文件数

以下命令在所有节点上都执行.

在/etc/security/limits.conf文件的末尾追加以下内容

* soft nofile 65535
* hard nofile 65535

4.10.修改sysctl.conf内核参数配置

以下命令在所有节点上都执行.

vim /etc/sysctl.conf

打开文件,在文件末尾追加以下几行:

net.ipv4.tcp_syncookies = 1 
net.ipv4.tcp_max_tw_buckets = 20480 
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20 

并运行一下命令使得配置的sysctl.conf文件生效

 sysctl -p

4.11.关闭swap

以下命令在所有节点上都执行.

swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

4.12.安装系统性能分析及其他工具

以下命令在所有节点上都执行.

yum install -y gcc autoconf sysstat 

4.13.开启bridge网桥过滤

以下命令在所有节点上都执行.

vim /etc/sysctl.d/k8s.conf

编辑文件写入以下几行

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

加载br_netfilter模块,并查看

modprobe br_netfilter && lsmod | grep br_netfilter

加载配置文件,使其生效

sysctl -p /etc/sysctl.d/k8s.conf

以上操作完毕之后,最好将整个集群下的所有主机都重启一边, 确保我们修改的系统配置项全部都生效,再继续进行操作。

5.给集群各个节点安装Docker服务

5.1. 配置国内阿里云docker源

以下命令在所有节点上都执行.

我们需要使用yum-config-manager 工具, 可以先执行以下命令安装,确保配置docker源的命令可以正常执行

yum install -y yum-utils

配置国内阿里云docker源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.2. 查看可用的docker版本

以下命令在所有节点上都执行.

yum list docker-ce.x86_64 --showduplicates | sort -r

在这里插入图片描述

5.3.安装docker27.2.0-1.el9版本

以下命令在所有节点上都执行.

yum -y install docker-ce-27.2.0-1.el9

在这里插入图片描述

5.4.在Docker中配置Cgroup

以下命令在所有节点上都执行.

vim /etc/docker/daemon.json

编辑文件写入以下行

{
 "exec-opts": ["native.cgroupdriver=systemd"]
}

在这里插入图片描述

5.5. 启动Docker服务并设置随机自启

以下命令在所有节点上都执行.

systemctl enable docker --now

在这里插入图片描述

6.cri-docker安装

从kubernetes 1.24开始,dockershim已经从kubelet中移除(dockershim 是 Kubernetes 的一个组件,主要目的是为了通过 CRI 操作 Docker),但因为历史问题docker却不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能再作为kubernetes的容器运行时了,即从kubernetesv1.24开始不再使用docker了,默认使用的容器运行时是containerd。目前containerd比较新,可能存在一些功能不稳定的情况,所以这里我们使用容器运行时还是选择docker。

如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker。cri-docker是一个支持CRI标准的shim(垫片)。一头通过CRI跟kubelet交互,另一头跟docker api交互,从而间接的实现了kubernetes以docker作为容器运行时。这里需要在全部节点执行cri-docker安装。

6.1.下载cri-docker

这里我们先在master节点下载该文件, 然后通过scp工具同步到其他节点

wget -c https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.14/cri-dockerd-0.3.14.amd64.tgz

6.2.解压cri-docker

tar -xvf cri-dockerd-0.3.14.amd64.tgz --strip-components=1 -C /usr/local/bin/

6.3.下载并修改cri-docker配置文件

6.3.1.下载cri-docker.service和cri-docker.socket文件

wget -O /etc/systemd/system/cri-docker.service https://github.com/Mirantis/cri-dockerd/blob/master/packaging/systemd/cri-docker.service
wget -O /etc/systemd/system/cri-docker.socket https://github.com/Mirantis/cri-dockerd/blob/master/packaging/systemd/cri-docker.socket

6.3.2.修改cri-docker.service和cri-docker.socket文件

修改cri-docker.service的启动命令ExecStart

vim /etc/systemd/system/cri-docker.service

修改内容如下:

ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --cri-dockerd-root-directory=/var/lib/docker

如下图:
在这里插入图片描述
修改cri-docker.socket的ListenStream参数,

vim /etc/systemd/system/cri-docker.socket

修改内容如下:

#ListenStream=%t/cri-dockerd.sock
ListenStream=/var/run/cri-dockerd.sock

在这里插入图片描述

6.4.同步cri-docker服务到其他节点

在master节点执行以下命令

[root@master ~]# scp cri-dockerd-0.3.14.amd64.tgz root@10.10.100.129:/root/
[root@master ~]# scp cri-dockerd-0.3.14.amd64.tgz root@10.10.100.130:/root/

6.5. 在各个worker节点安装cri-docker

在woker01节点、woker02节点执行

tar -xvf cri-dockerd-0.3.14.amd64.tgz --strip-components=1 -C /usr/local/bin/

6.6.同步cri-docker配置文件到其他worker节点

在master节点执行以下命令

[root@master ~]# scp cri-dockerd-0.3.14.amd64.tgz root@10.10.100.129:/etc/systemd/system/
[root@master ~]# scp cri-dockerd-0.3.14.amd64.tgz root@10.10.100.130:/etc/systemd/system

6.7.启动并设置cri-docker自启动

以下命令在所有节点上都执行.

systemctl daemon-reload

systemctl enable cri-docker.service --now

7.使用kubeadm基于Docker Runtime部署kubernetes集群

7.1.配置阿里云K8S源

以下命令在所有节点上都执行.

vim /etc/yum.repos.d/k8s.repo

内容如下:

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/repodata/repomd.xml.key

7.2.安装K8S集群管理工具

以下命令在所有节点上都执行.

yum install -y kubelet kubeadm kubectl

在这里插入图片描述
在这里插入图片描述

7.3. 配置k8s Cgoup控制组

以下命令在所有节点上都执行.

vim /etc/sysconfig/kubelet

打开文件写入以下行

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

7.4. 配置kubelet自启动

以下命令在所有节点上都执行.

systemctl enable kubelet.service

7.5. 初始化集群

初始化集群操作只需要在master节点运行

7.5.1. 打印master节点所需的镜像文件

只在master节点运行

 kubeadm config images list

在这里插入图片描述

7.5.2. 打印集群初始化配置文件

只在master节点运行

kubeadm config print init-defaults > kubeadm-config.yaml

在这里插入图片描述

7.5.3. 修改参数

只在master节点运行

主要修改advertiseAddress,criSocket, imageRepository这三个参数,如下:

apiVersion: kubeadm.k8s.io/v1beta4
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 10.10.100.128 #修改为集群初始化的master节点IP地址
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/cri-dockerd.sock #高版本默认使用containerd,这里修改成使用dcoker
  imagePullPolicy: IfNotPresent
  imagePullSerial: true
  name: master
  taints: null
timeouts:
  controlPlaneComponentHealthCheck: 4m0s
  discovery: 5m0s
  etcdAPICall: 2m0s
  kubeletHealthCheck: 4m0s
  kubernetesAPICall: 1m0s
  tlsBootstrap: 5m0s
  upgradeManifests: 5m0s
---
apiServer: {}
apiVersion: kubeadm.k8s.io/v1beta4
caCertificateValidityPeriod: 87600h0m0s
certificateValidityPeriod: 8760h0m0s
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
encryptionAlgorithm: RSA-2048
etcd:
  local:
    dataDir: /var/lib/etcd
#imageRepository: registry.k8s.io
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers ##这里修改成使用阿里云容器镜像
kind: ClusterConfiguration
kubernetesVersion: 1.31.0
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
proxy: {}
scheduler: {}

7.5.4. 使用以上配置文件进行集群初始化

只在master节点运行

kubeadm init --config kubeadm-config.yaml --upload-certs

在这里插入图片描述
初始化成功之后就会出现如下图打印
在这里插入图片描述

7.5.5. 配置环境变量

只在master节点运行

集群初始化成功之后的打印中提示了我们 需要进行一下环境变量配置

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

7.5.6. 所有woker节点加入到集群中

在所有woker节点上运行

kubeadm join 10.10.100.128:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:92fe2882e5f86ea0e3f3172d1c498eeeb69199ca9b4c4686748d243b6164f151 --cri-socket=unix:///var/run/cri-dockerd.sock

在这里插入图片描述
在这里插入图片描述
以上命令需要注意一下几点:

  • 1.更换IP地址为你的集群的主节点的IP地址
  • 2.token使用你自己的token
  • 3.token-ca-cert-hash值需要使用你自己的
  • 4.–cri-socket=unix:///var/run/cri-dockerd.sock参数是指定使用docker作为容器管理引擎,这个通用。

8.集群网络准备

8.1 calico安装

只在master节点运行

K8s使用calico部署集群网络,只需要在Master节点安装即可。

wget https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/tigera-operator.yaml --no-check-certificate

8.2.创建calico网络

只在master节点运行

kubectl apply -f calico.yaml

在这里插入图片描述

8.3.验证集群可用性

root@master /home/software/k8s-cluster]# kubectl get nodes
NAME       STATUS   ROLES           AGE     VERSION
master     Ready    control-plane   2d23h   v1.31.0
worker01   Ready    <none>          2d23h   v1.31.0
worker02   Ready    <none>          2d23h   v1.31.0

在这里插入图片描述

8.4.查看集群健康情况

[root@master /home/software/k8s-cluster]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
scheduler            Healthy   ok        
controller-manager   Healthy   ok        
etcd-0               Healthy   ok

在这里插入图片描述

8.5.查看kubernetes集群pod运行情况

root@master /home/software/k8s-cluster]# kubectl get pods -n kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
calico-kube-controllers-94fb6bc47-2slv8   1/1     Running   0          2d23h
calico-node-gt2lx                         1/1     Running   0          2d23h
calico-node-nfkn4                         1/1     Running   0          2d23h
calico-node-q7lbr                         1/1     Running   0          2d23h
coredns-d4ddbc888-7k4s8                   1/1     Running   0          3d
coredns-d4ddbc888-gdjs8                   1/1     Running   0          3d
etcd-master                               1/1     Running   0          3d
kube-apiserver-master                     1/1     Running   0          3d
kube-controller-manager-master            1/1     Running   0          3d
kube-proxy-8qrqc                          1/1     Running   0          2d23h
kube-proxy-g28lf                          1/1     Running   0          2d23h
kube-proxy-klmh5                          1/1     Running   0          3d
kube-scheduler-master                     1/1     Running   0          3d

在这里插入图片描述

8.6.worker节点配置

当我们在Worker节点上执行kubectl命令管理时会报如下错误:

E0909 16:48:18.513539 3733430 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"http://localhost:8080/api?timeout=32s\": dial tcp [::1]:8080: connect: connection refused"
E0909 16:48:18.515608 3733430 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"http://localhost:8080/api?timeout=32s\": dial tcp [::1]:8080: connect: connection refused"
E0909 16:48:18.517357 3733430 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"http://localhost:8080/api?timeout=32s\": dial tcp [::1]:8080: connect: connection refused"
E0909 16:48:18.518838 3733430 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"http://localhost:8080/api?timeout=32s\": dial tcp [::1]:8080: connect: connection refused"
E0909 16:48:18.520453 3733430 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"http://localhost:8080/api?timeout=32s\": dial tcp [::1]:8080: connect: connection refused"
The connection to the server localhost:8080 was refused - did you specify the right host or port?

在这里插入图片描述

如何解决已上报错, 很容易,按照如下命令进行操作:

只要把master上的管理文件/etc/kubernetes/admin.conf拷贝到Worker节点的$HOME/.kube/config就可以让Worker节点也可以实现kubectl命令管理。

#在Worker节点创建.kube目录
[root@worker01 ~]# mkdir /root/.kube
[root@worker02 ~]# mkdir /root/.kube

#在master节点做如下操作
[root@master ~]# scp /etc/kubernetes/admin.conf root@10.10.100.129:/root/.kube/config
[root@master ~]# scp /etc/kubernetes/admin.conf root@10.10.100.130:/root/.kube/config

在这里插入图片描述
在这里插入图片描述
通过以上步骤, 我们就完成了K8S集群的安装部署了,接下来可以愉快的玩耍了。

9.K8S集群的启停管理

默认K8S我们只要设置了systemctl enable kubelet 后,会在开机自动启动K8S集群,如果想要停止kubernetes集群,我们可以通过systemctl stop kubelet 命令停止集群,但是必须先将节点上的docker停止。

不管你是通过哪种方式安装的K8S集群, 只要记住一句口诀就行了:启动K8S集群,先启动集群上所有的容器服务(不管是Docker还是Containerd),停止K8S集群,先停止集群上所有的容器服务。

9.1.停止K8S集群

以下命令在所有节点上都执行.

systemctl stop docker
systemctl stop kubectl

9.2.启动K8S集群

以下命令在所有节点上都执行.

systemctl start docker
systemctl start kubectl

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于锁相环闭环控制AD2S1210旋转变压器测速原理及仿真

旋转变压器通过在转子施加高频励磁信号&#xff0c;通过电磁感应方式在两定子上输出正交的包含转子角度信号&#xff0c;数学建模公式如下&#xff1a; E为幅值&#xff0c;sinwt为转子输入的高频励磁信号&#xff0c;、为电机角度信号 AD2S1210 测角度原理是通过自动控制原理…

进程之间的通信方式

前言 每个进程的用户地址空间都是独立的&#xff0c;一般而言是不能互相访问的&#xff0c;但内核空间是每个进程都共享的&#xff0c;所以进程之间要通信必须通过内核。 Linux提供了以下进程通信方式&#xff1a; 一、管道 所谓的管道&#xff0c;就是内核里面的一串缓存。…

Iceberg与SparkSQL写操作整合

前言 spark操作iceberg之前先要配置spark catalogs&#xff0c;详情参考Iceberg与Spark整合环境配置。 有些操作需要在spark3中开启iceberg sql扩展。 Iceberg使用Apache Spark的DataSourceV2 API来实现数据源和catalog。Spark DSv2是一个不断发展的API&#xff0c;在Spark版…

12. GIS地图制图工程师岗位职责、技术要求和常见面试题

本系列文章目录&#xff1a; 1. GIS开发工程师岗位职责、技术要求和常见面试题 2. GIS数据工程师岗位职责、技术要求和常见面试题 3. GIS后端工程师岗位职责、技术要求和常见面试题 4. GIS前端工程师岗位职责、技术要求和常见面试题 5. GIS工程师岗位职责、技术要求和常见面试…

Mac强制删除文件,碰上“拖拽到废纸篓”无法删除时怎么办?

我们都特别喜欢Mac&#xff0c;不仅是因为它漂亮的外观&#xff0c;还有它的运行顺畅、界面友好。然而&#xff0c;就像所有技术产品一样&#xff0c;有时它也会让我们头疼——比如&#xff0c;当某个文件无论如何都删不掉时。你可能遇到过这样的情况&#xff1a;尝试删除一个文…

亿道三防AI加固平板电脑首亮相,工业级AI PC开启行业新纪元!

8月28日至30日&#xff0c;亿道三防在第22届国际物联网展深圳站上隆重发布了多款AI加固平板电脑和户外三防新品&#xff0c;首次亮相便赢得了现场观众的热烈好评。此外&#xff0c;还有三防平板电脑、工业平板电脑、车载平板电脑以及防爆平板等众多行业类明星产品也悉数登场&am…

【Leetcode算法面试题】-1. 两数之和

文章目录 算法练习题目思路参考答案算法1算法2算法3 算法练习 面试经常会遇到算法题目&#xff0c;今天开启算法专栏&#xff0c;常用算法解析 题目 ** 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&…

【服务器第一期】Xshell、Xftp下载及连接

服务器环境配置 1 Xshell 和 Xftp 的下载安装与使用2 连接服务器2.1. Xshell 连接服务器2.2 文件传输 参考 1 Xshell 和 Xftp 的下载安装与使用 进入 Xshell 下载页面&#xff0c;点击下载 官网-XSHELL-NetSarang Website 选择免费授权页面&#xff1a; 直接下载即可。 PS&…

目标检测从入门到精通——常见iou及变体算法介绍

目标检测中的 IoU 算法及其变体 绪论 在计算机视觉领域&#xff0c;目标检测是一个重要的研究方向&#xff0c;广泛应用于自动驾驶、安防监控、图像搜索等多个场景。为了评估目标检测模型的性能&#xff0c;Intersection over Union&#xff08;IoU&#xff09;作为一种常用的…

SpringBoot OAuth2自定义登陆/授权页

背景 5 月份的时候&#xff0c;我实践并整理了一篇博客&#xff1a;SpringBoot搭建OAuth2&#xff0c;该博客完成之后&#xff0c;很长一段时间里我都有种意犹未尽的感觉。诚然&#xff0c;我把OAuth2搭起来了&#xff0c;各种场景的用例也跑通了&#xff0c;甚至源码也看了&am…

HTTP请求⽅法

HTTP请求⽅法 1. GET &#xff1a;申请获取资源&#xff0c;不对服务器产⽣影响 2. POST &#xff1a; POST 请求通常⽤于发送数据&#xff0c;例如提交表单数据、上传⽂件等&#xff0c;会影响服务器&#xff0c;服务器可能动态创建新的资源或更新原有资源。 3. HEAD &#…

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 &#xff08;1&#xff09;任务并行 &#xff08;2&#xff09;数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间&#xff0c;需要在两者之间相互传输数据。 &#xff08;1&#xff09;分配GPU内存 &#xff08;2&#xff09;将CPU上的数据复制到GPU上 &…

UE4_后期处理_后期处理材质四—场景物体描边

一、效果如下图&#xff1a; 二、分析&#xff1a; 回顾复习&#xff1a;在后期处理材质三中&#xff0c;我们通过计算开启自定义深度通道物体的像素点上下左右4个像素SceneTextureCustomDepth深度之和来判断物体的外部&#xff08;包含物体的边&#xff09;和内部&#xff0c…

【漏洞利用】2018年-2024年HVV 6000+个漏洞 POC 合集分享

此份poc 集成了Zabbix、用友、通达、Wordpress、Thinkcmf、Weblogic、Tomcat等 下载链接: 链接: https://pan.quark.cn/s/1cd7d8607b8a

Java小白一文讲清Java中集合相关的知识点(七)

LinkedHashSet LinkedHashSet是HashSet的子类 LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组双向链表 而在之前讲的HashSet中的链表是单向的哈&#xff0c;注意区分&#xff01; LinkedHashSet根据元素的hashcode值来决定元素的存储位置&#xff0c;同时使用链表…

从搜索热度上看Arcgis的衰退

Arcgis已被qgis快速赶上 google trends是一个google综合了每日的搜索情况的统计网站&#xff0c;可以追踪从2004年开始各个关键字的搜索热度。 我用arcgis和qgis作为对比&#xff0c;简单探索了arcgis和qgis的全球相关热度。 假设&#xff0c;搜索arcgis越高的区域&#xff…

机器学习 第8章 集成学习

目录 个体与集成BoostingBagging与随机森林Bagging随机森林 结合策略平均法投票法学习法 个体与集成 定义&#xff1a;集成学习&#xff0c;也叫多分类器系统、基于委员会的学习等&#xff0c;它是一种通过结合多个学习器来构建一个更强大的学习器的技术。如下图所示 在这里&a…

轨道交通系统详解,以及地铁如何精准停靠站台

ATC系统 全称“自动列车控制系统”&#xff0c;Automatic Train Control&#xff0c;ATC ATC是地铁运行的核心系统&#xff0c;它包括列车自动防护&#xff08;ATP&#xff09;、列车自动运行&#xff08;ATO&#xff09;和列车自动监控&#xff08;ATS&#xff09;三个子系统。…

嵌入式day41

哈希表 将要存储的数据的关键字和位置建立对应的关系&#xff0c;通过哈希函数&#xff08;散列函数&#xff09;将数据映射到存储的位置&#xff0c;方便快速查找 哈希冲突/哈希矛盾&#xff1a; key1 ! key2 f(key1) f(key2) 解决方法&#xff1a; 链地址法 算法 解决…

都2024年了还不明白Redis持久化?RDB文件、AOF文件、AOF重写

都2024年了&#xff0c;不会还有人不知道redis的RDB和Aof吧&#xff1f;不知道没关系&#xff0c;看完这篇文章我相信你就会有个大概的了解和认识了 1. Redis持久化 1.1 持久化概念 Redis本身是一个基于内存的数据库&#xff0c;它提供了RDB持久化、AOF持久化两种方式&#…