官方文档k8s1.30安装部署高可用集群,kubeadm安装Kubernetes1.30最新版本

news2024/11/25 10:28:01

文章目录

  • 节点架构
  • 一、准备开始(每一台机器都执行)
    • 1️⃣ 检查所需端口(可以直接关闭防火墙放开所有端口)
      • 端口和协议
        • 控制面
        • 工作节点
      • 关闭防火墙
      • 关闭 SELinux
    • 2️⃣ 安装containerd容器
      • containerd部署
        • containerd切换为国内源
    • 3️⃣ 设置`/etc/hosts`
  • 二、安装 kubeadm、kubelet 和 kubectl(每一台机器都执行)
  • 三、使用 kubeadm 创建集群
    • 初始化控制平面节点
    • 初始化高可用节点
    • 安装网络插件
    • 加入主节点和 node 节点
      • 重新生成加入节点命令
        • 加入 node 节点
        • 加入 master 节点
  • 四、安装图形化界面
  • Tpis:
    • container镜像解决方案
    • master控制节点踢出后重新加入集群发现etcd报错
    • helm安装

节点架构

# 负载均衡,负载三个主节点
172.25.14.100 lbserver

# 控制节点
172.25.14.101 master1
172.25.14.102 master2
172.25.14.103 master3

# 服务运行节点
172.25.14.111 node1
172.25.14.112 node2
172.25.14.113 node3
172.25.14.114 node4
172.25.14.115 node5

一、准备开始(每一台机器都执行)

  • 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令。
  • 每台机器 2 GB 或更多的 RAM(如果少于这个数字将会影响你应用的运行内存)。
  • CPU 2 核心及以上。
  • 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)。
  • 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。
    # 确保每个节点上 MAC 地址和 product_uuid 的唯一性
    ip link # 获取网络接口的 MAC 地址
    sudo cat /sys/class/dmi/id/product_uuid # 校验 product_uuid 唯一性
    
  • 交换分区的配置。kubelet 的默认行为是在节点上检测到交换内存时无法启动。 kubelet 自 v1.22 起已开始支持交换分区。自 v1.28 起,仅针对 cgroup v2 支持交换分区; kubelet 的 NodeSwap 特性门控处于 Beta 阶段,但默认被禁用。
    # 关闭交换分区
    sudo swapoff -a
    
    # 永久关闭交换分区
    vim /etc/fstab
    
    在这里插入图片描述

1️⃣ 检查所需端口(可以直接关闭防火墙放开所有端口)

端口和协议

当你在一个有严格网络边界的环境里运行 Kubernetes,例如拥有物理网络防火墙或者拥有公有云中虚拟网络的自有数据中心, 了解 Kubernetes 组件使用了哪些端口和协议是非常有用的。

控制面
协议方向端口范围目的使用者
TCP入站6443Kubernetes API server所有
TCP入站2379-2380etcd server client APIkube-apiserver, etcd
TCP入站10250Kubelet API自身, 控制面
TCP入站10259kube-scheduler自身
TCP入站10257kube-controller-manager自身

尽管 etcd 的端口也列举在控制面的部分,但你也可以在外部自己托管 etcd 集群或者自定义端口。

工作节点
协议方向端口范围目的使用者
TCP入站10250Kubelet API自身, 控制面
TCP入站30000-32767NodePort Services†所有

所有默认端口都可以重新配置。当使用自定义的端口时,你需要打开这些端口来代替这里提到的默认端口。

一个常见的例子是 API 服务器的端口有时会配置为 443。或者你也可以使用默认端口, 把 API 服务器放到一个监听 443 端口的负载均衡器后面,并且路由所有请求到 API 服务器的默认端口。

关闭防火墙

# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

关闭 SELinux

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

2️⃣ 安装containerd容器

启用 IPv4 数据包转发

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo 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

使用以下命令验证 net.ipv4.ip_forward 是否设置为 1:

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

containerd部署

github下载
蓝奏云下载:https://grafies.lanzoum.com/iDTv81xw593e
蓝奏云所有文件下载地址:https://grafies.lanzoum.com/b0hbz5joh 密码:dvl2

# 上传到服务并解压缩到/usr/local 下
tar Cxzvf /usr/local containerd-1.7.16-linux-amd64.tar.gz

# 下载服务启动文件
wget -O /etc/systemd/system/containerd.service https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
systemctl daemon-reload
systemctl enable --now containerd

# 安装runc
wget https://github.com/opencontainers/runc/releases/download/v1.1.12/runc.amd64
sudo install -m 755 runc.amd64 /usr/local/sbin/runc

# 安装CNI插件
wget https://github.com/containernetworking/plugins/releases/download/v1.4.1/cni-plugins-linux-amd64-v1.4.1.tgz
sudo mkdir -p /opt/cni/bin
sudo tar Cxzvf /opt/cni/bin/ cni-plugins-linux-amd64-v1.4.1.tgz
containerd切换为国内源

如果kubeadm init有问题,可以删除/etc/containerd/config.toml文件

# 创建containerd目录
mkdir /etc/containerd

#mv /etc/containerd/config.toml /etc/containerd/config.toml.bak

# 恢复默认配置文件
containerd config default > /etc/containerd/config.toml

# 切换为国内源
sed -i 's/registry.k8s.io/registry.aliyuncs.com\/google_containers/' /etc/containerd/config.toml

# 重启服务
systemctl daemon-reload
systemctl restart containerd

3️⃣ 设置/etc/hosts

cat <<EOF | sudo tee /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.14.101 master1
172.25.14.102 master2
172.25.14.103 master3

172.25.14.111 node1
172.25.14.112 node2
172.25.14.113 node3
172.25.14.114 node4
172.25.14.115 node5
EOF

二、安装 kubeadm、kubelet 和 kubectl(每一台机器都执行)

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

  • kubeadm:用来初始化集群的指令。
  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
  • kubectl:用来与集群通信的命令行工具。

添加 yum仓库,修改 v1.30版本可以安装其他版本

# 此操作会覆盖 /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.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF

安装 kubelet、kubeadm 和 kubectl,并启用 kubelet 以确保它在启动时自动启动

sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet

kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环。


三、使用 kubeadm 创建集群

拉取需要的镜像

kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

初始化控制平面节点

# 创建初始化配置文件
kubeadm config print init-defaults > /etc/kubernetes/init-default.yaml

# 修改为国内阿里源
sed -i 's/registry.k8s.io/registry.aliyuncs.com\/google_containers/' /etc/kubernetes/init-default.yaml

# 设置 apiServerIP 地址. 请自行替换172.25.14.101为自己宿主机IP
sed -i 's/1.2.3.4/172.25.14.101/' /etc/kubernetes/init-default.yaml

初始化单节点 kubeadm init --image-repository registry.aliyuncs.com/google_containers


初始化高可用节点

利用 kubeadm 创建高可用集群

你可以使用 --kubernetes-version 标志来设置要使用的 Kubernetes 版本。 建议将 kubeadm、kebelet、kubectl 和 Kubernetes 的版本匹配。

这个 --control-plane-endpoint 标志应该被设置成负载均衡器的地址或 DNS 和端口。

这个 --upload-certs 标志用来将在所有控制平面实例之间的共享证书上传到集群。 如果正好相反,你更喜欢手动地通过控制平面节点或者使用自动化工具复制证书, 请删除此标志并参考如下部分证书分配手册。

kubeadm init --image-repository registry.aliyuncs.com/google_containers --control-plane-endpoint "LOAD_BALANCER_DNS:LOAD_BALANCER_PORT" --upload-certs

其中"LOAD_BALANCER_DNS:LOAD_BALANCER_PORT"为api-server负责均衡的IP和端口
如果api-server 负责均衡地址为172.25.14.100:6443

# 代理了下面 api-server 服务地址
172.25.14.101:6443
172.25.14.102:6443
172.25.14.103:6443

完整的高可用初始化命令为

kubeadm init --image-repository registry.aliyuncs.com/google_containers --control-plane-endpoint "172.25.14.100:6443" --upload-certs

初始化完成后出现以下界面
在这里插入图片描述

开始使用集群前,您需要以普通用户身份运行以下命令:

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

或者,如果您是 root 用户,可以直接设置环境变量:

export KUBECONFIG=/etc/kubernetes/admin.conf

接下来,您应该向集群部署一个 Pod 网络。

# 如果你没有令牌,可以通过在控制平面节点上运行以下命令来获取令牌:
kubeadm token list
# 默认情况下,令牌会在 24 小时后过期。如果要在当前令牌过期后将节点加入集群, 则可以通过在控制平面节点上运行以下命令来创建新令牌
kubeadm token create
# 查看集群状态,此时 coredns 服务为Pending状态,我们需要安装网络插件
kubectl get pods --all-namespaces

安装网络插件

蓝奏云所有文件下载地址:https://grafies.lanzoum.com/b0hbz5joh 密码:dvl2

# 进入kubernetes配置文件目录
cd /etc/kubernetes/

# 下载 yaml 文件到kubernetes配置文件目录
wget https://docs.projectcalico.org/manifests/calico.yaml

# 如果上面初始化主节点时修改过POD的IP,去掉注释,替换为修改的pod的IP
kubectl apply -f /etc/kubernetes/calico.yaml

需要修改的地方为,如果上面初始化主节点时修改过POD的IP,去掉注释,替换为修改的pod的IP,我这里没有修改过,所以不用替换
在这里插入图片描述



加入主节点和 node 节点

在 master1 初始化时,有生成的加入 master 节点和 node 节点的命令

You can now join any number of the control-plane node running the following command on each as root:

  kubeadm join master1:6443 --token iain2r.id7zulwl6weslham \
        --discovery-token-ca-cert-hash sha256:3e0a5577e578215df4e7c243e9f843a00382bb6913f0c31b6eec0c3b67369c49 \
        --control-plane --certificate-key c89f1873fe75b408e2eceaad6eeead9400109fbd736112bc50a5d0485ca5272d

Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join master1:6443 --token iain2r.id7zulwl6weslham \
        --discovery-token-ca-cert-hash sha256:3e0a5577e578215df4e7c243e9f843a00382bb6913f0c31b6eec0c3b67369c49 

重新生成加入节点命令

如果已经遗忘,可以使用下面命令重新生成加入节点命令

生成 token,node 节点加入直接执行就可以了

# 生成加入节点的 token
[root@master1 ~]# kubeadm token create --print-join-command
kubeadm join 172.25.14.101:6443 --token iobz8n.rqo9u0yuok99otlj --discovery-token-ca-cert-hash sha256:64d2335ede8c3f8866095888db0b809ba44e2f2208d0861d70cb15ff4586a5b1 
加入 node 节点

在要加入的node 节点执行

[root@node1 tar]# kubeadm join master1:6443 --token fng8dv.8b7bcnosokbx2jjo --discovery-token-ca-cert-hash sha256:3e0a5577e578215df4e7c243e9f843a00382bb6913f0c31b6eec0c3b67369c49
[root@node1 tar]# mkdir ~/.kube
[root@node1 tar]# cp /etc/kubernetes/kubelet.conf  ~/.kube/config
加入 master 节点

如果需要添加master节点,使用 kubeadm init phase upload-certs --upload-certs 重新生成certificate-key(这里需要注意老版本 需要用 kubeadm init phase upload-certs --experimental-upload-certs 生成)

[root@master1 ~]# kubeadm init phase upload-certs --upload-certs
[upload-certs] Storing the certificates in Secret "kubeadm-certs" in the "kube-system" Namespace
[upload-certs] Using certificate key:
c16782bf98ebdaf1ee1592c6d332826f67d579f2fac981c5e72486772adce9ac

然后加 master 节点:用上面生成的 work join 命令和后面生成的生成的--certificate-key 值拼接起来执行

[root@master3 ~]# kubeadm join 172.25.14.101:6443 --token iobz8n.rqo9u0yuok99otlj --discovery-token-ca-cert-hash sha256:64d2335ede8c3f8866095888db0b809ba44e2f2208d0861d70cb15ff4586a5b1 --control-plane  --certificate-key c16782bf98ebdaf1ee1592c6d332826f67d579f2fac981c5e72486772adce9ac 

master3 加入节点

# master3 执行上面命令加入节点
[root@master3 ~]# kubeadm join 172.25.14.101:6443 --token iobz8n.rqo9u0yuok99otlj --discovery-token-ca-cert-hash sha256:64d2335ede8c3f8866095888db0b809ba44e2f2208d0861d70cb15ff4586a5b1

在这里插入图片描述

完成后显示上面图片状态,所有主节点加入后必须要执行下面命令

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

四、安装图形化界面

helm安装
GitHub 下载地址
蓝奏云所有文件下载地址:https://grafies.lanzoum.com/b0hbz5joh 密码:dvl2

# 下载 helm
wget https://get.helm.sh/helm-v3.14.4-linux-amd64.tar.gz
tar xvf helm-v3.14.4-linux-amd64.tar.gz

mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64

当您已经安装好了Helm之后,您可以添加一个chart 仓库。从 Artifact Hub中查找有效的Helm chart仓库。

$ helm repo add bitnami https://charts.bitnami.com/bitnami

当添加完成,您将可以看到可以被您安装的charts列表:

$ helm search repo bitnami
NAME                             	CHART VERSION	APP VERSION  	DESCRIPTION
bitnami/bitnami-common           	0.0.9        	0.0.9        	DEPRECATED Chart with custom templates used in ...
bitnami/airflow                  	8.0.2        	2.0.0        	Apache Airflow is a platform to programmaticall...
bitnami/apache                   	8.2.3        	2.4.46       	Chart for Apache HTTP Server
bitnami/aspnet-core              	1.2.3        	3.1.9        	ASP.NET Core is an open-source framework create...
# ... and many more

部署 Dashboard UI

# 添加 kubernetes-dashboard 仓库
helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard
# 使用 kubernetes-dashboard Chart 部署名为 `kubernetes-dashboard` 的 Helm Release
helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

修改service的type类型为NodePort,使其可以外部访问

kubectl edit svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard

在这里插入图片描述

# 找到端口,在安全组放行
[root@master1 kubernetes]# kubectl get svc -A |grep kubernetes-dashboard
kubernetes-dashboard   kubernetes-dashboard-api               ClusterIP   10.103.55.225    <none>        8000/TCP                        3m50s
kubernetes-dashboard   kubernetes-dashboard-auth              ClusterIP   10.103.219.197   <none>        8000/TCP                        3m50s
kubernetes-dashboard   kubernetes-dashboard-kong-manager      NodePort    10.98.238.74     <none>        8002:32313/TCP,8445:31643/TCP   3m50s
kubernetes-dashboard   kubernetes-dashboard-kong-proxy        NodePort    10.109.52.96     <none>        443:31374/TCP                   3m50s
kubernetes-dashboard   kubernetes-dashboard-metrics-scraper   ClusterIP   10.99.201.33     <none>        8000/TCP                        3m50s
kubernetes-dashboard   kubernetes-dashboard-web               ClusterIP   10.104.253.8     <none>        8000/TCP                        3m50s

访问: https://集群任意IP:端口 https://172.25.14.101:31374

创建访问账号,准备一个yaml文件; vim /etc/kubernetes/dashadm.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
kubectl apply -f /etc/kubernetes/dashadm.yaml

获取访问令牌

kubectl -n kubernetes-dashboard create token admin-user

输入到仪表盘中
在这里插入图片描述







参考资料:
安装 kubeadm
利用 kubeadm 创建高可用集群
Kubeadm init 错误 - API 服务器未运行
安装 containerd
etcd cluster is not healthy 将一个master控制节点踢出后重新加入集群发现报错










Tpis:

container镜像解决方案

在这里插入图片描述
/etc/containerd/config.toml这个文件里面,找到sandbox_image = "registry.k8s.io/pause:3.6"
改为sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
在这里插入图片描述
然后重启服务


master控制节点踢出后重新加入集群发现etcd报错

【k8s】 etcd cluster is not healthy 将一个master控制节点踢出后重新加入集群发现报错
kubernets将一个master控制节点踢出后重新加入集群发现报错

error execution phase check-etcd: etcd cluster is not healthy: failed to dial endpoint https://172.25.14.103:2379 with maintenance client: context deadline exceeded
To see the stack trace of this error execute with --v=5 or higher

报错结果显示etcd集群运行不正常,其实在kubeadm join加入集群时打开 -v=5 选项,提高日志等级就可以发现,提示刚刚踢出的master节点etcd无法连接。原因是将master节点踢出后,etcd集群并未将其踢出etcd集群,需要我们手动进行移除。
下载etcdctl命令行工具

export RELEASE=$(curl -s https://api.github.com/repos/etcd-io/etcd/releases/latest|grep tag_name | cut -d '"' -f 4)
wget https://github.com/etcd-io/etcd/releases/download/${RELEASE}/etcd-${RELEASE}-linux-amd64.tar.gz
tar xvf etcd-${RELEASE}-linux-amd64.tar.gz
cd etcd-${RELEASE}-linux-amd64
sudo mv etcd etcdctl etcdutl /usr/local/bin

登陆一台现有的master机器并查看现有的etcd集群列表

[root@master1 tar]# etcdctl --endpoints 127.0.0.1:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key member list
7083115c92eb133, started, master1, https://172.25.14.101:2380, https://172.25.14.101:2379, false
46dbbda45a5f29a1, started, master2, https://172.25.14.102:2380, https://172.25.14.102:2379, false
b8a567692e712730, started, master3, https://172.25.14.103:2380, https://172.25.14.103:2379, false

现在将这台服务器的etcd从集群中移除

etcdctl --endpoints 127.0.0.1:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key member remove b8a567692e712730

移除之后,新节点就可以正常加入集群了

helm安装

tar xvf helm-v3.14.4-linux-amd64.tar.gz

mv linux-amd64/helm /usr/local/bin/helm && rm -rf linux-amd64

当您已经安装好了Helm之后,您可以添加一个chart 仓库。从 Artifact Hub中查找有效的Helm chart仓库。

$ helm repo add bitnami https://charts.bitnami.com/bitnami

当添加完成,您将可以看到可以被您安装的charts列表:

$ helm search repo bitnami
NAME                             	CHART VERSION	APP VERSION  	DESCRIPTION
bitnami/bitnami-common           	0.0.9        	0.0.9        	DEPRECATED Chart with custom templates used in ...
bitnami/airflow                  	8.0.2        	2.0.0        	Apache Airflow is a platform to programmaticall...
bitnami/apache                   	8.2.3        	2.4.46       	Chart for Apache HTTP Server
bitnami/aspnet-core              	1.2.3        	3.1.9        	ASP.NET Core is an open-source framework create...
# ... and many more

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

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

相关文章

4大遥感软件!遥感影像解译!ArcGIS+ENVI+Erdas+eCognition

包含ArcGISENVIErdaseCognition 4大软件4个课程的遥感影像大综合&#xff0c;一个课程套餐让你学遍常用的遥感影像处分析等。 课后答疑 学习群答疑 实战驱动 课件、课程操作数据 福利数据包 课程概述 总共146&#xff08;18454538&#xff09;课时 点下如下课程卡学习&…

5.07 Pneumonia Detection in Chest X-Rays using Neural Networks

肺炎诊断是一个耗时的过程&#xff0c;需要高技能的专业人员分析胸部X光片chest X-ray (CXR)&#xff0c;并通过临床病史、生命体征和实验室检查确认诊断。 它可以帮助医生确定肺部感染的程度和位置。呼吸道疾病在 X 光片上表现为一处膨胀的不透明区域。然而&#xff0c;由于不…

浅谈操作系统中的重要概念——线程(3)——设计模式

文章目录 一、什么是设计模式&#xff1f;二、单例模式2.1、饿汉模式2.2、懒汉模式2.3、多线程情况下调用 饿汉模式与懒汉模式 谁是安全的&#xff1f;&#xff1f;&#xff08;重点&#xff09; 三、工厂模式3.1、什么是工厂模式&#xff1f;3.1.1、构造方法存在的缺陷3.1.1.1…

初步了解Kubernetes

目录 1. K8S概述 1.1 K8S是什么 1.2 作用 1.3 由来 1.4 含义 1.5 相关网站 2. 为什么要用K8S 3. K8S解决的问题 4. K8S的特性 5. Kubernetes集群架构与组件 6. 核心组件 6.1 Master组件 6.1.1 Kube-apiserver 6.1.2 Kube-controller-manager 6.1.3 kube-schedul…

基于springboot实现智慧图书管理系统项目【项目源码+论文说明】

基于springboot实现智慧图书管理系统演示 摘要 如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的产生往往是为…

企业数据有什么价值?

在当下的数字经济时代&#xff0c;数据已上升为国家重要的基础性战略资源&#xff0c;加快建设数字中国、网络强国这一蓝图的实现&#xff0c;离不开数据要素的支撑。数据作为新型生产要素&#xff0c;具有非消耗性、非竞争性等特征&#xff0c;为突破传统生产要素的增长约束提…

SolidWorks2024 正版软件报价

随着科技的飞速发展&#xff0c;三维设计软件在制造业、工程领域的应用越来越广泛。SolidWorks作为一款三维CAD设计软件&#xff0c;其每一代的更新都受到广大用户的热烈关注。今日&#xff0c;我们将深入探讨SolidWorks 2024正版软件的报价及其所蕴含的功能价值。 首先&#…

光检测器——光纤通信学习笔记七

光检测器 光检测器的基本介绍 作用&#xff1a;把接受到的光信号转换成电信号 光接收器的灵敏度、光源的发光功率和光纤的损耗三者决定了光纤通信的传输距离&#xff1b; 光电二极管 光电转换的基本原理 之前提到&#xff0c;PN结由于内部载流子的扩散运动形成了内部电场&…

uni-app(五):原生插件打包并使用(Android)

原生插件打包并使用 解决Gradle不显示命令问题解决方法 运行打包查看打包好的包引入到uni-app项目中编写配置文件TestModuleTestComponent 制作基座并运行 解决Gradle不显示命令问题 解决方法 运行打包 查看打包好的包 引入到uni-app项目中 编写配置文件 TestModule {"n…

postgresql主从复制

用vmware 搭建的两台虚拟机 操作系统&#xff1a;Ubuntu 24.04 Server版 数据库&#xff1a;postgresql 16.2 主库&#xff1a;192.168.2.11 从库&#xff1a;192.168.2.12 如果遇到网络无法上网&#xff0c;可参考一下 Vmware 搭建的Ubuntu 24.04 网络配置-CSDN博客 1.两…

错误处理机制——vba(vb.net)

程序出现错误时可采用如下错误处理机制&#xff1a;出错时跳到标签处&#xff0c;判断错误类型修正错误&#xff0c;重新返回正确标签处&#xff0c;继续运行程序。 代码如下&#xff1a; Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click…

CLI举例:配置HTTP服务器的负载均衡

CLI举例&#xff1a;配置HTTP服务器的负载均衡 本举例介绍了如何配置HTTP服务器的负载均衡。 组网需求 如图1所示&#xff0c;企业有三台Web服务器Server1、Server2和Server3&#xff0c;且这三台服务器的硬件性能顺次降低&#xff0c;Server1性能是Server2的两倍、Server2性能…

苹果新品发布会速览:iPad革新遇市场挑战 | 百能云芯

北京时间5月7日晚&#xff0c;苹果以“放飞吧”为主题&#xff0c;举办了一场不到40分钟的线上新品发布会。在这场发布会上&#xff0c;iPad产品线成为了焦点&#xff0c;M4芯片和OLED技术的融入更是引起了广泛关注。 iPad新篇章&#xff1a;技术革新与市场竞争 时隔18个月&…

Linux环境下部署vsftp+mysql用户认证

安装mysql(不要使用红帽的RPM版的mysql) 使用编译或静态库安装mysql 1、编译安装pam_mysql 下载软件&#xff1a; http://downloads.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz?rhttp%3A%2F%2Fsourceforge.net%2Fprojects%2Fpam-mysql%2F…

【回溯算法】【Python实现】符号三角形问题

文章目录 [toc]问题描述回溯法时间复杂性Python实现 问题描述 下图是由 14 14 14个“ ”和 14 14 14个“ − - −”组成的符号三角形&#xff0c; 2 2 2个同号下面都是” “&#xff0c; 2 2 2个异号下面都是“ − - −” 在一般情况下&#xff0c;符号三角形的第一行有 n…

MySQL慢查询SQL优化

一、慢查询日志 描述&#xff1a;通过慢查询日志等定位那些执行效率较低的SQL语句 查看 # 慢查询是否开启 show variables like slow_query_log%; # 慢查询超时时间 show variables like long_query_time%;执行SQL 开启慢查询日志 set global slow_query_log ON;设置慢查…

python数据分析——数据的选择和运算

数据的选择和运算 前言一、数据选择NumPy的数据选择一维数组元素提取示例 多维数组行列选择、区域选择示例 花式索引与布尔值索引布尔索引示例一示例二 花式索引示例一示例二 Pandas数据选择Series数据获取DataFrame数据获取列索引取值示例一示例二 取行方式示例loc() 方法示例…

一篇文章,系统性聊聊Java注解

你好&#xff01; 这类系统性聊聊***知识点的文章&#xff0c;是希望给大家带来对某个技术的全貌认识&#xff0c;如果大家喜欢&#xff0c;后续可以陆续更新此系列 下面&#xff0c;开始今天的分享 在之前&#xff0c;我们已经分享过注解相关的三个面试题&#xff0c; 今天的…

【原创教程】步进MC_HOME回原点模式

我们所用软件:西门子TIA Portal V16编程软件 我们所用硬件:S7-1200系列:CPU1212C;雷赛科技DM542驱动器;西门子TP900 comfort触摸屏 我们的硬件接线 MC_HOME的模式: 一般情况下,西门子PLC的运动控制在使能绝对位置定位之前必须执行“回原点”或是“寻找参考点”。 Pos…

多层感知机(MLP)示例

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个多层感知机模型pytorch程序,最后打印5个条件分别的影响力。 一 在多层感知机&#xff08;MLP&#xff09;模型中&…