Kubernetes(K8s 1.28.x)部署---创建方式Docker(超详细)

news2024/12/23 8:10:37

目录

一、基础环境配置(所有主机均要配置)

1、配置IP地址和主机名、hosts解析

2、关闭防火墙、禁用SELinux

3、安装常用软件

4、配置时间同步

5、禁用Swap分区

6、修改linux的内核参数

7、配置ipvs功能

二、容器环境操作

1、定制软件源

2、安装最新版docker

3、配置docker加速器

4、启动docker

三、cri环境操作

1、cri-dockerd-0.3.4.amd64.tgz 下载

2、解压到指定目录并查看

 3、定制配置文件

4、启动服务

四、harbor仓库操作

1、docker-compose-linux-x86_64下载

2、给权限并解压到创建的目录中

3、加载镜像

4、修改配置文件

5、定制服务启动文件

6、测试

 五、k8s集群初始化

1、定制软件源--所有节点

2、环境部署--所有节点

3、检查镜像文件列表--只在一个节点操作

4、在harbor仓库中创建项目

 5、在master节点上获取镜像文件

6、master节点初始化

7、node节点加入

六、k8s环境收尾操作--master节点操作

1、权限操作

2、命令补全

3、下载kube-flannel.yml

4、编辑脚本并执行

 5、修改配置文件

6、应用配置文件

 7、检查效果

 8、查看集群状态

七、扩展:kubectl可以在node节点上运行吗?

一、基础环境配置(所有主机均要配置)

主机名规划:

序号主机ip主机名规划用途
1192.168.226.150kubernetes-master.openlab.cnkubernetes-master
2192.168.226.151kubernetes-node1.openlab.cnkubernetes-node1
3192.168.226.152kubernetes-node2.openlab.cnkubernetes-node2
4192.168.226.153kubernetes-node3.openlab.cnkubernetes-node3
5192.168.226.155kubernetes-register.openlab.cnkubernetes-register

环境准备:Centos7.9    2颗CPU  4G内存   50G硬盘

1、配置IP地址和主机名、hosts解析

主机名修改: 
hostnamectl set-hostname kubernetes-master.openlab.cn

hosts解析
[root@localhost ~]# vi /etc/hosts
192.168.226.150 kubernetes-master.openlab.cn kubernetes-master
192.168.226.151 kubernetes-node1.openlab.cn kubernetes-node1
192.168.226.152 kubernetes-node2.openlab.cn kubernetes-node2
192.168.226.153 kubernetes-node3.openlab.cn kubernetes-node3
192.168.226.155 kubernetes-register.openlab.cn kubernetes-register

2、关闭防火墙、禁用SELinux

[root@kubernetes-master ~]# systemctl stop firewalld
[root@kubernetes-master ~]# systemctl disable firewalld
[root@kubernetes-master ~]# sed -i  '/^SELINUX=/ c  SELINUX=disabled' /etc/selinux/config
[root@kubernetes-master ~]# setenforce 0

3、安装常用软件

[root@kubernetes-master ~]# yum install -y wget tree bash-completion lrzsz psmisc net-tools vim

4、配置时间同步

[root@kubernetes-master ~]# yum install chrony -y
[root@kubernetes-master ~]# vim /etc/chrony.conf
...
注释第三行到第六行
:3,6 s/^/#
使用阿里云的时间服务器
server ntp1.aliyun.com iburst

启动服务
[root@kubernetes-master ~]# systemctl enable --now chronyd

测试
[root@kubernetes-master ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample     
=====================================================================
^* 120.25.115.20                 2   6    17     4   +145us[ +123us]

5、禁用Swap分区

临时禁用
[root@localhost ~]# swapoff -a
	
永久禁用
[root@localhost ~]# sed -i 's/.*swap.*/#&/' /etc/fstab
	
检测:
[root@kubernetes-node1 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819         385         229           9        1204        1259
Swap:             0           0           0

6、修改linux的内核参数

cat >> /etc/sysctl.d/k8s.conf << EOF

#内核参数调整
vm.swappiness=0
#配置iptables参数,使得流经网桥的流量也经过iptables/netfilter防火墙
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

#配置生效
#加载网桥过滤模块
# modprobe br_netfilter
# modprobe overlay

#重新加载
[root@kubernetes-master ~]# sysctl -p /etc/sysctl.d/k8s.conf
vm.swappiness = 0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

7、配置ipvs功能

# 1 安装ipset和ipvsadm
[root@kubernetes-master ~]# yum install ipset ipvsadm -y

# 2 添加需要加载的模块写入脚本文件
[root@kubernetes-master ~]# cat <<EOF >  /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF

# 3 为脚本文件添加执行权限
[root@kubernetes-master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

# 4 执行脚本文件
[root@kubernetes-master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules

# 5 查看对应的模块是否加载成功
[root@kubernetes-master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145458  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139264  1 ip_vs
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack

二、容器环境操作

1、定制软件源

[root@kubernetes-master ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@kubernetes-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2、安装最新版docker

yum install -y docker-ce

3、配置docker加速器

[root@kubernetes-master ~]# cat >> /etc/docker/daemon.json <<-EOF
{
"registry-mirrors": [
    "http://74f21445.m.daocloud.io",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
 ], 
 "insecure-registries": ["kubernetes-register.openlab.cn"],
 "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

4、启动docker

[root@kubernetes-master ~]# systemctl daemon-reload
[root@kubernetes-master ~]# systemctl enable --now docker

三、cri环境操作

1、cri-dockerd-0.3.4.amd64.tgz 下载

地址:Releases · Mirantis/cri-dockerd (github.com)

2、解压到指定目录并查看

[root@kubernetes-master ~]# tar xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/
[root@kubernetes-master ~]# mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin/
[root@kubernetes-master ~]# cri-dockerd --version
cri-dockerd 0.3.4 (e88b1605)

 3、定制配置文件

cat > /etc/systemd/system/cri-dockerd.service<<-EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory=/var/lib/dockershim --docker-endpoint=unix:///var/run/docker.sock --
cri-dockerd-root-directory=/var/lib/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

cat > /etc/systemd/system/cri-dockerd.socket <<-EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF

4、启动服务

启动服务
设置服务开机自启动
[root@kubernetes-master ~]# systemctl daemon-reload
[root@kubernetes-master ~]# systemctl enable --now cri-dockerd.service

四、harbor仓库操作

只在仓库机器上执行

1、docker-compose-linux-x86_64下载

下载地址:Releases · docker/compose · GitHub

2、给权限并解压到创建的目录中

给权限
install -m 755 docker-compose-linux-x86_64 /usr/local/bin/docker-compose

创建目录
mkdir -p /data/server

解压
tar xf harbor-offline-installer-v2.8.4.tgz -C /data/server/

进入目录
cd /data/server/harbor/

3、加载镜像

docker load -i harbor.v2.8.4.tar.gz 

4、修改配置文件

复制文件
cp harbor.yml.tmpl harbor.yml
修改文件
vim harbor.yml

修改如下:
hostname: kubernetes-register.openlab.cn
#https:
#  port: 443
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

harbor_admin_password: 123456
data_volume: /data/server/harbor/data

运行
./prepare
./install.sh

5、定制服务启动文件

/etc/systemd/system/harbor.service
[Unit]
Description=Harbor
After=docker.service systemd-networkd.service systemd-resolved.service
Requires=docker.service
Documentation=http://github.com/vmware/harbor
[Service]
Type=simple
Restart=on-failure
RestartSec=5
#需要注意harbor的安装位置
ExecStart=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml up
ExecStop=/usr/local/bin/docker-compose --file /data/server/harbor/docker-compose.yml down
[Install]
WantedBy=multi-user.target

重启
# systemctl daemon-reload
# systemctl enable harbor.service
# systemctl restart harbor

6、测试

只在k8s集群某一个节点
在master

下载镜像
# docker pull busybox
登录仓库
# docker login kubernetes-register.openlab.cn -u admin -p 123456
定制镜像标签
# docker tag busybox:latest kubernetes-register.openlab.cn/library/busybox:latest
推送镜像
# docker push kubernetes-register.openlab.cn/library/busybox:latest

 五、k8s集群初始化

1、定制软件源--所有节点

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

2、环境部署--所有节点

# yum install kubeadm kubectl kubelet -y

3、检查镜像文件列表--只在一个节点操作

kubeadm config images list

4、在harbor仓库中创建项目

网页:http://192.168.226.155

账号:admin 密码:123456

 5、在master节点上获取镜像文件

# cat images.sh 
#!/bin/bash
images=$(kubeadm config images list --kubernetes-version=1.28.0 | awk -F'/' '{print $NF}')
for i in ${images}
do
  docker pull registry.aliyuncs.com/google_containers/$i
  docker tag registry.aliyuncs.com/google_containers/$i kubernetes-register.openlab.cn/google_containers/$i
  docker push kubernetes-register.openlab.cn/google_containers/$i
  docker rmi registry.aliyuncs.com/google_containers/$i
done


执行脚本文件
sh images.sh

6、master节点初始化

kubeadm init --kubernetes-version=1.28.0 \
####注意修改下面一行的地址为自己的master地址
--apiserver-advertise-address=192.168.226.150 \
--image-repository kubernetes-register.openlab.cn/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=Swap \
--cri-socket=unix:///var/run/cri-dockerd.sock

7、node节点加入

kubeadm join 192.168.226.150:6443 --token jie7an.cr33vmg6iwxu4jod \
--cri-socket=unix:///var/run/cri-dockerd.sock \
--discovery-token-ca-cert-hash sha256:7258022a0aeead42dd63fbcca3e1418df26b2f59f89ffce238066ee22032b435

注意不要直接复制,修改为自己的

六、k8s环境收尾操作--master节点操作

1、权限操作

定制k8s的登陆权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

2、命令补全

放到master主机的环境文件中
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(kubeadm completion bash)" >> ~/.bashrc
source ~/.bashrc

3、下载kube-flannel.yml

如果找不到下载,可以QQ联系我:1445144210

4、编辑脚本并执行

# cat flannel.sh 
#!/bin/bash

for i in $(grep image kube-flannel.yml | grep -v '#' | awk -F '/' '{print $NF}')
do
	docker pull flannel/$i
	docker tag flannel/$i kubernetes-register.openlab.cn/google_containers/$i
	docker push kubernetes-register.openlab.cn/google_containers/$i
	docker rmi flannel/$i
done

执行脚本文件:sh flannel.sh

 5、修改配置文件

sed -i '/ image:/s#docker.io/flannel#kubernetes-register.openlab.cn/google_containers#' kube-flannel.yml

6、应用配置文件

# kubectl apply -f kube-flannel.yml

 7、检查效果

[root@kubernetes-master ~]# kubectl get node
NAME                           STATUS   ROLES           AGE   VERSION
kubernetes-master.openlab.cn   Ready    control-plane   18m   v1.28.0
kubernetes-node1.openlab.cn    Ready    <none>          16m   v1.28.0
kubernetes-node2.openlab.cn    Ready    <none>          16m   v1.28.0
kubernetes-node3.openlab.cn    Ready    <none>          16m   v1.28.0
[root@kubernetes-master ~]# kubectl get pod -n kube-system 
NAME                                                   READY   STATUS    RESTARTS   AGE
coredns-76f899b8cf-f5d5g                               1/1     Running   0          18m
coredns-76f899b8cf-qd5zl                               1/1     Running   0          18m
etcd-kubernetes-master.openlab.cn                      1/1     Running   0          18m
kube-apiserver-kubernetes-master.openlab.cn            1/1     Running   0          18m
kube-controller-manager-kubernetes-master.openlab.cn   1/1     Running   0          18m
kube-proxy-c5lbh                                       1/1     Running   0          18m
kube-proxy-h5s6t                                       1/1     Running   0          16m
kube-proxy-lkpxq                                       1/1     Running   0          16m
kube-proxy-zqbrh                                       1/1     Running   0          16m
kube-scheduler-kubernetes-master.openlab.cn            1/1     Running   0          18m



#使用第二条命令全是Running就表示完成了

 8、查看集群状态

[root@kubernetes-master ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE   ERROR
controller-manager   Healthy   ok        
etcd-0               Healthy   ok        
scheduler            Healthy   ok 

七、扩展:kubectl可以在node节点上运行吗?

kubectl的运行是需要进行配置的,它的配置文件是$HOME/.kube,如果想要在node节点运行此命令,需要将master上的.kube文件复制到node节点上,即在master节点上执行下面操作:

scp  -r  $HOME/.kube   kubernetes-node1.openlab.cn:$HOME/
​scp  -r  $HOME/.kube   kubernetes-node2.openlab.cn:$HOME/
​scp  -r  $HOME/.kube   kubernetes-node3.openlab.cn:$HOME/

 测试:在node节点

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

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

相关文章

RocketMQ消息队列-@RocketMQMessageListener实现原理

使用Spring-RocketMQ时&#xff0c;只需要引入rocketmq-spring-boot-starter包&#xff0c;并且定义以下消费者&#xff0c;就可以很简单的实现消息消费 Component RocketMQMessageListener(topic "first-topic", consumerGroup "my-producer-group", s…

过滤器的应用-Filter

过滤器 1.工作原理 2.创建Filter 2.1通过注解的方式实现 //创建一个类&#xff0c;实现Filter接口 WebFilter(urlPatterns "/myfilter") //urlPatterns表示需要拦截的路径 public class MyFilter implements Filter {Overridepublic void doFilter(ServletReques…

深度解读NeuS代码(1):输入数据格式

准备训练数据 在preprocess_cutsom_data中&#xff0c;笔者采取第二个经过colmap的方法。但是这个方法其实需要一个前置结果&#xff0c;即colmap与LLFF的处理。接下来分别讨论&#xff1a; Colmap 一个非常好的操作流程在这里&#xff1a; https://zhuanlan.zhihu.com/p/57…

Kubernetes(k8s)安装NFS动态供给存储类并安装KubeSphere

Kubernetes安装NFS动态供给存储类并安装KubeSphere KubeSphere介绍环境准备KubeSphereNFS动态供给 安装NFS动态供给搭建NFS下载动态供给驱动修改驱动文件安装动态供给 安装KubeSphere下载KubeSphere的yaml资源清单文件安装KubeSphere 使用KubeSphere部署应用创建项目部署MySQL …

Android 13 - Media框架(9)- NuPlayer::Decoder

这一节我们将了解 NuPlayer::Decoder&#xff0c;学习如何将 MediaCodec wrap 成一个强大的 Decoder。这一节会提前讲到 MediaCodec 相关的内容&#xff0c;如果看不大懂可以先跳过此篇。原先觉得 Decoder 部分简单&#xff0c;越读越发现自己的无知&#xff0c;Android 源码真…

nginx-缓存

disk cache&#xff1a;磁盘缓存数据&#xff0c;有时间延迟&#xff0c;但是非常小&#xff0c;相对于直接请求服务器返回 对于用户来说基本无感知。 memory cache&#xff1a;磁盘缓存数据&#xff0c;基本上没有时间延迟 协商缓存&#xff08;nginx自带功能&#xff0c; 不…

机器人中的数值优化(五)——信赖域方法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

18.kthread_worker:内核线程异步传输

目录 kthread_worker 驱动传输数据的方式 同步传输 异步传输 头文件 kthread_worker结构体 kthread_work结构体 kthread_flush_work结构体 init_kthread_worker()函数 为kthread_worker创建内核线程 init_kthread_work()函数 启动工作 刷新工作队列 停止内核线程…

3D点云测量:计算三个平面的交点

文章目录 0. 测试效果1. 基本内容文章目录:3D视觉测量目录微信:dhlddxB站: Non-Stop_0. 测试效果 1. 基本内容 计算三个平面的交点需要找到满足所有三个平面方程的点。三个平面通常由它们的法向量和通过它们的点(或参数形式的方程)来定义。以下是计算三个平面的交点的一般步…

在VScode中使用sftp传输本地文件到服务器端

安装SFTP 在VScode的扩展中安装sftp 注意这里需要在你没连接服务器的状态下安装&#xff0c;即本机需要有sftp 配置传输端口 安装成功后&#xff0c;使用快捷键"ctrlshiftp",输入sftp&#xff0c;选择Config 根据自己的实际情况修改配置文件&#xff0c;主要改h…

设计模式-6--装饰者模式(Decorator Pattern)

一、什么是装饰者模式&#xff08;Decorator Pattern&#xff09; 装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你在不修改现有对象的情况下&#xff0c;动态地将新功能附加到对象上。这种模式通过创建一个包装类&#xff0c;…

排序之交换排序

文章目录 前言一、冒泡排序1、冒泡排序基本思想2、冒泡排序的效率 二、快速排序 -- hoare版本1、快速排序基本思想2、快速排序代码实现3、为什么最左边值做key时&#xff0c;右边先走 三、快速排序 -- 挖坑法1、快速排序 -- 挖坑法基本思想2、快速排序 -- 挖坑法代码实现3、为什…

stable diffusion实践操作-随机种子seed

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、seed是什么&#xff1f;二、使用步骤1.多批次随机生成多张图片2.提取图片seed3. 根据seed 再次培养4 seed使用4.1 复原别人图4.1 轻微修改 三、差异随机种子1. webUI位置2. 什么是差异随机种子3.使用差异…

找redis大key工具rdb_bigkeys

github官网 https://github.com/weiyanwei412/rdb_bigkeys 在centos下安装go [roothadoop102 rdb_bigkeys-master]# wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz [roothadoop102 rdb_bigkeys-master]# tar -zxf go1.13.5.linux-amd64.tar.gz -C /usr/local将g…

安装bpftrace和bcc的踩坑记录

最后在Ubuntu22.04使用Ubuntu提供的安装命令完成了安装。这里是记录尝试在Ubuntu18.04和Ubuntu22.04使用源码安装未果的过程。 文章目录 22版本安装bcc准备工具安装命令使用报错&#xff1a;iovisor封装的安装方式ubuntu的安装方式 For Bionic (18.04 LTS)官方提供的源码安装准…

SpringCloudGateway集成SpringDoc

SpringCloudGateway集成SpringDoc 最近在搞Spring版本升级&#xff0c;按客户要求升级Spring版本&#xff0c;原来用着SpringBoot 2.2.X版本&#xff0c;只需要升级SpringBoot 2.X最新版本也就可以满足客户Spring版本安全要求&#xff0c;可是好像最新的SpringBoot 2.X貌似也不…

Laravel chunk和chunkById的坑

在编写定时任务脚本的时候&#xff0c;经常会用到chunk和chunkById的API。 一、前言 数据库引擎为innodb。 表结构简述&#xff0c;只列出了本文用到的字段。 字段类型注释idint(11)IDtypeint(11)类型mark_timeint(10)标注时间&#xff08;时间戳&#xff09; 索引&#x…

手撕 视觉slam14讲 ch13 代码(1)工程框架与代码结构

在学习slam一年之后开始&#xff0c;开始自己理思路&#xff0c;全手敲完成ch13的整个代码 我们按照自己写系统的思路进行&#xff0c;首先确定好SLAM整体系统的流程&#xff0c;见下图&#xff0c;输入为双目图像&#xff0c;之后进入前端位姿估计和后端优化&#xff0c;中间…

滑动窗口实例3(最大连续1的个数Ⅲ)

题目&#xff1a; 给定一个二进制数组 nums 和一个整数 k&#xff0c;如果可以翻转最多 k 个 0 &#xff0c;则返回 数组中连续 1 的最大个数 。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1,0,0,0,1,1,1,1,0], K 2 输出&#xff1a;6 解释&#xff1a;[1,1,1,0,0,1,1…

stable diffusion实践操作-宽高设置以及高清修复

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、SD宽高怎么设置&#xff1f;1.1 宽高历史 二、高清修复总结 前言 主要介绍SD的宽高设置以及高清修复 一、SD宽高怎么设置&#xff1f; 1.1 宽高历史 SD生成256256图片效果最好。512512是SD一直使用的画…