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

裸机器搭建k8s部署 1.28.10版本

问了搭建k8s集群踩了很多坑,问题主要出现在网络插件处,因此主要是master节点操作问题。重新走一下流程整理一下笔记。

目录

虚拟机准备

虚拟机

系统版本信息

修改镜像地址

配置静态ip

关闭防火前和交换分区

转发 IPv4 并让 iptables 看到桥接流量

​编辑

k8s集群安装

安装运行容器Containerd

配置 systemd cgroup 驱动

安装 kubeadm、kubelet 和 kubectl 

服务安装

初始化 (仅仅主机执行)

初始化执行成功结果

​编辑

根据提示执行

初始化完成后检查

装网络插件

问题排查


虚拟机准备

虚拟机

系统版本信息

[root@k8smaster ~]# hostnamectlStatic hostname: k8smasterIcon name: computer-vmChassis: vmMachine ID: 58f72fdf6d904baab18787a82e3d7dceBoot ID: 38d7be129cb04282921c6d8e88d420dcVirtualization: vmwareOperating System: CentOS Linux 7 (Core)CPE OS Name: cpe:/o:centos:centos:7Kernel: Linux 3.10.0-1160.71.1.el7.x86_64Architecture: x86-64

修改镜像地址

虚拟机器centos7无法识别yum 命令异常处理笔记_虚拟机找不到yum命令-CSDN博客

安装常用的命令工具

yum install -y net-tools  vim  wget

配置静态ip

systemctl restart network  # 重启生效

# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="node"
BROWSER_ONLY="no"
BOOTPROTO="static"  
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.110.143
NETMASK=255.255.255.0
GATEWAY=192.168.110.2
DNS1=8.8.8.8
DNS2=8.8.4.4
UUID="0539496e-433b-4973-9618-d721fb5592da"

3.修改用户名和hosts

hostnamectl set-hostname xxxxx  # 永久修改用户名

参考链接:

【Kubernetes】(K8S)彻底卸载详细教程_卸载kubernetes-CSDN博客

在 Linux 系统中安装并设置 kubectl | Kubernetes

安装 kubeadm | Kubernetes

关闭防火前和交换分区

1.确保每个节点上 MAC 地址和 product_uuid 的唯一性 

  • 你可以使用命令 ip link 或 ifconfig -a 来获取网络接口的 MAC 地址
  • 可以使用 sudo cat /sys/class/dmi/id/product_uuid 命令对 product_uuid 校验

一般来讲,硬件设备会拥有唯一的地址,但是有些虚拟机的地址可能会重复。 Kubernetes 使用这些值来唯一确定集群中的节点。 如果这些值在每个节点上不唯一,可能会导致安装失败。

2. 在所有节点上关闭防护墙与核心防护,并且关闭swap交换

  • 交换分区的配置。kubelet 的默认行为是在节点上检测到交换内存时无法启动。 kubelet 自 v1.22 起已开始支持交换分区。自 v1.28 起,仅针对 cgroup v2 支持交换分区; kubelet 的 NodeSwap 特性门控处于 Beta 阶段,但默认被禁用。
  • 如果 kubelet 未被正确配置使用交换分区,则你必须禁用交换分区。 例如,sudo swapoff -a 将暂时禁用交换分区。要使此更改在重启后保持不变,请确保在如 /etc/fstabsystemd.swap 等配置文件中禁用交换分区,具体取决于你的系统如何配置。

安装 kubeadm | Kubernetes

systemctl stop firewalld  # 关闭防火墙
systemctl disable firewalld #禁止开启启动# 关闭交换分区
swapoff -a         #交换分区必须要关闭  重启失效
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久关闭swap分区以下指令适用于 Kubernetes 1.28。# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

转发 IPv4 并让 iptables 看到桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFsudo modprobe overlay
sudo modprobe br_netfilter# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo 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 参数而不重新启动
sudo sysctl --system

通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:
 

lsmod | grep br_netfilter
lsmod | grep overlay

通过运行以下指令确认 net.bridge.bridge-nf-call-iptablesnet.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward

k8s集群安装

如果没有说明是全部节点都执行

安装运行容器Containerd

安装容器时 不同的版本有不同的要求;查看官方文档大概意思是,1.24.版本以后有大的变动,移除了docker的集成支持。

容器运行时 | Kubernetes

参考: 轻量级容器管理工具Containerd的两种安装方式 - 只为心情愉悦 - 博客园

移除本机已安装的容器
yum remove containerd.ioyum install -y yum-utils# 配置docker yum 源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装containerd
yum install -y containerd.io安装成功后 移除  默认配置
mv /etc/containerd/config.toml  /tmp
重置 containerd 配置,然后相应地设置上述配置参数。
containerd config default > /etc/containerd/config.toml

配置 systemd cgroup 驱动

结合 runc 使用 systemd cgroup 驱动,在 /etc/containerd/config.toml 中设置:

# vi  /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]...[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]SystemdCgroup = true#重载沙箱(pause)镜像 
[plugins."io.containerd.grpc.v1.cri"]# sandbox_image = "registry.k8s.io/pause:3.2"  #注释sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.9"  # 替换为

 参考:k8s安装文档v1.28.10版本_kubeadm 1.28.10-CSDN博客

重启容器: systemctl restart containerd
查看容器状态:systemctl status containerd  

设置开启启动: systemctl enable containerd

注意:如果有报错需要先解决报错问题,否则后面还会有问题

安装 kubeadm、kubelet 和 kubectl 

服务安装

你需要在每台机器上安装以下的软件包:

  • kubeadm:用来初始化集群的指令。

  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。

  • kubectl:用来与集群通信的命令行工具。

采用yum的安装方式 指定镜像库,指定版本v1.28.15

# 这会覆盖 /etc/yum.repos.d/kubernetes.repo 中现存的所有配置
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF
--------- 只配置一个即可,失败在尝试其他的
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[Kubernetes]
name=Kubernetes v1.28 (Stable) (rpm)
type=rpm-md
baseurl=https://download.opensuse.org/repositories/isv:/kubernetes:/core:/stable:/v1.28/rpm/
gpgcheck=1
gpgkey=https://download.opensuse.org/repositories/isv:/kubernetes:/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
enabled=1
EOF
-----------------------
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF原文链接:https://blog.csdn.net/weixin_40136446/article/details/137007671#安装命令  可能会失败,不管是阿里云源还是官方文档的源,可以多次尝试,三个yum 都成功过
yum install -y kubelet-1.28.15 kubeadm-1.28.15 kubectl-1.28.15注意:yum install -y kubelet  kubeadm  kubectl   -- 会安装1.28的最新版本 1.28.15#如果执行失败 添加 --disableexcludes=kubernetes  再次尝试
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes以上都失败 可以先yum update  后在执行安装
查看可用的版本
[root@k8smaster2 ~]# yum list kubelet --showduplicates |grep 1.28
kubelet.x86_64                   1.28.0-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.1-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.2-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.3-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.4-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.5-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.6-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.7-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.8-150500.1.1                    kubernetes
kubelet.x86_64                   1.28.9-150500.2.1                    kubernetes
kubelet.x86_64                   1.28.10-150500.1.1                   kubernetes
kubelet.x86_64                   1.28.11-150500.1.1                   kubernetes
kubelet.x86_64                   1.28.12-150500.1.1                   kubernetes
kubelet.x86_64                   1.28.13-150500.1.1                   kubernetes
kubelet.x86_64                   1.28.14-150500.2.1                   kubernetes
kubelet.x86_64                   1.28.15-150500.1.1                   kubernetes服务名添加上x86_64在执行 后执行成功
yum install -y kubelet.x86_64
yum install -y kubeadm.x86_64
yum install -y kubectl.x86_64#开机启动并启动
设置 开机启动systemctl enable kubelet 
启动服务 systemctl start kubelet  # 这一步服务是无法正常启动的

原文链接:https://blog.csdn.net/qq_36838700/article/details/141165373

初始化 (仅仅主机执行)

方式一:

执行: kubectl edit cm kubelet-config -n kube-system   

修改或新增 :   cgroupDriver: systemd

vim /etc/sysconfig/kubelet 
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

kubeadm init --apiserver-advertise-address=192.168.110.135 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=1.28.15 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///run/containerd/containerd.sock

方式二:获取默认配置文件修改

修改完配置文件后 执行命令: kubeadm init --config kubeadm.yaml 

# 获取kubead默认配置文件 
kubeadm config print init-defaults --component-configs KubeletConfiguration > kubeadm.yaml# 配置大部分不用修改  
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.110.135  # 修改为自己的主节点ipbindPort: 6443
nodeRegistration:criSocket: unix:///var/run/containerd/containerd.sock  # 可能需要修改前面容器使用containerd,这个里配置成这个imagePullPolicy: IfNotPresentname: k8smaster    ## 主机节点名称taints: null
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers  ## 替换为阿里云
kind: ClusterConfiguration
kubernetesVersion: 1.28.15   ## 版本号与自己的实际版本对应
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: 10.244.0.0/16 
scheduler: {}
---
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:anonymous:enabled: falsewebhook:cacheTTL: 0senabled: truex509:clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:mode: Webhookwebhook:cacheAuthorizedTTL: 0scacheUnauthorizedTTL: 0s
cgroupDriver: systemd   ##  修改为systemd 或新增
clusterDNS:
- 10.96.0.10
clusterDomain: cluster.local
containerRuntimeEndpoint: ""
cpuManagerReconcilePeriod: 0s
evictionPressureTransitionPeriod: 0s
fileCheckFrequency: 0s
healthzBindAddress: 127.0.0.1
healthzPort: 10248
httpCheckFrequency: 0s
imageMinimumGCAge: 0s
kind: KubeletConfiguration
logging:flushFrequency: 0options:json:infoBufferSize: "0"verbosity: 0
memorySwap: {}
nodeStatusReportFrequency: 0s
nodeStatusUpdateFrequency: 0s
rotateCertificates: true
runtimeRequestTimeout: 0s
shutdownGracePeriod: 0s
shutdownGracePeriodCriticalPods: 0s
staticPodPath: /etc/kubernetes/manifests
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s
如果修改的是配置文件,可以先执行这一步 然后在执行初始化命令
[root@k8smaster2 ~]# kubeadm config images pull --config kubeadm.yaml
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.15
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.15
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.15
[config/images] Pulled registry.aliyuncs.com/google_containers/kube-proxy:v1.28.15
[config/images] Pulled registry.aliyuncs.com/google_containers/pause:3.9
[config/images] Pulled registry.aliyuncs.com/google_containers/etcd:3.5.15-0
[config/images] Pulled registry.aliyuncs.com/google_containers/coredns:v1.10.1
[root@k8smaster2 ~]# 
初始化执行成功结果
根据提示执行

 原文链接:https://blog.csdn.net/qq_36838700/article/details/141165373

######按照提示继续######
## init完成后第一步:复制相关文件夹
To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config## 导出环境变量
Alternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.conf

如果假如集群的命令过期 可以通过下面的命令获取集群添加节点的命令

kubeadm token create --print-join-command

初始化完成后检查

查看服务运行状态 

systemctl status kubelet

[root@k8smaster2 ~]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node AgentLoaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)Drop-In: /usr/lib/systemd/system/kubelet.service.d└─10-kubeadm.confActive: active (running) since 三 2025-01-08 18:05:03 CST; 3min 15s agoDocs: https://kubernetes.io/docs/Main PID: 21616 (kubelet)Tasks: 11Memory: 34.9MCGroup: /system.slice/kubelet.service└─21616 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config...1月 08 18:07:33 k8smaster2 kubelet[21616]: E0108 18:07:33.542971   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:38 k8smaster2 kubelet[21616]: E0108 18:07:38.545528   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:43 k8smaster2 kubelet[21616]: E0108 18:07:43.546429   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:48 k8smaster2 kubelet[21616]: E0108 18:07:48.548064   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:53 k8smaster2 kubelet[21616]: E0108 18:07:53.549266   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:07:58 k8smaster2 kubelet[21616]: E0108 18:07:58.550236   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:08:03 k8smaster2 kubelet[21616]: E0108 18:08:03.551508   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:08:08 k8smaster2 kubelet[21616]: E0108 18:08:08.554728   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:08:13 k8smaster2 kubelet[21616]: E0108 18:08:13.556942   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
1月 08 18:08:18 k8smaster2 kubelet[21616]: E0108 18:08:18.559070   21616 kubelet.go:2874] "Container runtime network not ready" networkReady="NetworkReady=false...nitialized"
Hint: Some lines were ellipsized, use -l to show in full.
[root@k8smaster2 ~]# 

kubectl get nodes

kubectl get pods -n kube-system

服务状态为not ready,

查看日志命令  kubectl describe po calico-node-2kr9c -n kube-system

装网络插件

# 拉取对应的镜像
vi images.sh
#!/bin/bash
images=(flannel:v0.25.5flannel-cni-plugin:v1.5.1-flannel1
)
for imageName in ${images[@]} ; doctr -n k8s.io image pull registry.cn-shenzhen.aliyuncs.com/kube-image-dongdong/$imageName
donechmod 755 images.sh
执行 images.sh 脚本后执行下面步骤# 上传镜像
ctr -n k8s.io image tag registry.cn-shenzhen.aliyuncs.com/kube-image-dongdong/flannel-cni-plugin:v1.5.1-flannel1 docker.io/flannel/flannel-cni-plugin:v1.5.1-flannel1ctr -n k8s.io image tag registry.cn-shenzhen.aliyuncs.com/kube-image-dongdong/flannel:v0.25.5  docker.io/flannel/flannel:v0.25.5原文链接:https://blog.csdn.net/qq_36838700/article/details/141165373

完整部署一套k8s-v.1.28.0版本的集群-CSDN博客

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl apply -f  kube-flannel.yml

##  查看pods状态 发现还是在pending
[root@k8smaster2 ~]# kubectl get pods -A
NAMESPACE      NAME                                 READY   STATUS              RESTARTS   AGE
kube-flannel   kube-flannel-ds-6sdld                0/1     Init:ErrImagePull   0          75s
kube-system    coredns-66f779496c-5d6sr             0/1     Pending             0          22m
kube-system    coredns-66f779496c-lwdgc             0/1     Pending             0          22m
kube-system    etcd-k8smaster2                      1/1     Running             0          22m
kube-system    kube-apiserver-k8smaster2            1/1     Running             0          22m
kube-system    kube-controller-manager-k8smaster2   1/1     Running             0          22m
kube-system    kube-proxy-vtxcc                     1/1     Running             0          22m
kube-system    kube-scheduler-k8smaster2            1/1     Running             0          22m

问题排查

查看日志

kubectl describe po kube-flannel-ds-6sdld -n kube-flannel  

1. 镜像中找不到该版本(注意:前面image.sh脚本下载的是该组件,版本不一样)

  Failed     84s                    kubelet            Failed to pull image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to pull and unpack image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to resolve reference "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to do request: Head "https://registry-1.docker.io/v2/flannel/flannel-cni-plugin/manifests/v1.6.0-flannel1": dial tcp 128.242.245.244:443: connect: connection refusedNormal   BackOff    44s (x4 over 2m)       kubelet            Back-off pulling image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1"Warning  Failed     44s (x4 over 2m)       kubelet            Error: ImagePullBackOffNormal   Pulling    32s (x4 over 3m11s)    kubelet            Pulling image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1"Warning  Failed     10s (x4 over 2m50s)    kubelet            Error: ErrImagePullWarning  Failed     10s                    kubelet            Failed to pull image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to pull and unpack image "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to resolve reference "docker.io/flannel/flannel-cni-plugin:v1.6.0-flannel1": failed to do request: Head "https://registry-1.docker.io/v2/flannel/flannel-cni-plugin/manifests/v1.6.0-flannel1": dial tcp 98.159.108.58:443: connect: connection refused

解决方法:

1. 修改kube-flannel.yml 中的版本,与images.sh 执行的版本相同

2.修改拉去镜像为本地拉取

 vim kube-flannel.yml

 

修改后先卸载 在安装

kubectl delete -f  kube-flannel.yml

kubectl apply -f  kube-flannel.yml

重新执行后结果正常

查看日志命令

journalctl -xeu kubelet

查看报错容器信息

kubectl describe po calico-node-2kr9c -n kube-system

发现pod的状态为ErrImagePull 或者 ImagePullBackOff,这两个状态都表示镜像拉取失败

其他参考文档:

kubernetes(1.28)配置flannel:kubelet无法拉取镜像(NotReady ImagePullBackOff)同时解决k8s配置harbor私人镜像仓库问题_flannel镜像拉取失败-CSDN博客

centos7升级内核版本到5.19.0 - sky_cheng - 博客园

Kubernetes[k8s] 使用containerd,安装1.27.3 - 1.28.0安装教程_kubernetes containerd 安装-CSDN博客

This system is not registered with an entitlement server. You can use subscription-manager to regist-CSDN博客

 

相关文章:

裸机器搭建k8s部署 1.28.10版本

问了搭建k8s集群踩了很多坑&#xff0c;问题主要出现在网络插件处&#xff0c;因此主要是master节点操作问题。重新走一下流程整理一下笔记。 目录 虚拟机准备 虚拟机 系统版本信息 修改镜像地址 配置静态ip 关闭防火前和交换分区 转发 IPv4 并让 iptables 看到桥接流量…...

np.ndarray 是 NumPy 库中的核心数据结构

np.ndarray 是 NumPy 库中的核心数据结构&#xff0c;代表一个多维数组&#xff08;或称为矩阵&#xff09;。它是一个高效的容器&#xff0c;用于存储和操作数据&#xff0c;可以包含任意类型的数据&#xff08;整数、浮点数、布尔值等&#xff09;。 主要特点&#xff1a; …...

全新免押租赁系统打造便捷安全的租赁体验

内容概要 全新免押租赁系统的推出&#xff0c;标志着租赁行业的一次重大变革。这个系统的最大特点就是“免押金”&#xff0c;大大减轻了用户在租赁过程中的经济负担。从此&#xff0c;不再需要为一部手机或其他商品支付高昂的押金&#xff0c;用户只需通过简单的信用评估&…...

C语言——结构体,位段,枚举和联合

目录 前言 结构体 1含义 2语法 3匿名结构体 4结构体自引用 5结构体的定义与初始化 6内存对齐 7修改对齐数 8结构体传参 位段 1含义 2位段的内存分配 ​编辑3位段的问题 4位段的应用 枚举 1含义 2定义 3枚举优点 4枚举使用 联合 1含义 2定义 3特点 4计…...

现场展示deepseek VS openAI o1模型大对比

DeepSeek-V3 模型的发布在 AI 领域引起了广泛关注。作为一款拥有 6850 亿参数的混合专家&#xff08;MoE&#xff09;语言模型&#xff0c;DeepSeek-V3 在多个基准测试中表现出色&#xff0c;甚至超越了一些闭源模型。其在 Aider 代码能力排行榜上的正确率达到 48.4%&#xff0…...

深度解析 tanh ⁡ tanh 激活函数

1. 引言 在现代深度学习中&#xff0c;激活函数&#xff08;Activation Function&#xff09;是神经网络的核心组件之一。它的主要作用是引入非线性&#xff0c;从而使神经网络能够学习和表示复杂的非线性关系。如果没有激活函数&#xff0c;神经网络的输出将只是输入的线性组…...

【Golang 面试题】每日 3 题(二十五)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

Unity Canvas中显示粒子特效

首先在场景中新建一个粒子特效 修改一下参数 1.改变粒子特效的渲染层级,层级修改为UI层,由UI相机渲染 使用粒子特效的Sorting Layer ID和Order In Layer,Sorting Layer ID设置为UI(如果没有UI层则新建就好了),对UI进行排序 对于要显示在前的UI组件添加Canvas组件,设置O…...

excel精简使用工具

1.获取sheet1的行填充到sheet2的列 希望在 Excel 中使用 INDEX 函数从不同的列中提取数据&#xff0c;并且每一行都引用不同的列。为了实现这个目标&#xff0c;你可以使用 COLUMN 函数来动态获取列的偏移量。 为了避免手动输入每个单元格的公式&#xff0c;你可以使用以下公…...

上手体验微软全新整合的王炸平台Fabric

体验确实不错&#xff0c;微软强大的生态能力。 把可视化&#xff0c;数仓&#xff0c;数据胡&#xff0c;数据工厂&#xff0c;机器学习&#xff0c;数据监控等技术都整合到一个平台了。所有数据全都存储在统一的one lake数据中心&#xff0c;消除数据孤岛问题。而且不同角色可…...

Linux 下 Vim 环境安装踩坑问题汇总及解决方法(重置版)

导航 安装教程导航 Mamba 及 Vim 安装问题参看本人博客&#xff1a;Mamba 环境安装踩坑问题汇总及解决方法&#xff08;初版&#xff09;Linux 下Mamba 及 Vim 安装问题参看本人博客&#xff1a;Mamba 环境安装踩坑问题汇总及解决方法&#xff08;重置版&#xff09;Windows …...

RabbitMQ 可观测性最佳实践

RabbitMQ 简介 RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写&#xff0c;支持多种客户端。它通过使用交换机&#xff08;Exchanges&#xff09;、队列&#xff08;Queues&#xff09;和绑定&#xff08;Bindings&#xff09;来路由消息&#xff…...

束搜索、组束搜索介绍、异同及相关参数

束搜索&#xff08;Beam Search&#xff09;与组束搜索&#xff08;Group Beam Search&#xff09;介绍 束搜索&#xff08;Beam Search&#xff09; 束搜索是一种用于序列生成任务的解码算法&#xff0c;广泛应用于自然语言处理领域&#xff0c;如机器翻译、语音识别等。它的…...

深度学习与计算机视觉 (博士)

文章目录 零、计算机视觉概述一、深度学习相关概念1.学习率η2.batchsize和epoch3.端到端(End-to-End)、序列到序列(Seq-to-Seq)4.消融实验5.学习方式6.监督学习的方式(1)有监督学习(2)强监督学习(3)弱监督学习(4)半监督学习(5)自监督学习(6)无监督学习(7)总结&#xff1a;不同…...

新时期下k8s 网络插件calico 安装

1、k8s master节点初始化完毕以后一直处于notreadey状态&#xff0c;一直怀疑是安装有问题或者是初始化有问题&#xff08;当然&#xff0c;如果真有问题要先解决这些问题&#xff09;&#xff0c;经过不断探索才发现是网络插件没有安装导致的&#xff0c;根据建议安装calico插…...

14:00面试,15:00就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到2月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

Improving Language Understanding by Generative Pre-Training GPT-1详细讲解

Improving Language Understanding by Generative Pre-Training 2018.06 GPT-1 0.有监督、半监督、无监督 CV&#xff1a;ImageNet pre-trained model NLP&#xff1a;pre-trained model? 在计算机视觉中任务包含分类、检测、分割&#xff0c;任务类别数少&#xff0c;对应…...

Docker: 现代开发的利器,从入门到实践

引言 在现代软件开发中&#xff0c;开发人员面对的环境多种多样&#xff0c;不同操作系统、依赖、库版本等都会影响应用程序的正常运行。传统的开发和部署流程复杂且易错&#xff0c;"在我机器上可以跑"的困扰让许多开发者头疼。而 Docker&#xff0c;一个容器化技术…...

nuxt3 env环境变量

加载env文件 在package.json中指定运行某个env文件&#xff1a;nuxt build --dotenv .env.production 具体如下&#xff1a; "scripts": {"build-dev": "nuxt build --dotenv .env.test","build-prd": "nuxt build --dotenv .e…...

Vue3 自定义插件(plugin)

文章目录 Vue3 自定义插件(plugin)概述用法 Vue3 自定义插件(plugin) 概述 插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。 用法 Vue3 插件有2种定义方式&#xff1a; 对象形式。对象中有install方法。函数形式。函数本身就是安装方法&#xff0c;其中&#xff…...

HTB:Bank[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 提取出靶机TCP开放端口 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用curl对域名进行访问…...

Elastic-Job相关

文档参考视频&#xff1a;09_SpringBoot案例演示_哔哩哔哩_bilibili 一、Elastic-Job介绍 Elastic-Job 是一个轻量级、分布式的任务调度框架&#xff0c;旨在解决分布式环境下的定时任务调度问题。 1.1. Elastic-Job 的核心组件 Elastic-Job 是由多个核心组件构成的&#x…...

Ruby语言的正则表达式

Ruby语言的正则表达式详解 正则表达式&#xff08;Regular Expressions&#xff0c;简称Regex&#xff09;是一种强大的文本处理工具&#xff0c;它可以用来匹配、搜索、替换字符串中的模式。在Ruby语言中&#xff0c;正则表达式的使用非常灵活&#xff0c;并且具有良好的可读…...

“深入浅出”系列之QT:(5)Json数据格式处理详解

一、JSON数据结构 JSON主要有两种数据结构&#xff1a;JSON对象和JSON数组。 JSON对象&#xff1a;由键值对组成&#xff0c;每个键&#xff08;key&#xff09;是字符串&#xff0c;值&#xff08;value&#xff09;可以是字符串、数字、布尔值、null、JSON数组或JSON对象。对…...

cursor试用出现:Too many free trial accounts used on this machine 的解决方法

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…...

Calico BGP网络问题

Calico BGP网络问题 文章目录 Calico BGP网络问题排除步骤calico-node 正常运行&#xff0c;但在 describe 中有警告信息错误现象 ip route 路由表中删除 blackhole后又会自动生成网卡选择无效导致 calico 的 pod 内容器未就绪问题现象原因分析问题解决方式一&#xff1a;直接修…...

Jenkins-部署-windows

Jenkins-部署-windows 一: Jenkins 资料 一: Jenkins 资料...

benchANT 性能榜单技术解读 Part 1:写入吞吐

近期&#xff0c;国际权威数据库性能测试榜单 benchANT 更新了 Time Series: Devops&#xff08;时序数据库&#xff09;场景排名&#xff0c;KaiwuDB 数据库在 xsmall 和 small 两类规格下的时序数据写入吞吐、查询吞吐、查询延迟、成本效益等多项指标刷新榜单原有数据纪录。在…...

【 算法设计与分析-回顾算法知识点】福建师范大学数学与计算机科学学院 2006 — 2007学年第二学期考试 A 卷

一&#xff0e;填空题&#xff08;每空2分&#xff0c;共30分&#xff09; 1&#xff0e;算法的时间复杂性指算法中 元运算 的执行次数。 2&#xff0e;在忽略常数因子的情况下&#xff0c;O、和三个符号中&#xff0c; O 提供了算法运行时间的一个上界。 3&#xff0e;设Dn…...

【25考研】川大计算机复试情况,重点是啥?怎么准备?

24年进入复试的同学中&#xff0c;有10位同学的复试成绩为0分。具体是个人原因还是校方原因&#xff0c;还尚不明确。但是C哥提醒&#xff0c;一定要认真复习&#xff01;复试完后不要跟任何人讨论有关复试的题目及细节&#xff01; 一、复试内容 四川大学复试内容较多&#xf…...

设计模式-结构型-适配器模式

在软件开发中&#xff0c;随着系统的不断扩展和模块的不断增加&#xff0c;往往会遇到不同模块之间接口不兼容的情况。此时&#xff0c;如果我们能通过某种方式将一个接口转化为另一个接口&#xff0c;那么开发工作将变得更加灵活和高效。适配器模式&#xff08;Adapter Patter…...

el-table表格合并某一列

需求&#xff1a;按照下图完成单元格合并&#xff0c;数据展示 可以看到科室列是需要合并的 并加背景色展示&#xff1b;具体代码如下&#xff1a; <el-tableref"tableA":data"tableDataList":header-cell-style"{ backgroundColor: #f2dcdb, col…...

分布式Id方案选择

分布式 ID 方案选择 在当今分布式系统日益盛行的背景下&#xff0c;分布式 ID 生成方案的选择成为了众多开发者关注的焦点。一个优秀的分布式 ID 方案&#xff0c;不仅能够确保生成的 ID 全局唯一&#xff0c;避免数据冲突&#xff0c;还能在高并发、大规模的分布式环境中保持…...

uni app 写的 小游戏,文字拼图?文字拼写?不知道叫啥

从下方的偏旁部首中选在1--3个组成上面文章中的文字&#xff0c;完成的文字标红 不喜勿喷 《满江红》 其中用到了两个文件 strdata.json parameters.json 这两个文件太大 放到资源中了 资源文件 <template><view class"wenzi_page_main"><view c…...

【xLua】xLua-master签名、加密Lua文件

GitHub - Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. 如果你想在项目工程上操作&#xff0c;又发现项目工程并没导入Tools&#xff0c;可以从xLua-master工程拷贝到项目工程Assets…...

Yolo11改进:注意力改进|Block改进|ESSAformer,用于高光谱图像超分辨率的高效Transformer|即插即用

摘要 一、论文介绍 高光谱图像超分辨率的重要性:高光谱成像技术通过密集采样光谱特征,为材料区分提供丰富的光谱和空间结构信息,广泛应用于各领域。高光谱图像超分辨率(HSI-SR)旨在从低分辨率HSI生成高分辨率HSI。传统方法的局限性:传统方法依赖手工制作的先验,如低秩近…...

第二十八周学习周报

目录 摘要Abstract1 GFPGAN1.1 总体结构1.2 实验研究1.3 代码分析 总结 摘要 本周主要的学习内容是GFPGAN模型。GFPGAN是一种基于生成对抗网络(GAN)的模型&#xff0c;其利用封装在预训练的人脸GAN中的丰富多样的先验进行人脸图像的修复。这种生成面部先验&#xff08;GFP&…...

太速科技-418-基于AD9361 +ZYNQ7020 的软件无线电 SDR 套件

基于AD9361 ZYNQ7020 的软件无线电 SDR 套件 一、板卡信息 ● ZYNQ芯片采用XC7Z020&#xff0c;逻辑容量更大&#xff0c;支持更大的逻辑设计&#xff1b; ● 内存采用两片512M DDR3&#xff0c;共1GByte&#xff0c;更大容量。 ● 支持千兆网口&#xff0c;支持ZEDFMCO…...

STM32裸机开发转FreeRTOS教程

目录 1. 简介2. RTOS设置&#xff08;1&#xff09;分配内存&#xff08;2&#xff09;查看任务剩余空间&#xff08;3&#xff09;使用osDelay 3. 队列的使用&#xff08;1&#xff09;创建队列&#xff08;1&#xff09;直接传值和指针传值&#xff08;2&#xff09;发送/接收…...

swagger导出json

要将 Swagger(或者 OpenAPI)文档导出为 JSON 文件,通常有几种常见的方法,具体取决于你使用的 Swagger 工具(如 Swagger UI、Swagger Editor、Swagger Hub 等)。下面列出了几种常见的导出 JSON 文件的方法。 1. 通过 Swagger UI 导出 JSON 文件 如果你在使用 Swagger UI…...

大纲笔记幕布的替换

文章目录 前言类似的大纲软件探索 DynalistLogseq通过国内代码仓库建立 Git 仓库Logseq 的使用PC 端安卓端Git 操作Termux git 步骤Termux 的桌面组件&#xff1a;Termux widget 报错参考 前言 之前我一直用幕布&#xff0c;买了三年&#xff0c;奈何要过期了&#xff0c;又三…...

【Excel/WPS】根据平均值,生成两列/多列指定范围的随机数/随机凑出两列数据

原理就是通过随机生成函数和平均值函数。 适用场景&#xff1a;在总体打分后&#xff0c;需要在小项中随机生成小分数 第一列&#xff1a;固定的平均值A2第二列&#xff1a; RANDBETWEEN(A2-10,A210)第三列&#xff1a;根据第二列用平均值函数算除 A2*2-B2这是随机值1的公式&am…...

单元测试MockitoExtension和SpringExtension

1. MockitoExtension MockitoExtension 是 JUnit 5 提供的一个扩展&#xff0c;用于支持 Mockito 的集成。它可以自动初始化标记为 Mock、InjectMocks 等的 Mockito 对象&#xff0c;而不需要显式调用 MockitoAnnotations.initMocks(this)。 主要特点: 自动初始化 Mock、Spy…...

springboot+vue使用easyExcel实现导出功能

vue部分 // 导出计算数据exportDataHandle(id) {this.$http({url: this.$http.adornUrl(/xxx/xxx/exportCalDataExcel),method: post,data: this.$http.adornData({id: id}),responseType: blob, // 重要&#xff1a;告诉axios我们希望接收二进制数据}).then(({data}) > {c…...

优化提示词改善答疑机器人回答质量

1.通过优化提示词来调整大模型的回答 1.1使用场景 默认提示词无法满足业务要求。 回答的内容太简单/困难&#xff0c;输出内容/格式/语气达不到要求等 1.2llama-index 的提示词模版 1.2.1llama-index 的默认模板 from llama_index.llms.dashscope import DashScope from lla…...

Spring AMQP-保证消费者消息的可靠性

为什么要保证消息的可靠性&#xff1f; 当MQ向消费者发送一个消息之后需要得到消费者的状态&#xff0c;因为消息并不一定就真的被消费者给消费了&#xff0c;可能在消费的过程中出现了一些意外&#xff0c;比如 1. 网络问题 2. 消息转换有问题 3. 消费者本身的业务处理有问题 …...

32单片机从入门到精通之数据处理——数学运算(十三)

无论你身在何处&#xff0c;无论你面对什么困难&#xff0c;只要对自己充满信心&#xff0c;坚持不懈地努力&#xff0c;相信自己的能力&#xff0c;你就能战胜任何困难&#xff0c;实现自己的目标。不要害怕失败&#xff0c;因为失败并不意味着你没有能力成功&#xff0c;只是…...

latex_学习

参考&#xff1a; https://www.overleaf.com/learn/latex/Free_online_introduction_to_LaTeX_(part_3)https://www.overleaf.com/learn/latex/Free_online_introduction_to_LaTeX_(part_2)https://www.overleaf.com/learn/latex/Free_online_introduction_to_LaTeX_(part_1) …...

小程序textarea组件键盘弹起会遮挡住输入框

<textarea value"{{remark}}" input"handleInputRemark" ></textarea> 如下会有遮挡&#xff1a; 一行代码搞定 cursor-spacing160 修改后代码 <textarea value"{{remark}}" input"handleInputRemark" cursor-spacin…...

vue之element-ui文件上传(二)

一、点击上传&#xff0c;使用默认的action上传&#xff0c;添加校验&#xff0c;上传成功后&#xff0c;去除校验&#xff1a; <el-form-item label"文件md5" prop"fileMd5"><el-uploadv-if"!form.fileMd5"v-model"form.fileMd5&…...