【kubernetes】k8s高可用集群搭建(三主三从)

news2025/3/12 19:25:02

目录

【kubernetes】k8s高可用集群搭建(三主三从)

一、服务器设置

二、环境配置

1、关闭防火墙

2、关闭selinux

3、关闭swap

4、修改主机名(根据主机角色不同,做相应修改)

5、主机名映射

6、将桥接的IPv4流量传递到iptables的链

7、时间同步

8、master之间进行免密登录设置

三、安装部署

(一)配置部署keepalived服务

1、安装Keepalived(所有master主机)

2、k8s-master1/2/3节点配置

3、启动和检查

4、查看启动状态

5、启动完成后在master1查看网络信息

(二)配置部署haproxy服务

1、所有master主机安装haproxy

2、修改配置文件

3、启动和检查

4、查看启动状态

5、检查端口

(三)配置部署Docker服务(所有主机)

(四)部署kubelet kubeadm kubectl工具

1、使用 YUM 方式安装Kubernetes时,推荐使用阿里的yum。

2、安装kubelet kubeadm kubectl

(五)部署Kubernetes Master

1、创建kubeadm-config.yaml文件

2、查看所需镜像信息

3、下载k8s所需的镜像(所有master主机)

4、使用kubeadm命令初始化k8s

5、根据初始化的结果操作

6、查看集群状态

1)修改kube-controller-manager.yaml文件

2)修改kube-scheduler.yaml文件

3)查看集群状态

4)查看pod信息

5)查看节点信息

(六)安装集群网络

在k8s-master1节点执行

没有变成ready:(原因是网络插件缺失)

上传插件:

再次查看节点信息:

(七)添加master节点

1、在k8s-master2和k8s-master3节点创建文件夹

2、在k8s-master1节点执行

3、将其他master节点加入集群

查看节点信息

(八)加入Kubernetes Node

查看节点信息

查看pod信息

(九)测试Kubernetes集群

1、所有node主机下载测试镜像

2、在Kubernetes集群中创建一个pod,验证是否正常运行。

3、创建完 Deployment 的资源清单之后,使用 create 执行资源清单来创建容器。

4、创建Service资源清单

5、访问测试

四、拓展试验

(一)宕机master1,验证服务

(二)宕机master1/2,验证服务

(三)两台宕机主机恢复,验证服务

五、实验总结


【kubernetes】k8s高可用集群搭建(三主三从)

一、服务器设置

准备6台虚拟机,3台master节点,3台node节点,保证master节点数为>=3的奇数。

网络:所有机器网络互通、可以访问外网

硬件:2核CPU+、2G内存+、硬盘20G+

IP地址

角色

主机名

需要用到的服务

192.168.100.131

master

k8s-master1

keepalived

haproxy

docker

kubectl

kubeadm

kubelet

192.168.100.132

master

k8s-master2

192.168.100.133

master

k8s-master3

192.168.100.134

node

k8s-node1

docker

kubectl

kubeadm

kubelet

192.168.100.135

node

k8s-node2

192.168.100.136

node

k8s-node3

192.168.100.154

VIP

master.k8s.io

代理master1/2/3

二、环境配置

1、关闭防火墙

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# systemctl disable firewalld

2、关闭selinux

[root@localhost ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config

[root@localhost ~]# setenforce 0

3、关闭swap

[root@localhost ~]# swapoff -a

[root@localhost ~]# sed -ri 's/.*swap.*/#&/' /etc/fstab

 

4、修改主机名(根据主机角色不同,做相应修改)

hostname k8s-node1  建议做永久主机名配置  hostnamectl  set-hostname k8s-master1

bash

5、主机名映射

[root@k8s-master1 ~]# cat >> /etc/hosts << EOF

192.168.100.131 master1.k8s.io k8s-master1

192.168.100.132 master2.k8s.io k8s-master2

192.168.100.133 master3.k8s.io k8s-master3

192.168.100.134 node1.k8s.io k8s-node1

192.168.100.135 node2.k8s.io k8s-node2

192.168.100.136 node3.k8s.io k8s-node3

192.168.100.154 master.k8s.io k8s-vip

EOF

 

6、将桥接的IPv4流量传递到iptables的链

[root@k8s-master1 ~]# cat << EOF >> /etc/sysctl.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

EOF

[root@k8s-master1 ~]# modprobe br_netfilter

[root@k8s-master1 ~]# sysctl -p

 

7、时间同步

[root@k8s-master1 ~]# yum install ntpdate -y

[root@k8s-master1 ~]# ntpdate time.windows.com

8、master之间进行免密登录设置

[root@k8s-master1 ~]# ssh-keygen

[root@k8s-master1 ~]# ssh-cpoy-id 192.168.100.131

[root@k8s-master1 ~]# ssh-cpoy-id 192.168.100.132

[root@k8s-master1 ~]# ssh-cpoy-id 192.168.100.133

同理:

master2/3操作,互相之间免密登录

三、安装部署

(一)配置部署keepalived服务

1、安装Keepalived(所有master主机)

[root@k8s-master1 ~]# yum install -y keepalived

 

2、k8s-master1/2/3节点配置

[root@k8s-master1 ~]#

cat /etc/keepalived/keepalived.conf

 

k8s-master2节点配置

[root@k8s-master2 ~]#

cat  /etc/keepalived/keepalived.conf

 

k8s-master3节点配置

[root@k8s-master3 ~]#

cat  /etc/keepalived/keepalived.conf

 

3、启动和检查

所有master节点都要执行

[root@k8s-master1 ~]# systemctl start keepalived

[root@k8s-master1 ~]# systemctl enable keepalived

4、查看启动状态

[root@k8s-master1 ~]# systemctl status keepalived

 

5、启动完成后在master1查看网络信息

[root@k8s-master1 ~]# ip a s ens33

 

(二)配置部署haproxy服务

1、所有master主机安装haproxy

[root@k8s-master1 ~]# yum install -y haproxy

        每台master节点中的配置均相同,配置中声明了后端代理的每个master节点服务器,指定了haproxy的端口为16443,因此16443端口为集群的入口。

2、修改配置文件

[root@k8s-master1 ~]# cat  /etc/haproxy/haproxy.cfg

 

3、启动和检查

所有master节点都要执行

[root@k8s-master1 ~]# systemctl start haproxy

[root@k8s-master1 ~]# systemctl enable haproxy

4、查看启动状态

[root@k8s-master1 ~]# systemctl status haproxy

 

5、检查端口

[root@k8s-master1 ~]# netstat -lntup|grep haproxy

 

(三)配置部署Docker服务(所有主机)

        所有主机上分别部署 Docker 环境,因为 Kubernetes 对容器的编排需要 Docker 的支持。

[root@k8s-master ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

[root@k8s-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

使用 YUM 方式安装 Docker 时,推荐使用阿里的 YUM 源。

[root@k8s-master ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

[root@k8s-master ~]# yum clean all && yum makecache fast

[root@k8s-master ~]# yum -y install docker-ce

[root@k8s-master ~]# systemctl start docker

[root@k8s-master ~]# systemctl enable docker

镜像加速器(所有主机配置)

[root@k8s-master ~]# cat /etc/docker/daemon.json

[root@k8s-master ~]# systemctl daemon-reload

[root@k8s-master ~]# systemctl restart docker

(四)部署kubelet kubeadm kubectl工具

1、使用 YUM 方式安装Kubernetes时,推荐使用阿里的yum。

所有主机配置

[root@k8s-master ~]#

cat  /etc/yum.repos.d/kubernetes.repo

[root@k8s-master ~]# ls /etc/yum.repos.d/

backup  Centos-7.repo  CentOS-Media.repo  CentOS-x86_64-kernel.repo  docker-ce.repo  kubernetes.repo

 

2、安装kubelet kubeadm kubectl

所有主机配置

[root@k8s-master ~]# yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0

[root@k8s-master ~]# systemctl enable kubelet

 

(五)部署Kubernetes Master

在具有vip的master上操作。此处的vip节点为k8s-master1。

1、创建kubeadm-config.yaml文件

[root@k8s-master1 ~]# cat  kubeadm-config.yaml

 

2、查看所需镜像信息

[root@k8s-master1 ~]# kubeadm config images list --config kubeadm-config.yaml

 

3、下载k8s所需的镜像(所有master主机)

[root@k8s-master1 ~]# kubeadm config images pull --config kubeadm-config.yaml

 

4、使用kubeadm命令初始化k8s

[root@k8s-master1 ~]# kubeadm init --config kubeadm-config.yaml

初始化中的错误:

 

执行以下命令后重新执行初始化命令

[root@k8s-master1 ~]# echo "1" >  /proc/sys/net/ipv4/ip_forward

[root@k8s-master1 ~]# kubeadm init --config kubeadm-config.yaml

 

5、根据初始化的结果操作

[root@k8s-master1 ~]# mkdir -p $HOME/.kube

[root@k8s-master1 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@k8s-master1 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

 

6、查看集群状态

[root@k8s-master1 manifests]# kubectl get cs

                                     

        注意:出现以上错误情况,是因为/etc/kubernetes/manifests/下的kube-controller-manager.yaml和kube-scheduler.yaml设置的默认端口为0导致的,解决方式是注释掉对应的port即可

1)修改kube-controller-manager.yaml文件

 

2)修改kube-scheduler.yaml文件

 

3)查看集群状态

[root@k8s-master1 ~]# kubectl get cs

 

4)查看pod信息

[root@k8s-master1 ~]# kubectl get pods -n kube-system

 

5)查看节点信息

[root@k8s-master1 ~]# kubectl get nodes

 

(六)安装集群网络

在k8s-master1节点执行

[root@k8s-master1 ~]# docker load < flannel_v0.12.0-amd64.tar

 

没有变成ready:(原因是网络插件缺失)

 

上传插件:

[root@k8s-master1 ~]# tar xf cni-plugins-linux-amd64-v0.8.6.tgz

[root@k8s-master1 ~]# cp flannel /opt/cni/bin/

[root@k8s-master1 ~]# kubectl delete -f kube-flannel.yml   删除之前的apply操作

 

再次查看节点信息:

[root@k8s-master1 ~]# kubectl apply -f kube-flannel.yml

[root@k8s-master1 ~]# kubectl get nodes

 

(七)添加master节点

1、在k8s-master2和k8s-master3节点创建文件夹

[root@k8s-master2 ~]# mkdir -p /etc/kubernetes/pki/etcd

[root@k8s-master3 ~]# mkdir -p /etc/kubernetes/pki/etcd

2、在k8s-master1节点执行

从k8s-master1复制秘钥和相关文件到k8s-master2和k8s-master3

[root@k8s-master1 ~]# scp /etc/kubernetes/admin.conf root@192.168.100.132:/etc/kubernetes 

[root@k8s-master1 ~]# scp /etc/kubernetes/pki/{ca.*,sa.*,front-proxy-ca.*} root@192.168.100.132:/etc/kubernetes/pki

[root@k8s-master1 ~]# scp /etc/kubernetes/pki/etcd/ca.* root@192.168.100.132:/etc/kubernetes/pki/etcd

[root@k8s-master1 ~]# scp /etc/kubernetes/admin.conf root@192.168.100.133:/etc/kubernetes

[root@k8s-master1 ~]# scp /etc/kubernetes/pki/{ca.*,sa.*,front-proxy-ca.*} root@192.168.100.133:/etc/kubernetes/pki

[root@k8s-master1 ~]# scp /etc/kubernetes/pki/etcd/ca.* root@192.168.100.133:/etc/kubernetes/pki/etcd

3、将其他master节点加入集群

注意:kubeadm init生成的token有效期只有1天,生成不过期token

[root@k8s-master1 manifests]# kubeadm token create --ttl 0 --print-join-command

[root@k8s-master1 manifests]# kubeadm token list

k8s-master2和k8s-master3都需要加入

[root@k8s-master2 ~]# kubeadm join master.k8s.io:6443 --token pj2haa.zf72tyum7uiyeamx     --discovery-token-ca-cert-hash sha256:aaec80f6efa10581c329034bef7e2c2f2f1cb2ef4228f8ddcfcbbb44df55aae3  --control-plane

[root@k8s-master2 ~]# mkdir -p $HOME/.kube

[root@k8s-master2 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@k8s-master2 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

[root@k8s-master2 ~]# docker load < flannel_v0.12.0-amd64.tar

[root@k8s-master2 ~]# tar xf cni-plugins-linux-amd64-v0.8.6.tgz

[root@k8s-master2 ~]# cp flannel /opt/cni/bin/

查看节点信息

[root@k8s-master1 ~]# kubectl get nodes

[root@k8s-master1 manifests]# kubectl get pods --all-namespaces

(八)加入Kubernetes Node

直接在node节点服务器上执行k8s-master1初始化成功后的消息即可:

[root@k8s-node1 ~]# kubeadm join master.k8s.io:6443 --token o3j9wj.58io4u28r6q8o9lj     --discovery-token-ca-cert-hash sha256:6ad29ff932b12680844e140938eaeaaca120d6020c273b6b56d69d256fbc44b0

 

[root@k8s-node1 ~]# docker load < flannel_v0.12.0-amd64.tar

 

查看节点信息

[root@k8s-master1 ~]# kubectl get nodes

 

查看pod信息

[root@k8s-master1 ~]# kubectl get pods -n kube-system

(九)测试Kubernetes集群

1、所有node主机下载测试镜像

[root@k8s-node1 ~]# docker pull  nginx:1.19.0

 

2、在Kubernetes集群中创建一个pod,验证是否正常运行。

[root@k8s-master1 ~]# mkdir demo

[root@k8s-master1 ~]# cd demo

[root@k8s-master1 demo]# vim nginx-deployment.yaml

 

3、创建完 Deployment 的资源清单之后,使用 create 执行资源清单来创建容器。

通过 get pods 可以查看到 Pod 容器资源已经自动创建完成。

[root@k8s-master1 demo]# kubectl create -f nginx-deployment.yaml

[root@k8s-master1 demo]# kubectl get pods

[root@k8s-master1 ~]# kubectl get pods -o wide

 

4、创建Service资源清单

        在创建的 nginx-service 资源清单中,定义名称为 nginx-service 的 Service、标签选择器为 app: nginx、type 为 NodePort 指明外部流量可以访问内部容器。在 ports 中定义暴露的端口库号列表,对外暴露访问的端口是 80,容器内部的端口也是 80。

[root@k8s-master1 demo]# vim nginx-service.yaml

[root@k8s-master1 demo]# kubectl create -f nginx-service.yaml

[root@k8s-master1 demo]# kubectl get svc

 

5、访问测试

通过浏览器访问nginx:http://master.k8s.io:31350 域名或者VIP地址

[root@k8s-master1 demo]# elinks --dump http://master.k8s.io:31350

 

浏览器测试:192.168.100.154:31350

 

四、拓展试验

(一)宕机master1,验证服务

挂起k8s-master1节点,刷新页面还是能访问nginx,说明高可用集群部署成功。

 

 

检查会发现VIP已经转移到k8s-master2节点上

[root@k8s-master2 ~]# ip a s ens33

 

验证操作master

[root@k8s-master2 ]#kubectl get nodes

 

至此Kubernetes企业级高可用环境完美实现。

(二)宕机master1/2,验证服务

以此类推,停掉master2的服务,vip跳转至master3,服务仍保持

 

 

检查会发现VIP已经转移到k8s-master3节点上

[root@k8s-master3 ~]# ip a s ens33

 

验证操作master

[root@k8s-master3 ]#kubectl get nodes

(三)两台宕机主机恢复,验证服务

Master1:

 

Master2:

 

Master3:

 

访问服务:

 

 

五、实验总结

        1、集群中只要有一个master节点正常运行就可以正常对外提供业务服务。

        2、如果需要在master节点使用kubectl相关的命令,必须保证至少有2个master节点正常运行才可以使用,不然会有 Unable to connect to the server: net/http: TLS handshake timeout 这样的错误。

        3、当一台可以查看nodes节点的master宕机之后,其余两台随机一台获取vip,然后可以观察nodes节点,但是当超过两台master宕机之后,集群需重建才可以观察nodes节点,但服务未停止;当两台宕机主机回复之后,服务停止,node节点不可观察,集群停止,需重建!

        4、Node节点故障时pod自动转移:当pod所在的Node节点宕机后,根据 controller-manager的–pod-eviction-timeout 配置,默认是5分钟,5分钟后k8s会把pod状态设置为unkown, 然后在其它节点启动pod。当故障节点恢复后,k8s会删除故障节点上面的unkown pod。如果你想立即强制迁移,可以用 kubectl drain nodename

        5、为了保证集群的高可用性,建议master节点和node节点至少分别部署3台及以上,且master节点应该部署基数个实例(3、5、7、9)。

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

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

相关文章

6-1_ADC示例分析

1.参考代码示例 PRJ_M66_4.3.3\boards\apollo4l_blue_eb\examples\peripherals\adc_measure\src\adc_measure.c 本篇基于Apollo4BlueLite 4.3.3版本的SDK中adc_measure.c示例的代码进行分析。 2. 代码流程 &#xff08;1&#xff09;初始化一路GPIO作为ADC输入 &#xff0…

P4500Q22CLRP 半导体放电管 品牌厂家 现货直供

防浪涌过电压保护电路中&#xff0c;常用的过电压保护器件有&#xff1a;半导体放电管TSS、TVS瞬态抑制二极管、压敏电阻MOV、陶瓷气体放电管GDT&#xff0c;其中半导体放电管TSS和陶瓷气体放电管GDT属于开关型过压保护器件&#xff0c;压敏电阻MOV和TVS瞬态抑制二极管属于钳位…

金蝶软件实现导入Excel数据分录行信息到单据体分录行中

>>>适合KIS云专业版V16.0|KIS云旗舰版V7.0|K/3 WISE 14.0等版本<<< 金蝶软件中实现[导入Excel数据业务分录行]信息到[金蝶单据体分录]中,在采购订单|采购入库单|销售订单|销售出库单等类型单据中,以少量的必要字段在excel表格中按模板填列好,很方便快捷地从…

app测试和web测试有什么区别

1.性能方面: web页面可能更关注响应时间&#xff0c;而app更关注流量、电量、QPS。 2.系统架构方面&#xff1a; web项目&#xff0c;一般都是b/s架构&#xff0c;基于浏览器的&#xff0c;而app则是c/s的&#xff0c;必须要有客户端。在系统测试的时候就会产生区别了。首从…

使用ntp服务器调整linux系统时间(附带代码示例)

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen 为了防止应用在系统上运行时候&#xff0c;系统时间与真实时间出现误差。可以调用ntp服务器获取正确的时间进行调整 NTP简介 网络时间协议&#xff08;NTP&…

Qt扫盲-QTableView理论总结

QTableView理论总结 一、概述二、导航三、视觉外观四、坐标系统五、示例代码1. 性别代理2. 学生信息模型3. 对应视图 一、概述 QTableView实现了一个tableview 来显示model 中的元素。这个类用于提供之前由QTable类提供的标准表&#xff0c;但这个是使用Qt的model/view架构提供…

mysql 8.0.20不停机主从同步

一、环境 CentOS &#xff1a; 7.3.1611 (Core) mysql&#xff1a;8.0.20 二、遇到的问题 1.查看主从同步发现下列问题 error connecting to master repl192.168.0.21:3306 - retry-time: 60 retries: 4 message: Authentication plugin caching_sha2_password reported e…

https协议的nginx请求http协议tomcat,出现静态文件js访问不到的情况!

复现问题&#xff1a; 访问https://1.1.1.1:443/aaa,页面出现静态js,css请求失败&#xff01; F12查看&#xff1a; 分析问题&#xff1a; 问题的根源应该就是浏览器的安全机制&#xff0c;不允许在嵌套在https的页面中进行http请求吧&#xff0c;结合google想到这个应该可以…

用dcker极简打包java.jar镜像并启动

用dcker极简打包java.jar镜像并启动 一、本地打包好jar包 二、新建文件夹&#xff0c;将步骤1中的jar包拷贝到文件夹下 三、同目录下新建Dockerfile ## 基础镜像&#xff0c;这里用的是openjdk:8 FROM openjdk:8## 将步骤一打包好的jar包 拷贝到镜像的 跟目录下[目录可以自定义…

真想学技术,还是不要去外包了,干了三年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

群折射率$ n_g$与有效折射率$ n_{eff}$的关系详细推导(假设$ \lambda_0$为真空入射光波长)

这个关系应该在环谐振器相关的资料中挺常见的。 其中&#xff1a; 注意 β \beta β为传播常数。

我都30了,还能不能做软件测试?

今天在CSDN看到一个问答&#xff0c;我都30了&#xff0c;还能不能做软件测试&#xff1f;我本来想直接回答&#xff0c;但回答的明显字数不够用。所以就干脆就把想说的都记录下来写一篇文章。 1.我今年30岁了&#xff0c;还适不适合做软件测试&#xff1f; 我认为&#xff0c;…

合并单元格

需求&#xff1a; 合并 相同名称的产品 先说下elementUI合并单元格的方法&#xff0c;先计算好要合并的行数rowspan&#xff0c;return {rowspan&#xff0c;colspan}&#xff0c;其他的单元格return{0,0} getData(params) {//临时数组&#xff0c;存放产品名称相同的数量this…

helm安装harbor + nerdctl 制作push 镜像

参考 文章&#xff1a;Helm部署Harbor_helm harbor_风向决定发型丶的博客-CSDN博客 安装好后使用 nerd containerd对接harbor_containerd 容器 insecure-registries 配置_柠是柠檬的檬的博客-CSDN博客 推送镜像 Containerd 对接私有镜像仓库 Harbor - 知乎 接下来我们来…

2023年7月京东洗衣机行业品牌销售排行榜(京东数据分析软件)

2023年上半年&#xff0c;洗衣机市场表现平淡&#xff0c;同环比来看出货量都有一定程度的下滑。7月份&#xff0c;洗衣机市场仍未改变这一下滑态势。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;7月份&#xff0c;京东平台洗衣机的销量为109万&#xff0c;环比下降…

企业为什么需要档案管理系统?

在当今的信息化社会&#xff0c;企业的数据和信息越来越多&#xff0c;而且日益复杂。而这些数据和信息都是企业运营的重要资源&#xff0c;它们的管理与否&#xff0c;直接影响到企业的决策效率&#xff0c;甚至是企业的生存发展。然而&#xff0c;传统的纸质档案管理方式已经…

机器学习实战:Python基于KDE核密度估计进行分布估计(十六)

文章目录 1. 前言1.1 KDE简介1.2 KDE应用领域 2. diy数据集实战演示2.1 导入函数2.2 自定义数据2.3 可视化数据2.4 KDE建模 3. 参数探讨3.1 带宽3.2 选择最佳带宽3.2 核函数 3.4 挑选合适核函数4. 讨论 1. 前言 1.1 KDE简介 核密度估计&#xff08;Kernel Density Estimation…

结构体和数组结合使用

1、定义结构体 struct Student {int num;char name[32]; }; 2、结构体数组定义 #include<iostream> using namespace std;struct Student {int num;char name[32]; }; int main() {//结构体变量复制方式2struct Student arr[2] { {1,"张三"}, {2,"李四…

从系统角度,看智能制造|百世慧®

7月31日我们结束了智能制造专题第二期“电池智能制造质量管理应用及案例分享”的线上研讨会&#xff0c;有不少朋友没有来得及参加智能制造专题第一期研讨会&#xff0c;同时又工作繁忙。所以&#xff01;今天就由我百小能为大家快速讲解第一期研讨会——“电池智能制造应用”的…

【C++】移动赋值运算符

2023年8月15日&#xff0c;周二上午 概述 移动赋值运算符是一个特殊的赋值运算符&#xff0c;用于从一个对象中移动&#xff08;转移&#xff09;资源到另一个对象&#xff0c;而不是进行复制操作。它通常与右值引用一起使用&#xff0c;以实现高效的资源转移&#xff0c;提高…