Rocky系统部署k8s1.28.2单节点集群(Containerd)+Kuboard

news2024/11/13 10:17:13

目录

Kubernetes介绍

Kubernetes具备的功能

Kubernetes集群角色

Master管理节点组件

Node工作节点组件

非必须的集群插件

Kubernetes集群类型

Kubernetes集群规划

集群前期环境准备

开启Bridge网桥过滤

关闭SWAP交换分区

安装Containerd软件包

K8s集群部署方式

集群初始化

部署集群网络Calico

验证集群节点状态

部署Nginx测试集群

部署Kuboard v3


 

Kubernetes介绍

 

kubernetes(k8s)是2014年由Google公司基于Go语言编写的一款开源的容器集群编排系统,用于自动化容器的部署、扩缩容和管理;

kubernetes(k8s)是基于Google内部的Borg系统的特征开发的一个版本,集成了Borg系统大部分优势;

官方地址:Kubernetes

代码托管平台:https://github.com/Kubernetes

 

Kubernetes具备的功能

 

  • 自我修复:k8s可以监控容器的运行状况,并在发现容器出现异常时自动重启故障实例;
  • 弹性伸缩:k8s可以根据资源的使用情况自动地调整容器的副本数。例如,在高峰时段,k8s可以自动增加容器的副本数以应对更多的流量;而在低峰时段,k8s可以减少应用的副本数,节省资源;
  • 资源限额:k8s允许指定每个容器所需的CPU和内存资源,能够更好的管理容器的资源使用量;
  • 滚动升级:k8s可以在不中断服务的情况下滚动升级应用版本,确保在整个过程中仍有足够的实例在提供服务;
  • 负载均衡:k8s可以根据应用的负载情况自动分配流量,确保各个实例之间的负载均衡,避免某些实例过载导致的性能下降;
  • 服务发现:k8s可以自动发现应用的实例,并为它们分配一个统一的访问地址。这样,用户只需要知道这个统一的地址,就可以访问到应用的任意实例,而无需关心具体的实例信息;
  • 存储管理:k8s可以自动管理应用的存储资源,为应用提供持久化的数据存储。这样,在应用实例发生变化时,用户数据仍能保持一致,确保数据的持久性;
  • 密钥与配置管理:Kubernetes 允许你存储和管理敏感信息,例如:密码、令牌、证书、ssh密钥等信息进行统一管理,并共享给多个容器复用;

 

Kubernetes集群角色

 

k8s集群需要建⽴在多个节点上,将多个节点组建成一个集群,然后进⾏统⼀管理,但是在k8s集群内部,这些节点⼜被划分成了两类⻆⾊:

  • 一类⻆⾊为管理节点,叫Master,负责集群的所有管理工作;
  • ⼀类⻆⾊为⼯作节点,叫Node,负责运行集群中所有用户的容器应用 ;

 

Master管理节点组件

 

  • API Server:作为集群的管理入口,处理外部和内部通信,接收用户请求并处理集群内部组件之间的通信;
  • Scheduler:作为集群资源调度计算,根据调度策略,负责将待部署的 Pods 分配到合适的 Node 节点上;
  • Controller Manager:管理集群中的各种控制器,例如 Deployment、ReplicaSet、DaemonSet等,管理集群中的各种资源;
  • etcd:作为集群的数据存储,保存集群的配置信息和状态信息;

 

Node工作节点组件

 

  • Kubelet:负责与 Master 节点通信,并根据 Master 节点的调度决策来创建、更新和删除 Pod,同时维护 Node 节点上的容器状态;
  • 容器运行时(如 Docker、containerd 等):负责运行和管理容器,提供容器生命周期管理功能。例如:创建、更新、删除容器等;
  • Kube-proxy:负责为集群内的服务实现网络代理和负载均衡,确保服务的访问性;

非必须的集群插件

 

  • DNS服务:严格意义上的必须插件,在k8s中,很多功能都需要用到DNS服务,例如:服务发现、负载均衡、有状态应用的访问等;
  • Dashboard: 是k8s集群的Web管理界面;
  • 资源监控:例如metrics-server监视器,用于监控集群中资源利用率;

 

Kubernetes集群类型

 

  • 一主多从集群:由一台Master管理节点和多台Node工作节点组成,生产环境下Master节点存在单点故障的风险,适合学习和测试环境使用;
  • 多主多从集群:由多台Master管理节点和多Node工作节点组成,安全性高,适合生产环境使用;

 

Kubernetes集群规划

 

给这些虚拟机操作,关闭防火墙和selinux,进行时间同步。  

主机名

IP地址

角色

操作系统

硬件配置

master01

192.168.226.21

管理节点

Rocky 9.4mini

2CPU/4G内存/50G

node01

192.168.226.22

工作节点

Rocky 9.4mini

2CPU/4G内存/50G

node02

192.168.226.23

工作节点

Rocky 9.4mini

2CPU/4G内存/50G

 

集群前期环境准备

 

按照集群规划修改每个节点主机名

# 对192.168.226.21操作
hostnamectl set-hostname master01

# 对192.168.226.22操作
hostnamectl set-hostname node01

# 对192.168.226.23操作
hostnamectl set-hostname node02

配置本地域名解析,配置集群之间本地解析,集群在初始化时需要能够解析主机名,三台都要配

echo "192.168.226.21 master01" >> /etc/hosts
echo "192.168.226.22 node01" >> /etc/hosts
echo "192.168.226.23 node02" >> /etc/hosts

 

开启Bridge网桥过滤

本步骤三台主机都执行

 

bridge(桥接) 是 Linux 系统中的一种虚拟网络设备,它充当一个虚拟的交换机,为集群内的容器提供网络通信功能,容器就可以通过这个 bridge 与其他容器或外部网络通信了。

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

 参数解释:

net.bridge.bridge-nf-call-ip6tables = 1 //对网桥上的IPv6数据包通过iptables处理

net.bridge.bridge-nf-call-iptables = 1 //对网桥上的IPv4数据包通过iptables处理

net.ipv4.ip_forward = 1 //开启IPv4路由转发,来实现集群中的容器与外部网络的通信

由于开启bridge功能,需要加载br_netfilter模块来允许在bridge设备上的数据包经过iptables防火墙处理

modprobe br_netfilter && lsmod | grep br_netfilter

命令解释:

modprobe //命令可以加载内核模块

br_netfilter //模块模块允许在bridge设备上的数据包经过iptables防火墙处理

加载配置文件,使上述配置生效

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

关闭SWAP交换分区

本步骤三台主机都执行

 

为了保证 kubelet 正常工作,k8s强制要求禁用,否则集群初始化失败

临时关闭

swapoff -a

 永久关闭

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

安装Containerd软件包

 

本步骤三台主机都执行

添加阿里云docker-ce仓库(containerd软件包在docker仓库)

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

安装containerd软件包

dnf install -y containerd.io-1.6.20-3.1.el9.x86_64

生成containerd配置文件

containerd config default | tee /etc/containerd/config.toml

启用Cgroup用于限制进程的资源使用量,如CPU、内存资源 

sed -i 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml

替换文件中pause镜像的下载地址为阿里云仓库

sed -i 's#sandbox_image = "registry.k8s.io/pause:3.6"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#' /etc/containerd/config.toml

 为Containerd配置镜像加速器,在文件中找到[plugins."io.containerd.grpc.v1.cri".registry.mirrors],在下方添加阿里云镜像加速器

vim /etc/containerd/config.toml
#...大约带153行左右
       [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
           endpoint = ["https://docker.rainbond.cc"]

指定contaienrd接口文件地址,在k8s环境中,kubelet通过 containerd.sock 文件与containerd进行通信

cat <<EOF | tee /etc/crictl.yaml
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: false
EOF

参数解释:

runtime-endpoint //指定了容器运行时的sock文件位置

image-endpoint //指定了容器镜像使用的sock文件位置

timeout //容器运行时或容器镜像服务之间的通信超时时间

debug //指定了crictl工具的调试模式,false表示调试模式未启用,true则会在输出中包含更多的调试日志信息,有助于故障排除和问题调试

启动containerd并设置随机自启 

systemctl enable containerd --now

 

K8s集群部署方式

 

kubernetes集群有多种部署方式,目前常用的部署方式有如下两种:

  • kubeadm部署方式:kubeadm是一个快速搭建kubernetes的集群工具;
  • 二进制包部署方式:从官网下载每个组件的二进制包,依次去安装,部署麻烦;
  • 其他方式:通过一些开源的工具搭建,例如:sealos;

配置kubeadm仓库,本实验使用阿里云YUM源

cat > /etc/yum.repos.d/k8s.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装以下软件包:

  • kubeadm:用于初始化集群,并配置集群所需的组件并生成对应的安全证书和令牌;
  • kubelet:负责与 Master 节点通信,并根据 Master 节点的调度决策来创建、更新和删除 Pod,同时维护 Node 节点上的容器状态;
  • kubectl:用于管理k8集群的一个命令行工具;
yum -y install kubeadm-1.28.2 kubelet-1.28.2 kubectl-1.28.2

kubelet启用Cgroup控制组,用于限制进程的资源使用量,如CPU、内存

tee > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF

设置kubelet开机自启动即可,集群初始化后自动启动

systemctl enable kubelet

 

集群初始化

 

在master01节点查看集群所需镜像文件

[root@master01 ~]# kubeadm config images list
W0813 20:45:03.587714    2189 version.go:104] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get "https://cdn.dl.k8s.io/release/stable-1.txt": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
W0813 20:45:03.587821    2189 version.go:105] falling back to the local client version: v1.28.2
registry.k8s.io/kube-apiserver:v1.28.2
registry.k8s.io/kube-controller-manager:v1.28.2
registry.k8s.io/kube-scheduler:v1.28.2
registry.k8s.io/kube-proxy:v1.28.2
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.9-0
registry.k8s.io/coredns/coredns:v1.10.1

使用阿里云的源拉取镜像

ctr image pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.28.12
ctr image pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.28.12
ctr image pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.28.12
ctr image pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.28.12
ctr image pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9
ctr image pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.9-0
ctr image pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.10.1

改tag

ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.28.12 registry.k8s.io/kube-apiserver:v1.28.12
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.28.12 registry.k8s.io/kube-controller-manager:v1.28.12
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.28.12 registry.k8s.io/kube-scheduler:v1.28.12
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.28.12 registry.k8s.io/kube-proxy:v1.28.12
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 registry.k8s.io/pause:3.9
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.5.9-0 registry.k8s.io/etcd:3.5.9-0
ctr image tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.10.1 registry.k8s.io/coredns/coredns:v1.10.1

 

在master01节点生成初始化集群的配置文件

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

其中配置文件需要修改如下内容

[root@master01 ~]# vim kubeadm-config.yaml
#本机的IP地址
advertiseAddress: 192.168.0.10

#本机名称
name: master01

#集群镜像下载地址,修改为阿里云
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

并通过配置文件初始化集群

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

选项说明:

init //初始化集群

--config //通过配置文件初始化

--upload-certs //初始化过程将生成证书,并将其上传到etcd存储中,以便后续节点的加入

根据集群初始化后的提示,执行如下命令

 

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

根据提示将node节点加入集群,加入成功后在master节点验证

这个命令复制给node01和node02执行

# 这个密钥每次不一样,这里用你的密钥,复制本条命令给你执行无效
kubeadm join 192.168.226.21:6443 --token abcdef.0123456789abcdef \
	--discovery-token-ca-cert-hash sha256:966e2980933706623ab15179ff564ab39fd337dfd8524f72e404c2b6885be449 

如此就是加入成功了

[root@master01 ~]# kubectl get nodes
NAME       STATUS     ROLES           AGE     VERSION
master01   NotReady   control-plane   3m47s   v1.28.2
node01     NotReady   <none>          2m30s   v1.28.2
node02     NotReady   <none>          2m27s   v1.28.2

提示:如果哪个节点出现问题,可以使用下列命令重置当前节点

kubeadm reset --force

 

部署集群网络Calico

 

Calico 和 Flannel 是两种流行的 k8s 网络插件,它们都为集群中的 Pod 提供网络功能。然而,它们在实现方式和功能上有一些重要区别:

网络模型的区别:

  • Calico 使用 BGP(边界网关协议)作为其底层网络模型。它利用 BGP 为每个 Pod 分配一个唯一的 IP 地址,并在集群内部进行路由。Calico 支持网络策略,可以对流量进行精细控制,允许或拒绝特定的通信。
  • Flannel 则采用了一个简化的覆盖网络模型。它为每个节点分配一个 IP 地址子网,然后在这些子网之间建立覆盖网络。Flannel 将 Pod 的数据包封装到一个更大的网络数据包中,并在节点之间进行转发。Flannel 更注重简单和易用性,不提供与 Calico 类似的网络策略功能。

性能的区别:

  • 由于 Calico 使用 BGP 进行路由,其性能通常优于 Flannel。Calico 可以实现直接的 Pod 到 Pod 通信,而无需在节点之间进行额外的封装和解封装操作。这使得 Calico 在大型或高度动态的集群中具有更好的性能。
  • Flannel 的覆盖网络模型会导致额外的封装和解封装开销,从而影响网络性能。对于较小的集群或对性能要求不高的场景,这可能并不是一个严重的问题。

master01节点下载Calico文件

wget https://raw.githubusercontent.com/projectcalico/calico/v3.24.1/manifests/calico.yaml

 注意:如果无法下载,就浏览器打开该网页直接复制网页内容粘贴到master01中即可。

创建calico网络

kubectl apply -f calico.yaml 

查看Calico Pod状态是否为Running
 需要耐心等会让其一个一个启动,系统配置够的话大概几分钟即可。

[root@master01 ~]# kubectl get pod -n kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
calico-kube-controllers-9d57d8f49-4jg5h   1/1     Running   0          4m32s
calico-node-28lg6                         1/1     Running   0          4m32s
calico-node-4cd4d                         1/1     Running   0          4m32s
calico-node-x6rsk                         1/1     Running   0          4m32s
coredns-6554b8b87f-2828d                  1/1     Running   0          6m13s
coredns-6554b8b87f-nf2jc                  1/1     Running   0          6m13s
etcd-master01                             1/1     Running   1          6m17s
kube-apiserver-master01                   1/1     Running   1          6m18s
kube-controller-manager-master01          1/1     Running   1          6m17s
kube-proxy-8wdxg                          1/1     Running   0          5m18s
kube-proxy-hhf8n                          1/1     Running   0          6m13s
kube-proxy-krz76                          1/1     Running   0          5m14s
kube-scheduler-master01                   1/1     Running   1          6m17s

 

验证集群节点状态

 

在master01节点查看集群信息

[root@master01 ~]# kubectl get nodes
NAME       STATUS   ROLES           AGE     VERSION
master01   Ready    control-plane   2m47s   v1.28.2
node01     Ready    <none>          104s    v1.28.2
node02     Ready    <none>          100s    v1.28.2

部署Nginx测试集群

 

NodePort 服务

在master01节点部署nginx程序测试

[root@master01 ~]# vim nginx-test.yml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.20.2
    ports:
    - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30002

nginx-test.yml 文件中定义的 Kubernetes 资源应用到集群中。 

kubectl apply -f nginx-test.yml

查看Pod状态是否为Running

[root@master01 ~]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          86s

查看Service代理信息

[root@master01 ~]# kubectl get service
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        16m
nginx-svc    NodePort    10.103.46.52   <none>        80:30002/TCP   115s

浏览器访问测试:http://192.168.226.21:30002/

 

 

部署Kuboard v3

 

新增一台虚拟机,关闭防火墙和selinux,进行时间同步。 

主机名

IP地址

角色

操作系统

硬件配置

localhost

192.168.226.24

web-ui

Rocky 9.4mini

2CPU/2G内存/20G

安装Docker并配置加速器

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
 
# Step 5:配置加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
        "https://docker.rainbond.cc" ,
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://pilvpemn.mirror.aliyuncs.com",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
   ],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Kuboard v3官方文档:安装 Kuboard v3 - kubernetes | Kuboard

安装 Kuboard v3.x 版本的指令如下: 

sudo docker run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 80:80/tcp \
  -p 10081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://192.168.226.21:80" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /root/kuboard-data:/data \
  eipwork/kuboard:v3
  # 也可以使用镜像 swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3 ,可以更快地完成镜像下载。
  # 请不要使用 127.0.0.1 或者 localhost 作为内网 IP \
  # Kuboard 不需要和 K8S 在同一个网段,Kuboard Agent 甚至可以通过代理访问 Kuboard Server \
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE                COMMAND            CREATED          STATUS          PORTS                                                                                       NAMES
e2a4e5aefa79   eipwork/kuboard:v3   "/entrypoint.sh"   14 seconds ago   Up 14 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:10081->10081/tcp, :::10081->10081/tcp, 443/tcp   kuboard

 浏览器访问:http://192.168.226.24/

默认用户名:admin    初始化密码:Kuboard123

这里有个坑,如果这个IP地址和这个部署kuboard的IP不一致的话执行命令时,需要修改为当前页面的这个IP例如我这里就需要将尾号21的改为24的IP地址

所以我需要复制这个命令如下,然后拿到master01主机执行。

然后执行成功后,查看状态

[root@master01 ~]# kubectl get pod -n kuboard
NAME                                      READY   STATUS    RESTARTS   AGE
kuboard-agent-echq2h-2-67bcfcb6f5-r5qjc   1/1     Running   0          10s
kuboard-agent-echq2h-9cc9cf87-dvmm5       1/1     Running   0          10s

这里运行后回到kuboard的页面查看

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

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

相关文章

关于归并排序:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_urlhttps%3A%2F return 语句开始之后&#xff0c;会执行之前剩余遗留下的语句和状态#include<bits/stdc.h> using namespace std…

Xilinx XAPP585相关

XAPP585中相关的状态机 第一个状态机&#xff1a;这里主要是在对时钟线延迟的基础上&#xff0c;通过BITSLIP操作&#xff0c;做时钟的对齐&#xff1b; 第二个状态机&#xff1a;这里对c_delay_in所做的操作&#xff0c;主要是对时钟线的延迟进行控制&#xff1b; delay_con…

远程代码执行漏洞

1.简介 远程代码执行(remote code execution)简称RCE&#xff0c;由于应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时&#xff0c;没有考虑用户是否控制这个字符串&#xff0c;则会导致代码执行漏洞的发生Webshell能够执行代码&#xff0c;本质上就是利用了…

新AI工程师Genie强势来袭,84秒解决代码问题

&#x1f989; AI新闻 &#x1f680; 新AI工程师Genie强势来袭&#xff0c;84秒解决代码问题 摘要&#xff1a;新兴AI软件工程师Genie因其超凡能力而引发关注&#xff0c;它在SWE-Bench排行榜上以30.07%的问题解决率远超第二名。Genie能模拟人类工程师的思维&#xff0c;自动…

CV党福音:YOLOv8实现语义分割(一)

前面我们得知YOLOv8不但可以实现目标检测任务&#xff0c;还包揽了分类、分割、姿态估计等计算机视觉任务。在上一篇博文中&#xff0c;博主已经介绍了YOLOv8如何实现分类&#xff0c;在这篇博文里&#xff0c;博主将介绍其如何将语义分割给收入囊中。 YOLOv8语义分割架构图 …

LeetCode - 54 - 螺旋矩阵

力扣54题 题目描述&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 题解思路&#xff1a; 54题和59题 螺旋矩阵Ⅱ 有些微区别&#xff0c;59是nn的方形矩阵&#xff0c;但是54需要考虑行和列不相等的情况…

Webpack中搭建本地服务dev-server

开发过程中关于实现文件内容发生变化时&#xff0c;可监听文件变化内容、自动完成编译热更新&#xff0c;webpack提供了几种可选方式&#xff1a; 1. webpack watch mode监听文件变化 watch可在导出配置中添加或者在webpack 启动命令中添加--watch 注意&#xff1a;watch 的配…

武汉流星汇聚:跨境电商引领外贸增长新引擎,展望未来发展趋势

在过去的几年里&#xff0c;跨境电商如同一股强劲的东风&#xff0c;不仅为外贸增长注入了新的活力&#xff0c;更成为了引领全球贸易发展的新引擎。随着全球经济逐渐复苏&#xff0c;跨境电商行业正以惊人的速度迈向新的高度&#xff0c;展现出其作为外贸增长关键推动力的巨大…

面试题:什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?该如何应对这种情况?如何处理 Redis 的穿透?

面试题&#xff1a;什么是 Redis 的雪崩、穿透和击穿&#xff1f;Redis 崩溃之后会怎么样&#xff1f;该如何应对这种情况&#xff1f;如何处理 Redis 的穿透&#xff1f; 面试题面试官心理分析面试题剖析缓存雪崩缓存穿透缓存击穿 面试题 了解什么是 Redis 的雪崩、穿透和击穿…

python中的列表、元组、字典之间的区别

python列表 python列表是python中使用最频繁的数据类型。 列表可以完成大多数集合类的数据结构实现。它支持字符、数字、字符串甚至可以包含列表&#xff08;即嵌套&#xff09;。 列表用"[ ]"标识&#xff0c;是python最通用的复合数据类型。列表中值的切割也可以…

RabbitMQ入门与进阶

RabbitMQ入门与进阶 基础篇1. 为什么需要消息队列?2. 什么是消息队列?3. RabbitMQ体系结构介绍4. RabbitMQ安装5. HelloWorld6. RabbitMQ经典用法(工作模式)7. Work Queues8. Publish/Subscribe9. Routing10. Topics 进阶篇1. RabbitMQ整合SpringBoot2. 消息可靠性投递故障情…

thinkphp中的sql和代码执行

目录 thinkphp5漏洞sql注入 漏洞概要. 漏洞准备 漏洞分析 代码执行 限制条件1 1 2 限制条件 1 限制条件3 php7.x php5 thinkphp5漏洞sql注入 漏洞概要. 本次漏洞存在于 Builder 类的 parseData 方法中。由于程序没有对数据进行很好的过滤&#xff0c;将数据拼接进…

免费Excel数据批量转Word工具

下载地址&#xff1a;https://pan.quark.cn/s/5d4cff261d83 一个可以快速的将excel数据批量按照word模板进行转换的小工具。 功能&#xff1a; 1、自定义word模板&#xff0c;嵌入差值表达式 2、批量打包下载 3、自定义导出word文件名&#xff0c;支持嵌入excel字段 4、缓存导…

呼叫中心系统客服服务功能模块

呼叫中心系统的客服服务功能模块可应用于客户服务场景&#xff0c;如&#xff1a;售后服务、物业报修、投诉平台、信息查询、订单服务、预约报名等。此功能与工单管理模块结合使用&#xff0c;形成规范化工作流程。 客服服务模块功能包括&#xff1a;查询、添加、修改、导出、受…

大数据-82 Spark 集群模式启动 Hadoop HDFS Spark 与 HelloWorld!

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

ChatMoneyAI菜谱大全告诉你如何烹饪

本文由 ChatMoney团队出品 在这个充满科技感的时代&#xff0c;人工智能技术正逐渐渗透到我们生活的方方面面。特别是在烹饪领域&#xff0c;AI菜谱的出现为厨艺不精的人们带来了一线希望。就近发现ChatMoneyAI的全能AI知识库系统就有AI菜谱的功能&#xff0c;以其便捷、智能的…

【原创】java+swing+mysql商品信息管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 开发背景&#xff1a; 使用javaswing技…

idea导入miniUI项目,依赖文件找不到

问题 我是第一次使用idea开发工具也是第一次用miniUI项目&#xff0c;以前一直用的是eclipse&#xff0c;所以我导入项目之后的思路就是配置jdk、maven,但是当我做好这些的时候&#xff0c;项目没有任何的反应&#xff0c;依然在报错&#xff0c;然后就请教了很厉害的同事&…

【C++】函数的声明

函数的声明作用为函数的可以把函数的定义放在末尾&#xff0c;当然继续保持在开头也可以 函数的声明可以有多次&#xff0c;但是定义只能有一次 下面是一个实例 #include<iostream> using namespace std;//函数的声明 //比较函数&#xff0c;实现两个整型数字进行比较…

Java 阿里云视频直播开发流程

首先来看一下直播效果 推流工具有很多种&#xff08;例如OBS、阿里云直播Demo推流、等等&#xff0c;我用的是芯象导播&#xff09;阿里播放器地址 一、直播基础服务概述 官方文档说明 二、直播域名配置需要两个域名&#xff08;推流域名、播流域名&#xff09; 官方文档说…