kubeadm部署k8s及高可用
目录
CNI 网络组件
1、flannel的功能
2、flannel的三种模式
3、flannel的UDP模式工作原理
4、flannel的VXLAN模式工作原理
5、Calico主要组成部分
6、calico的IPIP模式工作原理
7、calico的BGP模式工作原理
8、flannel 和 calico 的区别
Kubeadm部署k8s及高可用
1、环境准备
2、所有节点安装docker
3、所有节点安装kubeadm,kubelet和kubectl
4、所有master主机部署haproxy和keepalived实现高可用
5、部署K8S集群
6、部署网络插件flannel
续上一篇文章
CNI 网络组件
网络部署插件有fannel、calico、cilium等
主要介绍flannel和calico
flannel方案
需要在每个节点上把发向容器的数据包进行封装后,再用隧道将封装后的数据包发送到运行着目标Pod的node节点上。目标node节点再负责去掉封装,将去除封装的数据包发送到目标Pod上。数据通信性能则大受影响。
calico方案
Calico不使用隧道或NAT来实现转发,而是把Host当作Internet中的路由器,使用BGP同步路由,并使用iptables来做安全访问策略,完成跨Host转发来。
1、flannel的功能
让集群中的不同节点主机创建的 Docker 容器都具有全集群唯一的虚拟 IP 地址。
2、flannel的三种模式
- UDP 出现最早的模式,但是性能较差,基于flanneld应用程序实现数据包的封装/解封
- VXLAN 默认模式,是推荐使用的模式,性能比UDP模式更好,基于内核实现数据帧的封装/解封装,配置简单使用方便
- HOST-GW 性能最好的模式,但是配置复杂,且不能跨网段
3、flannel的UDP模式工作原理
1)原始数据包从源主机的Pod容器经过cni0网桥转发到flannel0虚拟接口
2)flanneld进程负责监听flannel0接口收到的数据,并将源数据包封装到UDP报文中
3)然后flanneld进程通过查询etcd中维护的路由表,找到目标Pod所在的node节点的nodeIP,然后将nodeIP封装在UDP报文外,最后通过物理网卡发送到目标node节点
4)数据报文通过8285端口送到目标node节点的flanneld进程进行解封装,再由flannel0虚接口经过cni0网桥转发到目标Pod容器
4、flannel的VXLAN模式工作原理
1)原始数据帧从源主机的Pod容器经过cni0网桥接口转发到flannel.1虚接口
2)flannel.1虚接口收到数据帧后添加VXLAN头部,并在内核将原始数据帧封装到UDP报文中
3)flanneld进程根据etcd中维护的路由表经过物理网卡发送到目标Pod所在的node节点
4)数据报文通过8472端口发送到目标node节点的flannel.1虚接口,在由flannel.1虚接口经过cni0网桥发送到目标Pod容器
5、Calico主要组成部分
- Felix:负责维护宿主机上的路由规则、FIB转发信息库等。
- BIRD:负责分发路由规则,类似路由器。
- Confd:配置管理组件。
Calico CNI插件:主要负责与kubernetes对接,供kubelet调用使用。
6、calico的IPIP模式工作原理
1)原始数据包源主机的Pod容器发送到tunl0接口,然后在内核的IPIP驱动封装到节点网络的IP报文中
2)再由tunl0接口的路由经过物理网卡发送到目标node节点
3)IP数据报文到达目标node节点后,再通过内核的IPIP驱动解包得到原始的IP数据包
4)最后根据本地的路由规则经过veth pair设备送达目标Pod容器
7、calico的BGP模式工作原理
本质就是通过路由规则来维护Pod之间的通信,Felix负责维护路由规则和网络接口管理,BIRD负责分发路由信息给其它节点
1)源主机的Pod容器发出的原始IP数据包会通过veth pair设备送达到节点网络空间
2)然后会根据原始IP数据包中的目标IP和节点的路由规则找到目标node节点的IP,再经过物理网卡发送到目标node节点
3)IP数据包到达目标node节点后,会根据本地的路由规则经过veth pair设备送达到目标Pod容器
8、flannel 和 calico 的区别
1)flannel的网络模式有UDP、VXLAN、HOST-GW
2)calico的网络模式有IPIP、BGP、混合模式
3)flannel的默认网段是10.244.0.0/16,而calico的默认网段是192.168.0.0/16
4)flannel适合用于小型架构和架构不复杂的场合,而calico适合用于大型架构和架构复杂的场合
Kubeadm部署k8s及高可用
| master01 | 192.168.3.100 | docker、kubeadm,kubelet、kubectl、haproxy和keepalived |
| master02 | 192.168.3.101 | docker、kubeadm,kubelet、kubectl、haproxy和keepalived |
| master03 | 192.168.3.102 | docker、kubeadm,kubelet、kubectl、haproxy和keepalived |
| node01 | 192.168.3.103 | docker、kubeadm,kubelet和kubectl |
| node02 | 192.168.3.104 | docker、kubeadm,kubelet和kubectl |
1、环境准备
//所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

//分别修改主机名
hostnamectl set-hostname master01
hostnamectl set-hostname master02
hostnamectl set-hostname master03
hostnamectl set-hostname node01
hostnamectl set-hostname node02

//所有节点修改hosts文件
vim /etc/hosts
192.168.3.100 master01
192.168.3.101 master02
192.168.3.102 master03
192.168.3.103 node01
192.168.3.104 node02

//所有节点时间同步
yum -y install ntpdate
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' >/etc/timezone
ntpdate time2.aliyun.com
//设置周期性任务做时间同步
systemctl enable --now crond
crontab -e
*/30 * * * * /usr/sbin/ntpdate time2.aliyun.com


//所有节点实现Linux的资源限制
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 655350
* soft memlock unlimited
* hard memlock unlimited

//调整内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
fs.may_detach_mounts = 1
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.netfilter.nf_conntrack_max=2310720net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 327680
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_conntrack_max = 65536
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 16384
EOF#生效参数
sysctl --system


//加载 ip_vs 模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

2、所有节点安装docker
//下载依赖环境
yum install -y yum-utils device-mapper-persistent-data lvm2
//下载docker的repo源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
//下载docker
yum install -y docker-ce docker-ce-cli containerd.io



//设置docker加速拉取镜像
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://6na95ym4.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "500m", "max-file": "3"}
}
EOF
//重载systemd管理文件
systemctl daemon-reload
//设置开启自启docker服务,并立即开启docker
systemctl enable --now docker.service

3、所有节点安装kubeadm,kubelet和kubectl
//定义kubernetes源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
//下载
yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15

//配置Kubelet使用阿里云的pause镜像
cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.2"
EOF//开机自启kubelet
systemctl enable --now kubelet
//此时会发现kubelet启动不成功
systemctl status kubelet

4、所有master主机部署haproxy和keepalived实现高可用
//所有 master 节点部署 Haproxy
yum -y install haproxy keepalivedcat > /etc/haproxy/haproxy.cfg << EOF
globallog 127.0.0.1 local0 infolog 127.0.0.1 local1 warningchroot /var/lib/haproxypidfile /var/run/haproxy.pidmaxconn 4000user haproxygroup haproxydaemonstats socket /var/lib/haproxy/statsdefaultsmode tcplog globaloption tcplogoption dontlognulloption redispatchretries 3timeout queue 1mtimeout connect 10stimeout client 1mtimeout server 1mtimeout check 10smaxconn 3000frontend monitor-inbind *:33305mode httpoption httplogmonitor-uri /monitorfrontend k8s-masterbind *:6444mode tcpoption tcplogdefault_backend k8s-masterbackend k8s-mastermode tcpoption tcplogoption tcp-checkbalance roundrobinserver k8s-master1 192.168.3.100:6443 check inter 10000 fall 2 rise 2 weight 1server k8s-master2 192.168.3.101:6443 check inter 10000 fall 2 rise 2 weight 1server k8s-master3 192.168.3.102:6443 check inter 10000 fall 2 rise 2 weight 1
EOF

//所有 master 节点部署 keepalived
yum -y install keepalivedcd /etc/keepalived/vim keepalived.conf
! Configuration File for keepalived
global_defs {router_id LVS_HA1 #路由标识符,每个节点配置不同
}vrrp_script chk_haproxy {script "/etc/keepalived/check_haproxy.sh"interval 2weight 2
}vrrp_instance VI_1 {state MASTER #master01上设置MASTER、master02和master03上设置BACKUPinterface ens33virtual_router_id 51priority 100 #本机初始权重,备机设置小于主机的值advert_int 1virtual_ipaddress {192.168.3.254 #设置VIP地址}track_script {chk_haproxy}
}



//编写haproxy的健康检查脚本
vim check_haproxy.sh
#!/bin/bash
if ! killall -0 haproxy; thensystemctl stop keepalived
fi//并给脚本执行权限
chmod +x chk_haproxy.sh//开机自启haproxy和keepalived
systemctl enable --now haproxy
systemctl enable --now keepalived



5、部署K8S集群
//在 master01 节点上设置集群初始化配置文件
kubeadm config print init-defaults > /opt/kubeadm-config.yamlcd /opt/
vim kubeadm-config.yaml
......
11 localAPIEndpoint:
12 advertiseAddress: 192.168.3.100 #指定当前master节点的IP地址
13 bindPort: 644321 apiServer:
22 certSANs: #在apiServer属性下面添加一个certsSANs的列表,添加所有master节点的IP地址和集群VIP地址
23 - 192.168.3.254
24 - 192.168.3.100
25 - 192.168.3.101
26 - 192.168.3.10230 clusterName: kubernetes
31 controlPlaneEndpoint: "192.168.3.100:6444" #指定集群VIP地址
32 controllerManager: {}38 imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers #指定镜像下载地址
39 kind: ClusterConfiguration
40 kubernetesVersion: v1.20.15 #指定kubernetes版本号
41 networking:
42 dnsDomain: cluster.local
43 podSubnet: "10.244.0.0/16" #指定pod网段,10.244.0.0/16用于匹配flannel默认网段
44 serviceSubnet: 10.96.0.0/16 #指定service网段
45 scheduler: {}
#末尾再添加以下内容
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs #把默认的kube-proxy调度方式改为ipvs模式

#更新集群初始化配置文件
kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml

#拷贝yaml配置文件给其他主机,通过配置文件进行拉取镜像
for i in master02 master03 node01 node02; do scp /opt/new.yaml $i:/opt/; done

//拉取镜像
kubeadm config images pull --config /opt/new.yaml

//master01 节点进行初始化
kubeadm init --config new.yaml --upload-certs | tee kubeadm-init.log


//master01 节点进行环境配置
#配置 kubectl
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config//然后重启kubelet服务
systemctl restart kubelet

//所有节点加入集群
#master 节点加入集群
kubeadm join 192.168.3.254:6444 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:e1434974e3b947739e650c13b94f9a2e864f6c444b9a6e891efb4d8e1c4a05b7 \--control-plane --certificate-key fff2215a35a1b54f9b39882a36644b19300b7053429c43a1a713e4ed791076c4//然后在每个master节点也会提示接下来需要做什么
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config


//node 节点加入集群
kubeadm join 192.168.3.254:6444 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:e1434974e3b947739e650c13b94f9a2e864f6c444b9a6e891efb4d8e1c4a05b7


//在 master01 查看集群信息
kubectl get nodes

6、部署网络插件flannel
所有节点上传 flannel 镜像 flannel.tar 和网络插件 cni-plugins-linux-amd64-v0.8.6.tgz 到 /opt 目录,master节点上传 kube-flannel.yml 文件
cd /opt
docker load < flannel.tarmv /opt/cni /opt/cni_bak
mkdir -p /opt/cni/bin
tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/binkubectl apply -f kube-flannel.yml



再次查看集群信息
//在 master01 查看集群信息
kubectl get nodes

最后验证一下
kubectl get pod -n kube-system

相关文章:
kubeadm部署k8s及高可用
目录 CNI 网络组件 1、flannel的功能 2、flannel的三种模式 3、flannel的UDP模式工作原理 4、flannel的VXLAN模式工作原理 5、Calico主要组成部分 6、calico的IPIP模式工作原理 7、calico的BGP模式工作原理 8、flannel 和 calico 的区别 Kubeadm部署k8s及高可用 1、…...
GEE:将鼠标变成十字指针,点击获取影像值,显示值到UI中
作者:CSDN @ _养乐多_ 本文记录了在 Google Earth Engine(GEE)开发中,将鼠标变成十字指针,点击获取影像值,显示值到UI中的代码片段。这段代码复制过去修改变量名就可以用了。 效果如下图所示, 文章目录 一、代码片段一、代码片段 使用的时候将 YLDImage 变量换成你屏…...
SpringBoot 项目公共字段填充
[公共字段自动填充] 核心:在切面类中捕获需要填充公共字段的 Mapper 方法,方法上使用注解加以标识,通过反射拿到需要填充的字段赋值方法,进行赋值操作 1、自定义注解 AutoFill Target(ElementType.METHOD) Retention(RetentionPo…...
分布式搜索引擎ES
文章目录 初识elasticsearch了解ES倒排索引正向索引倒排索引正向和倒排 es的一些概念文档和字段索引和映射mysql与elasticsearch 安装ES部署kibana安装IK分词器扩展词词典停用词词典 索引库操作mapping映射属性索引库的CRUD创建索引库和映射查询索引库修改索引库删除索引库 文档…...
2023年05月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 下列程序段的运行结果是?( ) def s(n):if n==0:return 1else:...
@KafkaListener注解详解(一)| 常用参数详解
KafkaListener 注解提供了许多可配置的参数,以便更灵活地定制 Kafka 消息监听器的行为。 topics: 描述: 指定监听的 Kafka 主题,可以是一个字符串数组。这是最基本的参数,它定义了监听器将从哪个或哪些主题接收消息。…...
蓝桥杯算法双周赛心得——被替换的身份证(分类讨论)
大家好,我是晴天学长,分类讨论一定要细节啊,需要的小伙伴可以关注支持一下哦!后续会继续更新的。💪💪💪 1) .被替换的身份证 2) .算法思路 假设一方获胜 1.接受数据 2.假设潜梦醒 无非就是&am…...
实验一:人工智能之启发式搜索算法(含源码+实验报告)
✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :hfut实验课设 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少…...
C++学习 --类和对象之封装
目录 1, 什么是封装 2, 创建类 3, 权限控制 3-1, public权限 3-2, private权限 3-3, protected权限 3-4, 类外访问私有属性 4, 构造函数 4-2,创建构造函数 4-2…...
在Spring Boot中使用JTA实现对多数据源的事务管理
了解事务的都知道,在我们日常开发中单单靠事务管理就可以解决绝大多数问题了,但是为啥还要提出JTA这个玩意呢,到底JTA是什么呢?他又是具体来解决啥问题的呢? JTA JTA(Java Transaction API)是…...
介绍YOLO-NAS Pose:姿势估计的技术
YOLO-NAS 姿势 YOLO-NAS Pose models是对 Pose Estimation 领域的最新贡献。今年早些时候,Deci 因其突破性的目标检测基础模型 YOLO-NAS 获得了广泛认可。在 YOLO-NAS 成功的基础上,该公司现在推出了 YOLO-NAS Pose 作为其姿势估计的对应产品。该姿势模型在延迟和准确性之间…...
计算机毕业设计 基于SpringBoot的实训管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
Python开发运维:Python3.7使用QQ邮箱发送不同类型邮件
目录 一、理论 1.邮件发送 二、实验 1.Python3.7使用QQ邮箱发送普通邮件 2.Python3.7使用QQ邮箱发送包含图片与附件的邮件 三、问题 1.Pycharm中如何放大和缩小代码界面 一、理论 1.邮件发送 (1)概念 SMTP(Simple Mail Transfer Pro…...
二十三种设计模式全面解析-解密迭代器模式:探索遍历之道
在软件开发中,遍历数据集合是一个非常常见的需求。但是,如何以一种优雅、灵活的方式遍历集合,并且能够适应各种不同的数据结构和迭代方式,一直是开发者们面临的挑战。今天,我将带你深入探索迭代器模式(Iter…...
kubernetes istio
目录 一、部署 二、部署示例应用 三、部署遥测组件 四、流量管理 五、熔断 官网:https://istio.io/latest/zh/about/service-mesh/ 一、部署 提前准备好文件 tar zxf 15t10-1.19.3-linux-amd64.tar.gz cd 15t10-1.19.3/ export PATH$PWD/bin:$PATHistioctl install …...
25期代码随想录算法训练营第十四天 | 二叉树 | 递归遍历、迭代遍历
目录 递归遍历前序遍历中序遍历后序遍历 迭代遍历前序遍历中序遍历后序遍历 递归遍历 前序遍历 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # …...
常用布局以及其优缺点
当涉及到设计和排版时,有许多不同的布局方式可供选择。以下是几种常见的布局方式以及它们的优缺点: 流式布局(Fluid Layout): 优点:能够根据屏幕大小自动调整内容,适应不同设备。灵活性高&#…...
海康工业相机如何提高相机帧率
影响帧率的因素 相机参数 帧率限制使能 像素格式 曝光时间 数据包大小(网口) 相机默认参数 ADC位深 系统环境设置...
Linux之IPC通信共享内存(一次拷贝)与消息队列、管道、信号量、socket(两次拷贝)总结(六十二)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
【多线程 - 01、概述】
进程 几乎所有的操作系统都支持进程概念,进程是处于运行过程中的程序,进程是操作系统中进行资源分配的基本单位。 三个基本特征 独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。而对于未建立任何进程的程序&…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
.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 适用场…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...
