在Ubuntu24.04上安装多主多从的高可用Kubernetes节点

news2024/11/16 22:26:00

前言

因为镜像拉取失败,所以好多小伙伴说calico网络插件安装失败。之前写过CentOS7上安装多主节点的Kubernets集群,而CentOS7又停止维护了。所以借着在Ubuntu上安装多主的Kubernetes集群的机会,使用国内镜像安装calico网络插件。

视频教程地址:https://www.bilibili.com/video/BV1cus5ehE6y

环境准备

拓扑图

本次安装的为3主3从堆叠etcd集群的k8s集群,使用keepalived和haproxy作为负载均衡器。拓扑图为(图片来自官网):
在这里插入图片描述

安装版本

本次操作系统的版本为 Ubuntu Server 24.04 ,下载地址为:https://mirrors.aliyun.com/ubuntu-releases/noble/ubuntu-24.04-live-server-amd64.iso。

安装的Kubernetes版本为:1.30 也是目前第二新的版本:
在这里插入图片描述

安装的容器运行时为containerd,版本号为 v1.7.20,下载地址为:https://github.com/containerd/containerd/releases/download/v1.7.20/cri-containerd-cni-1.7.20-linux-amd64.tar.gz。

内网环境

我内网的网段为 172.18.0.0/16,所以我分配的IP为每台电脑分配的IP地址为:

IP地址主机名称配置作用
172.18.88.80k8s-control-plane012c4gk8s的第一个主节点
172.18.88.81k8s-control-plane022c4gk8s的第二个主节点
172.18.88.82k8s-control-plane032c4gk8s的第三个主节点
172.18.88.83k8s-apiserver-lb012c2g安装keepalived和haproxy,做主节点apiserver的负载均衡01
172.18.88.84k8s-apiserver-lb022c2g安装keepalived和haproxy,做主节点apiserver的负载均衡02
172.18.88.85k8s-worker012c4gk8s的第一个工作节点
172.18.88.86k8s-worker022c4gk8s的第二个工作节点
172.18.88.87k8s-worker032c4gk8s的第三个工作节点

同时也需要一个虚拟IP地址来负责负载均衡主节点的apiserver,这个IP地址为:172.18.88.88

安装准备

安装ssh软件包

| 此步骤所有服务器都需要做

因为Ubuntu Server默认不支持远程连接,所以需要安装ssh软件包,并启动ssh(同时设置开机自启动),这样我们才能远程连接Ubuntu服务器。执行下面命令安装ssh:

sudo apt install -y ssh

同时执行下面命令启动ssh,并设置ssh开机自启动:

sudo systemctl enable --now ssh

如图:
在这里插入图片描述

接下来就可以连接所有服务器了:
在这里插入图片描述

关闭防火墙

| 这个步骤所有服务器都要做

因为是内网安装,所以可以直接关闭防火墙。ubuntu下执行这行命令关闭并且永久关闭:

sudo systemctl disable --now ufw

关闭Swap分区

| 这个步骤所有安装Kubernetes的节点都要执行,负载均衡节点选择性执行

临时关闭

执行下面命令可临时关闭Swap分区:

sudo swapoff -a

永久关闭

需要修改 /etc/fstab 文件注释掉带 /swap.img 的这一行:
在这里插入图片描述

时间同步

| 这个步骤所有的服务器都要做

设置上海时区

因为ubuntu默认时间并不是中国国内时区,所以需要执行这一行命令设置为中国上海时区:

sudo timedatectl set-timezone Asia/Shanghai

时间同步

首先需要安装ntpdate,执行下面命令安装:

sudo apt install -y ntpdate

执行下面命令进行时间同步:

sudo ntpdate ntp.aliyun.com

修改hosts配置

需要将所有服务器的服务器名和域名绑定一下,所以需要修改 /etc/hosts 文件,修改描述为:
在这里插入图片描述

添加内容为:

172.18.88.80 k8s-control-plane01
172.18.88.81 k8s-control-plane02
172.18.88.82 k8s-control-plane03
172.18.88.83 k8s-apiserver-lb01
172.18.88.84 k8s-apiserver-lb02
172.18.88.85 k8s-worker01
172.18.88.86 k8s-worker02
172.18.88.87 k8s-worker03

启用 IPv4 数据包转发

| 这个步骤所有k8s节点都要做

手动启用 IPv4 数据包转发:

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

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

sysctl net.ipv4.ip_forward

执行如图:
在这里插入图片描述

安装软件

安装容器运行时

下载Containerd

这次选用的容器运行时是 containerd,版本号为 1.7.20。可直接执行下面这行命令下载此安装包:

curl -LO https://github.com/containerd/containerd/releases/download/v1.7.20/cri-containerd-cni-1.7.20-linux-amd64.tar.gz

下载后如图:
在这里插入图片描述

解压压缩包

直接将这个压缩包解压到根目录就可以了,直接执行这行命令:

sudo tar -zxvf cri-containerd-cni-1.7.20-linux-amd64.tar.gz -C /

解压后可以执行这行命令查看版本号:

sudo containerd --version

可以看到安装的 1.7.20 这个版本的containerd:
在这里插入图片描述

修改配置文件

因为安装后默认是不自带配置文件的,所以需要创建目录并生成配置文件。执行这行命令创建目录:

sudo mkdir /etc/containerd

然后执行这行命令生成配置文件:

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

因为默认的pause镜像是在谷歌上拉取的,国内拉取不下来,所以需要修改 /etc/containerd/config.toml 配置文件,将pause镜像改为 registry.aliyuncs.com/google_containers/pause:3.9,如图所示:
在这里插入图片描述

然后需要开启cgroup,用于限制分配给进程的资源。将SystemCgroup设置为true,如图所示:
在这里插入图片描述

注意要保存哦。

启动containerd

执行这行命令启动containerd,并设置为开机自启动:

sudo systemctl enable --now containerd

然后可以查看启动结果:
在这里插入图片描述

安装Kubernetes

安装keepalived和haproxy

| 此步骤仅用在负载均衡服务器上做即可

执行下面命令安装:

sudo apt install -y keepalived haproxy

修改keepalived配置文件

配置文件地址为/etc/keepalived/keepalived.conf,keepalived配置文件主节点和从节点内容不同,配置文件如下:

! /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_script check_apiserver {
  script "/etc/keepalived/check_apiserver.sh"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
    ! 主节点为MASTER,从节点为BACKUP
    state MASTER/BACKUP
    ! 网卡接口名字
    interface ens160
    virtual_router_id 51
    ! 主节点为101,从节点为100
    priority 101/100
    authentication {
        auth_type PASS
        auth_pass XiaoHH
    }
    virtual_ipaddress {
        ! 虚拟IP地址,注意修改为你自己的地址
        172.18.88.88
    }
    track_script {
        check_apiserver
    }
}

内容:

  • state: 状态,主节点为MASTER,从节点为BACKUP
  • interface:物理接口名称,获取可执行下面命令:
ip a

获取内容如下:
在这里插入图片描述

  • priority:优先级,主节点为101,从节点为100
  • virtual_ipaddress:虚拟IP地址,我的为 172.18.88.88 ,注意修改为你自己规划的IP地址

所以主节点配置文件内容为:

! /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_script check_apiserver {
  script "/etc/keepalived/check_apiserver.sh"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 51
    priority 101
    authentication {
        auth_type PASS
        auth_pass XiaoHH
    }
    virtual_ipaddress {
        172.18.88.88
    }
    track_script {
        check_apiserver
    }
}

从节点配置文件内容为:


! /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL
}
vrrp_script check_apiserver {
  script "/etc/keepalived/check_apiserver.sh"
  interval 3
  weight -2
  fall 10
  rise 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 100
    authentication {
        auth_type PASS
        auth_pass XiaoHH
    }
    virtual_ipaddress {
        172.18.88.88
    }
    track_script {
        check_apiserver
    }
}

keepalived还需要一个健康检查脚本,脚本地址为 /etc/keepalived/check_apiserver.sh ,注意我规划的负载均衡端口为6443,如果不同注意修改为你自己的。内容为(主从节点内容一样):

#!/bin/sh

errorExit() {
    echo "*** $*" 1>&2
    exit 1
}

curl -sfk --max-time 2 https://localhost:6443/healthz -o /dev/null || errorExit "Error GET https://localhost:6443/healthz"

然后需要将这个文件添加执行权限,执行下面命令:

sudo chmod +x /etc/keepalived/check_apiserver.sh

修改haproxy配置文件

该配置文件地址为 /etc/haproxy/haproxy.cfg,需要修改到内容为:

# /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log stdout format raw local0
    daemon

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 1
    timeout http-request    10s
    timeout queue           20s
    timeout connect         5s
    timeout client          35s
    timeout server          35s
    timeout http-keep-alive 10s
    timeout check           10s

#---------------------------------------------------------------------
# apiserver frontend which proxys to the control plane nodes
#---------------------------------------------------------------------
frontend apiserver
    # 负载均衡端口
    bind *:6443
    mode tcp
    option tcplog
    default_backend apiserverbackend

#---------------------------------------------------------------------
# round robin balancing for apiserver
#---------------------------------------------------------------------
backend apiserverbackend
    option httpchk

    http-check connect ssl
    http-check send meth GET uri /healthz
    http-check expect status 200

    mode tcp
    balance     roundrobin

    # 主节点列表,注意IP地址修改为你自己的
    server k8s-control-plane01 172.18.88.80:6443 check verify none
    server k8s-control-plane02 172.18.88.81:6443 check verify none
    server k8s-control-plane03 172.18.88.82:6443 check verify none

修改结果为:
在这里插入图片描述

启动keepalived和haproxy

使用下面命令启动keepalived和haproxy,并开机自启动:

sudo systemctl enable --now keepalived
sudo systemctl enable --now haproxy

看到下面结果代表启动成功:
在这里插入图片描述

安装kubelet kubeadm kubectl

以下指令适用于 Kubernetes 1.30。更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:

sudo apt-get update
# apt-transport-https 可能是一个虚拟包(dummy package);如果是的话,你可以跳过安装这个包
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

下载用于 Kubernetes 软件包仓库的公共签名密钥。所有仓库都使用相同的签名密钥,因此你可以忽略URL中的版本:

# 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

添加 Kubernetes apt 仓库:

# 此操作会覆盖 /etc/apt/sources.list.d/kubernetes.list 中现存的所有配置。
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

安装成功后可以查看版本:
在这里插入图片描述

初始化集群

首先可以只在主节点上拉取镜像,执行下面命令:

sudo kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.30.4

在这里插入图片描述

然后在任意一台主节点上执行下面命令进行初始化:

sudo kubeadm init \
--apiserver-advertise-address=172.18.88.80 \
--control-plane-endpoint="172.18.88.88:6443" \
--upload-certs \
--image-repository=registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.30.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///run/containerd/containerd.sock

参数解释:

  • –apiserver-advertise-address:执行这行命令的主节点IP地址,注意修改为你自己的
  • –control-plane-endpoint:负载均衡apiserver的虚拟IP地址和端口,注意修改为自己的
  • –upload-certs:标志用来将在所有控制平面实例之间的共享证书上传到集群
  • –image-repository:因为官方镜像在谷歌,国内拉取不下来,所以使用国内的阿里云镜像
  • –kubernetes-version:Kubernetes的版本号
  • –service-cidr:Service的网段地址
  • –pod-network-cidr:pod的网段地址
  • –cri-socket:标志使用containerd作为容器运行时

执行后初始化成功如图:
在这里插入图片描述

在初始化成功的主节点本地执行:

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

其余主节点执行这条命了加入主节点集群,注意后面加上了 --cri-socket=unix:///run/containerd/containerd.sock 来使用containerd作为容器运行时(注意复制你自己的):

sudo kubeadm join 172.18.88.88:6443 --token xsp48h.uzkxsr9bd58vmey2 \
--discovery-token-ca-cert-hash sha256:2ed5ad71a9adfcc2f4fb7e4c3b3f5bca53fae29bd21d4788820ed34eddf27049 \
--control-plane --certificate-key e0472e957c5a54cea8eb41aefc47abe52c701ed3f65a1cc17c524b34163404a8 \
--cri-socket=unix:///run/containerd/containerd.sock

执行成功后可以看到提示,同样圈起来命令需要本地执行一下:
在这里插入图片描述

然后可以执行如下命令查看已经加入的节点:

kubectl get nodes -o wide

可以看到三个主节点加入成功:
在这里插入图片描述

然后在所有工作节点下执行下面命令,以加入工作节点。注意同样添加了 --cri-socket=unix:///run/containerd/containerd.sock 参数(注意复制你自己的):

sudo kubeadm join 172.18.88.88:6443 --token xsp48h.uzkxsr9bd58vmey2 \
--discovery-token-ca-cert-hash sha256:2ed5ad71a9adfcc2f4fb7e4c3b3f5bca53fae29bd21d4788820ed34eddf27049 \
--cri-socket=unix:///run/containerd/containerd.sock

执行后可以看到加入成功:
在这里插入图片描述

安装calico网络插件

calico网络插件的地址为:https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart

我事先将镜像做好了,并且提交到了阿里云。安装分两种情况安装calico:

如果你的节点数量小于等于50,执行下面这行命令安装calico:

kubectl create -f https://raw.githubusercontent.com/xiaohh-me/kubernetes-yaml/main/network/calico/calico-v3.28.1.yaml

如果你的节点数量大于50个,执行这行命令进行安装calico:

kubectl create -f https://raw.githubusercontent.com/xiaohh-me/kubernetes-yaml/main/network/calico/calico-typha-v3.28.1.yaml

根据你的的节点数量进行选择性安装,因为我的节点数量包括主节点只有六个,所以选择上面那行命令。执行结果如图:
在这里插入图片描述

可以执行下面命令查看是否安装成功:

kubectl get pod -o wide -n kube-system

当这些calico的pod都为执行状态的时候则代表calico安装完成:
在这里插入图片描述

测试部署一个应用程序

将安装一个nginx应用程序来测试这个kubernetes是否搭建成功,执行下面命令:

kubectl apply -f https://raw.githubusercontent.com/xiaohh-me/kubernetes-yaml/main/deployment/nginx/nginx-deploy-1.25.5.yaml

执行这行命令可以看结果:
在这里插入图片描述

访问任意一个节点的30080端口可以看到nginx访问成功:
在这里插入图片描述

Kubernetes多主节点的集群就安装完成了,你们也可以参考我之前的文章或视频,了解包括metallb,ingress等组件的安装,使自己的kubernetes集群更加完善。

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

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

相关文章

Git实现代码托管

在电脑端下载git:Git - 安装 Git (git-scm.com) 点击继续下载&#xff1a;一直next即可 下载完毕 winR:cmd 输入&#xff1a;git 不报错即可 登录 gitee账号&#xff0c;根据教程完成内容即可创建成功 &#xff01;&#xff01;一定要先登录邮箱账号…

深度学习环境安装与验证指南

目录 1. 项目背景 2. 系统与软件版本 2.1 操作系统与硬件 2.2 软件版本 2.3对应版本 3. 环境配置步骤 3.1 安装 Anaconda 3.2 创建虚拟环境 3.3 安装 CUDA 和 cuDNN 3.3.1 安装 CUDA 11.8 3.3.2 安装 cuDNN 8.6 3.3.3 验证 CUDA 和 cuDNN 安装 3.4 安装 TensorFlo…

国产网卡品牌崛起,做好网络信息安全的“守门人”

在信息技术日新月异的时代背景下&#xff0c;信息安全不仅关乎个人隐私保护&#xff0c;更是国家安全与经济发展的基石。LR-LINK联瑞凭借其前瞻性的视野和深厚的研发实力&#xff0c;成功自主研发出全国产化的FPGA&#xff08;现场可编程门阵列&#xff09;网闸隔离卡方案&…

企业园区智慧升级:电子墨水屏标签打造环保高科技工作空间

“双碳”目标和“数字中国”建设推动企业绿色转型。企业园区作为城市数字化的重要组成部分&#xff0c;传统纸质显示方式已不适应数字化转型的需求。墨水屏技术凭借低功耗和信息便捷更新的优势&#xff0c;成为园区数智显示的新方案&#xff0c;助力绿色数字化转型&#xff0c;…

网络科学导论,网络同步与控制

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

swf怎么转换成mp4格式?视频格式转换,就看这2个办法

许多用户在处理多媒体文件时经常遇到的问题swf文件的转换问题。swf文件作为Flash动画的标准格式&#xff0c;曾经在网页设计和互动媒体中占据重要地位。然而&#xff0c;随着技术的发展和Flash的逐渐淘汰&#xff0c;越来越多的用户需要将swf文件转换为更通用的视频格式&#x…

视频中间件:与海康ISC平台级联

视频中间件是一款对各种视频流的接入处理并能通过标准H5接口输出的安防视频管理软件。其设备兼容性、并发性能、接口输出等方面表现突出&#xff0c;方便了行业跨平台、跨系统的第三方系统和应用对接。在很多的应用场景中&#xff0c;不仅仅是提供标准H5接口与其业务系统的互联…

详细解说数据库课程设计mysql

数据库课程设计中&#xff0c;MySQL是一个非常重要的工具&#xff0c;它是一种关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛应用于各种规模的项目中。下面&#xff0c;我将详细解说在数据库课程设计中如何使用MySQL进行设计。 1. 理解数据库设计的基本…

STM32f103(固件库)

1.工程创建 新建STM32工程 步骤一&#xff1a;创建工程模板文件1.新建一个文件夹 template 2.在文件夹template里面新建六个文件&#xff08;1&#xff09;CMSIS&#xff1a; 存放内核驱动程序和启动引导文件&#xff08;2&#xff09;FWLIB&#xff1a;存放库函数文件&#…

使用twilio向手机发短信做监控报警

最近遇到个需求&#xff0c;就是夜班HW希望有个监控系统指标&#xff0c;如果异常就向监控人手机打电话的需求。在考察以后&#xff0c;发现目前由于国内防电信诈骗的原因&#xff0c;所以想要使用云通讯功能必须由企业去申请&#xff0c;但作为一个个人的监控项目来说太大了。…

【MySQL 15】使用 C/C++ 连接数据库

文章目录 &#x1f308; 一、引入 MySQL 库⭐ 1. 下载库文件⭐ 2. 上传库文件⭐ 3. 引用库文件⭐ 4. 验证是否引入成功 &#x1f308;二、MySQL 接口介绍⭐ 1. 初始化⭐2. 连接数据库⭐ 3. 关闭数据库连接⭐ 4. 设置编码格式⭐ 5. 发送 sql 指令&#x1f319; 5.1 向数据库表中…

Ant Design vue 多层for循环form表单自定义校验

数据结构如下&#xff1a;三维数组。 注意&#xff1a;<a-form-model>一定得写在for外面&#xff01;&#xff01;&#xff01;&#xff01; <!-- 弹出框 --> <a-modal:title"title":dialog-style"{ top: 20px }":visible"visible&quo…

日历显示项目

日历显示&#xff1a; //头文件#ifndef __HEAD_DALY_H__ #define __HEAD_DALY_H__#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include <stdint.h>uint32_t months[12]; extern bool is_leap(uint32_t …

02.标准化编程规范

1. 前言 在日常开发中&#xff0c;随着团队人员的变更&#xff0c;功能迭代&#xff0c;如果没有一套规范约束大家&#xff0c;就会导致项目中的代码充斥着各种代码风格&#xff0c;会导致后期维护起来十分困难&#xff0c;所以有必要去制定一套规范。互联网发展到今天&#x…

九月更新|用这个方法,小白在国内也能轻松使用ChatGPT,GPT新手使用手册(编程代码)

一、 ChatGPT可以做什么&#xff1f; ChatGPT能做的事情非常多&#xff01;它不仅仅是一个对话AI。以下是一些主要功能&#xff1a; 1. 回答问题&#xff1a;无论是学术问题、技术问题&#xff0c;还是生活琐事&#xff0c;ChatGPT都能提供帮助。 2. 写作助手&#xff1a;可以…

html+css 实现 带射灯的浮雕按钮

前言:哈喽,大家好,今天给大家分享html+css 实现 带射灯的浮雕按钮!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎点赞、收藏+关注哦 💕 文章目录 效果原理解析1.此按钮效果主要是运用了==css3属性的box-shadow和…

用实时计算释放当下企业大数据潜能

摘要&#xff1a;本文整理自阿里云高级产品解决方案架构师王启华&#xff08;敖北&#xff09;老师在 Flink Forward Asia 2023 中闭门会的分享。内容分为以下五个部分&#xff1a; 1. 实时计算在大数据计算发展中的趋势 2. 实时计算对于企业生产的意义 3. 阿里云飞天大数据产品…

Nginx实验-2

Nginx中的变量 变量可以分为内置变量和自定义变量 内置变量是由nginx模块自带&#xff0c;通过变量可以获取到众多的与客户端访问相关的值 [rootnginx ~]# cd /usr/local/nginx/ [rootnginx nginx]# cd conf.d/ [rootnginx conf.d]# ls status.conf vhost.conf [rootngin…

五种多目标优化算法(NSGA3、MOPSO、MOGWO、NGSA2、SPEA2)性能对比,包含47个多目标测试函数,6种评价指标,MATLAB代码

一、五种多目标算法及六种评价指标简介 多目标灰狼优化算法&#xff08;MOGWO&#xff09;&#xff1a; MOGWO是由Mirjalili等人在2016年提出的&#xff0c;基于灰狼优化算法&#xff08;GWO&#xff09;的多目标版本。它引入了存档机制和改进的头狼选择方式&#xff0c;以处理…

【Python报错已解决】`TypeError: an integer is required (got type bytes)`

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法&#xff1a;2.1 方法一2.2 步骤二 三、其他解决…