K8s 安装部署-Master和Minion(Node)文档
K8s 安装部署-Master和Minion(Node)文档
操作系统版本:CentOS 7.4
Master :172.20.26.167
Minion-1:172.20.26.198
Minion-2:172.20.26.210(后增加节点)
ETCD:172.20.27.218
先安装部署ETCD
yum install etcd -y
cd /etc/etcd/
cp etcd.conf etcd.conf.bak #备份etcd.conf 文件
grep -aivE "#|^$" etcd.conf #去掉#、空行的显示
[root@localhost etcd]# grep -aivE "#|^$" etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"
ETCD_NAME="default"
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
vim etcd.conf
[root@localhost etcd]# mkdir -p /data/etcd/ #创建ETCD的数据目录
[root@localhost etcd]# id etcd #看看ETCD用户
uid=997(etcd) gid=995(etcd) 组=995(etcd)
[root@localhost etcd]# chown -R etcd.etcd /data/etcd/ #对数据目录授权etcd用户和组
[root@localhost etcd]# ls -ld /data/etcd/ #查看数据目录权限
drwxr-xr-x. 2 etcd etcd 6 4月 17 13:32 /data/etcd/
启动ETCD 服务
systemctl start etcd.service
ps -ef |grep -aiE etcd
创建key
etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'
安装部署Master
yum install kubernetes-master flannel -y
[root@bogon kubernetes]# vim apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBE_ETCD_SERVERS="--etcd-servers=http://172.20.26.218:2379"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
因为我们没有配置账号和密码,所以要把“ServiceAccount,”删除掉,否则会出问题
[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true"
KUBE_MASTER="--master=http://172.20.26.167:8080"
[root@bogon kubernetes]# systemctl start kube-apiserver
[root@bogon kubernetes]# systemctl start kube-controller-manager
[root@bogon kubernetes]# systemctl start kube-scheduler
[root@bogon]#ps -ef | grep kube
查看kube-apiserver、kube-controller-manager、kube-scheduler服务进程都起来了,到此Master 端部署完成。
也可以使用for I in 命令重新启动各个服务:
for I in etcd kube-apiserver kube-controller-manager kube-scheduler; do
systemctl restart $I
systemctl enable $I
systemctl status $I
done
安装部署(Node)Minion端
yum install kubernetes-node docker flannel *rhsm* -y
[root@bogon ~]# cd /etc/kubernetes/
[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true" 在web管理界面中,让勾选“以特权身份运行”生效
KUBE_MASTER="--master=http://172.20.26.167:8080"
[root@bogon kubernetes]# vim kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=172.20.26.198"
KUBELET_API_SERVER="--api-servers=http://172.20.26.167:8080"
vim /etc/sysconfig/flanneld #配置flannel网络
service flanneld start #先启动flanneld服务
service docker start #再启动docker 服务
在Master端也要配置flannel网络
[root@bogon ~]# vim /etc/sysconfig/flanneld
service flanneld start #启动flanneld服务
回到Minion端
启动kubelet、kube-proxy服务
[root@bogon ~]# service kubelet start
Redirecting to /bin/systemctl start kubelet.service
[root@bogon ~]# service kubelet restart
Redirecting to /bin/systemctl restart kubelet.service
[root@bogon ~]# service kube-proxy start
Redirecting to /bin/systemctl start kube-proxy.service
查看相关进程
[root@bogon ~]# ps -ef |grep kube
[root@bogon ~]# ps -ef |grep docker
[root@bogon ~]# ps -ef |grep flanneld
至此Minion端配置完成。
在Master端输入kubectl get nodes 验证是否成功?看到STATUS 的状态为Read 即可
[root@bogon ~]# kubectl get nodes
在Master端查看IP地址信息
在Minion端查看IP地址信息
在Master端查看FORWARD参数策略是否为ACEEPT(允许)?
[root@bogon ~]# iptables -t filter -L -n
Ping Minion端IP地址是通的
[root@bogon ~]# ping 172.17.60.1
[root@bogon ~]# ping 172.17.60.0
在Minion 端ping 172.17.34.0 看是否通
至此,Master和Minion端网络已打通。
在Minion端查看FORWARD 规则参数为DROP(丢弃)状态
需要将FORWARD 规则设置为ACCEPT(允许)状态
[root@bogon ~]# iptables -P FORWARD ACCEPT
[root@bogon ~]# iptables -t filter -L -n
K8S集群搭建完成。
创建K8S的web 管理界面
在Minion端导入两个镜像文件:pod-infrastructure、kubernetes-dashboard-amd64
这两个镜像文件直接从网络上下载可能会超时,导致导入失败,所以可以先从本地上传后进行导入。
Docker镜像导入指令如下:
docker load <pod-infrastructure.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure
docker load <kubernetes-dashboard-amd64.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3
然后在Master端,上传两个yaml文件:dashboard-controller.yaml、dashboard-service.yaml
在Master 端创建k8s目录,将dashboard-controller.yaml、dashboard-service.yaml 移动到k8s目录下
然后修改一下dashboard-controller.yaml文件里的api地址
[root@bogon k8s]# vim dashboard-controller.yaml
保存退出
创建dashboard dashborad pods模块
kubectl create -f dashboard-controller.yaml
kubectl create -f dashboard-service.yaml
[root@bogon k8s]# kubectl get pods -n kube-system
看到STATUS状态为Running ,表示web界面配置成功。
通过浏览器访问Master端IP地址的8080端口
http://172.20.26.167:8080
在http://172.20.26.167:8080后面加上ui 即可访问k8s的web界面
http://172.20.26.167:8080/ui
制作centOS7镜像,先上传一个centos7-ansible镜像包,使用Dockerfile 文件制作镜像
vim Dockerfile
mkdir -p /Docker
将Dockerfile 文件移动到/Docker目录下
mv Dockerfile /Docker/
cd /Docker
docker build -t centos7-ssh:v1 .
在k8s管理界面,点击“创建”,新建一个名称为centos7容器,容器镜像:centos7-ssh:v1,显示高级选项,勾选“以特权身份运行”,点击“部署”
Centos7容器创建完成,点击“容器组”里的“centos7-3728401273-pzr09”新建容器名,
也可以点击右上角的“运行命令“按钮,进入命令行界面
也可以通过Minion端通过ssh 连接进入这个容器
创建部署nginx容器
可以对nginx容器进行扩容多个
再增加Node(Minion)节点
yum install kubernetes-node docker flannel* *rhsm* -y
[root@bogon ~]# cd /etc/kubernetes/
编辑
[root@bogon kubernetes]# vim config
KUBE_ALLOW_PRIV="--allow-privileged=true" 在web管理界面中,让勾选“以特权身份运行”生效
KUBE_MASTER="--master=http://172.20.26.167:8080"
[root@bogon kubernetes]# vim kubelet
KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=172.20.26.210"
KUBELET_API_SERVER="--api-servers=http://172.20.26.167:8080"
[root@bogon /]# vim /etc/sysconfig/flanneld 配置flannel网络
FLANNEL_ETCD_ENDPOINTS="http://172.20.218:2379"
service flanneld start 先启动flanneld服务
flanneld服务无法启动,报错
将Minion端系统重启一下,
再执行service flanneld start 启动flanneld服务
service docker start #再启动docker 服务
启动kubelet、kube-proxy服务
[root@bogon ~]# service kubelet start
Redirecting to /bin/systemctl start kubelet.service
[root@bogon ~]# service kubelet restart
Redirecting to /bin/systemctl restart kubelet.service
[root@bogon ~]# service kube-proxy start
Redirecting to /bin/systemctl start kube-proxy.service
也可以用for I in命令启动服务
for I in kube-proxy kubelet flanneld docker
do
systemctl restart $I
systemctl enable $I
done
service iptables stop;iptables -P FORWARD ACCEPT
查看相关进程
[root@bogon ~]# ps -ef |grep kube
[root@bogon ~]# ps -ef |grep docker
[root@bogon ~]# ps -ef |grep flanneld
至此新增加的Node(Minion)节点配置完成。
在Master端输入kubectl get nodes 验证是否成功?看到STATUS 的状态为Read 即可
[root@bogon ~]# kubectl get nodes
回到k8s 管理界面,查看节点情况,172.20.26.210节点成功增加
创建K8S的web 管理界面
因没有创建本地仓库,所以需要在Minion端再导入pod-infrastructure、kubernetes-dashboard-amd64两个镜像文件。如果已创建好本地仓库,在第一次部署Minion节点时,将pod-infrastructure、kubernetes-dashboard-amd64镜像上传到本地仓库即可。
这两个镜像文件直接从网络上下载可能会超时,导致导入失败,所以可以先从本地上传后进行导入。
Docker镜像导入指令如下:
docker load <pod-infrastructure.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') registry.access.redhat.com/rhel7/pod-infrastructure
docker load <kubernetes-dashboard-amd64.tgz,将导入的pod镜像名称修改,命令如下:
docker tag $(docker images|grep none|awk '{print $3}') bestwu/kubernetes-dashboard-amd64:v1.6.3
回到k8s管理界面,查看节点数量
新部署tomcat容器,数量为2,将会在两个节点中分别创建1台tomcat容器。
由于是在网上下载tomcat 镜像,需要等待时间较长,最后完成情况如下
在master控制端查看所有云主机的IP 地址
[root@bogon ~]# kubectl get -n default pods -o wide
[root@bogon ~]# kubectl get -n default pods -o wide|awk '{print $1,$6}'|awk -F"-" 'NR>1 {print $1,$NF}'|awk '{print $1,$NF}'
可以通过宿主机重启容器
[root@bogon ~]# docker ps |grep tomcat 查看tomcat容器ID
[root@bogon ~]# docker restart 574bf1497167 重启tomcat容器
重启,数据不会丢失
如果是删除云主机,会自动产生一台云主机,但是数据丢失
创建本地私有仓库
在172.20.26.198上创建本地私有仓库
docker pull docker.io/registry
mkdir -p /data/registry/
docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
[root@bogon ~]# vim /etc/docker/daemon.json
"insecure-registries":["172.20.26.198:5000"]
[root@bogon ~]# service docker restart
[root@bogon ~]# ps -ef |grep 5000 查看5000端口状态
Docker images 查看一下镜像信息
对centos7-ssh镜像修改tag号
[root@bogon ~]# docker tag 5a97f88791d1 172.20.26.198:5000/centos7-ssh:v1
将修改好tag号的centos7-ssh镜像上传到本地仓库中
docker push 172.20.26.198:5000/centos7-ssh:v1
[root@bogon ~]# docker ps -a 查看docker 容器情况docker.io/registry
[root@bogon ~]# docker start bf5bd542fba4 启动docker.io/registry
[root@bogon ~]# ps -ef |grep 5000 查看5000端口情况
[root@bogon ~]# docker push 172.20.26.198:5000/centos7-ssh:v1 再次上传镜像到本地仓库
上传成功
上传一个nginx镜像到本地仓库
[root@bogon Docker]# vim Dockerfile_nginx 编写安装nginx的Dockerfile文件
[root@bogon Docker]# docker build -t centos7-nginx:v1 - < Dockerfile_nginx
[root@bogon ~]# docker images
[root@bogon ~]# docker tag 0672328a3122 172.20.26.198:5000/centos7-nginx:v1 修改tag号
[root@bogon ~]# docker push 172.20.26.198:5000/centos7-nginx:v1 上传nginx镜像到本地仓库
[root@bogon ~]# docker ps | grep 5000
查看本地私有仓库里的镜像
ls -l /data/registry/docker/registry/v2/repositories/
添加2个nginx“外部”服务的容器,使用本地私有仓库
Failed to pull image "172.20.26.198:5000/nginx:latest": Get https://172.20.26.198:5000/v1/_ping: http: server gave HTTP response to HTTPS client
Error syncing pod, skipping: failed to "StartContainer" for "nginx" with ErrImagePull: "Get https://172.20.26.198:5000/v1/_ping: http: server gave HTTP response to HTTPS client"
以上错误原因是在172.20.26.210节点上daemon.json文件里要指定本地私有仓库的地址,
vim /etc/docker/daemon.json
执行以下命令,重启相关服务
for I in kube-proxy kubelet flanneld docker
do
systemctl restart $I
systemctl enable $I
done
service iptables stop;iptables -P FORWARD ACCEPT
回到k8sweb界面,查看错误状态是否已消失
故障问题:
用Dockerfile 做了个镜像,改了tag号,push 到本地仓库,提示连接被拒绝
解决:
docker run -itd -p 5000:5000 -v /data/registry:/var/lib/registry docker.io/registry
docker ps
docker push 172.20.26.198:5000/centos7-nginx:v2
创建部署外部nginx主机
故障问题:
故障问题
Master、Minion端排查解决:
Master端:
1、ps -ef | grep kube 查看kube-apiserver、kube-controller-manager、kube-scheduler服务
2、 ps -ef |grep flanneld 查看flanneld的状态
3、ifconfig 查看网卡地址情况(是否有flannel0地址)
Minion端:
1、ps -ef |grep kube 查看kubelet、kube-proxy服务
2、ps -ef |grep docker 查看Docker状态
3、 ps -ef |grep flanneld 查看flanneld的状态
4、iptables -t filter -L -n 查看是否是Chain FORWARD (policy ACCEPT)状态,如不是,执行iptables -P FORWARD ACCEPT命令
相关文章:

K8s 安装部署-Master和Minion(Node)文档
K8s 安装部署-Master和Minion(Node)文档 操作系统版本:CentOS 7.4 Master :172.20.26.167 Minion-1:172.20.26.198 Minion-2:172.20.26.210(后增加节点) ETCD:172.20.27.218 先安装部署ETC…...

OpenAI 降低价格并修复拒绝工作的“懒惰”GPT-4,另外ChatGPT 新增了两个小功能
OpenAI降低了GPT-3.5 Turbo模型的API访问价格,输入和输出价格分别降低了50%和25%。这对于使用API进行文本密集型应用程序的用户来说是一个好消息。 OpenAI官网:OpenAI AIGC专区:aigc 教程专区:AI绘画,AI视频&#x…...
springboot+value静态属性获取配置文件中的值的操作方法
1.配置类需要让spring管理 2.set方法不要加static 3.如果静态属性是private修饰,则在使用的时候,需要 类名.getXXX方法 如果静态属性是public修饰,则在使用的时候,需要 类名.属性名 import org.springframework.beans.factory.an…...

Prometheus 架构全面解析
在本指南中,我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统,能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标,并根据阈值收到警报。 此外,在当今世界,可观…...

把批量M3U8网络视频地址转为MP4视频
在数字媒体时代,视频格式的转换已成为一项常见的需求。尤其对于那些经常处理网络视频的用户来说,将M3U8格式的视频转换为更常见的MP4格式是一项必备技能。幸运的是,现在有了固乔剪辑助手这款强大的工具,这一过程变得异常简单。下面…...

联合 Maxlinear 迈凌 与 Elitestek 易灵思 - WPI 世平推出基于 FPGA 芯片的好用高效电源解决方案
近期 WPI 世平公司联合 Maxlinear 迈凌电源产品搭配 Elitestek 易灵思 FPGA 共同合作推出基于 FPGA 芯片的好用高效电源解决方案。 Elitestek 易灵思 FPGA 核心产品有 2 大系列 : Trion 系列与钛金系列。Trion 系列主要特点是 : 1. 40nm 工艺 2. 超低功耗 ( 可低至竞争对手的 …...

Keycloak - docker 运行 前端集成
Keycloak - docker 运行 & 前端集成 这里的记录主要是跟我们的项目相关的一些本地运行/测试,云端用的 keycloak 版本不一样,不过本地我能找到的最简单的配置是这样的 docker 配置 & 运行 keycloak keycloak 有官方(Red Hat Inc.)的镜像&#…...

架构篇27:如何设计计算高可用架构?
文章目录 主备主从集群小结计算高可用的主要设计目标是:当出现部分硬件损坏时,计算任务能够继续正常运行。因此计算高可用的本质是通过冗余来规避部分故障的风险,单台服务器是无论如何都达不到这个目标的。所以计算高可用的设计思想很简单:通过增加更多服务器来达到计算高可…...
Python 有用的库模块
简介 Python中有许多常用的库或者模块,在写代码的时候或多或少会遇到,本文对其进行总结,方便日后查阅。 pprint Python中的pprint模块是用于打印数据结构(如字典,列表等)的模块,提供了一种以…...

vivado DDS学习
实现DDS通常有两种方式,一种是读取ROM存放的正弦/余弦信号的查表法,另一种是用DDS IP核。这篇学习笔记中,我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT(DDS)的standard模式…...

微信小程序(十六)slot插槽
注释很详细,直接上代码 上一篇 温馨提醒:此篇需要自定义组件的基础,如果不清楚请先看上一篇 新增内容: 1.单个插槽 2.多个插槽 单个插糟 源码: myNav.wxml <view class"navigationBar custom-class">…...
gtest 单元测试
文章目录 前言一、Google Test介绍1.1 gtest源码下载编译1.2 常用API介绍1.3 gtest运行参数介绍 二、Google Mock参考资料 前言 Google Test(简称gtest)是一个开源的C单元测试框架。和常见的测试工具一样,gtest提供了单体测试常见的工具和组…...

掌握assert的使用:断言在错误检查和调试中不可或缺
断言在错误检查和调试中不可或缺 一、简介二、断言的基本语法和用法三、错误检查与断言四、 调试与断言五、避免滥用断言六、总结 一、简介 断言是一种在程序中用于检查特定条件是否满足的工具。一般用于验证开发者的假设,如果条件不成立,就会导致程序报…...
概念杂记--到底啥是啥?(数据库篇)
文章目录 1.聚集索引(clustered index)2.非聚集索引(Non-clustered index)3.聚集索引和非聚集索引区别?4.覆盖索引(covering index)5、复合索引 (Composite Index)6.索引…...

Ubuntu20.4 Mono C# gtk 编程习练笔记(四)
连续实时绘图 图看上去不是很清晰,KAZAM录屏AVI尺寸80MB, 转换成gif后10MB, 按CSDN对GIF要求,把它剪裁缩小压缩成了上面的GIF,图像质量大不如原屏AVI,但应该能说明原意:随机数据随时间绘制在 gtk 的 drawin…...
1 月 26日算法练习
文章目录 九宫幻方穿越雷区走迷宫 九宫幻方 小明最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个33的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称…...

今日AI大热潮,明日智能风向标
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

03 SB实战 -微头条之首页门户模块(跳转某页面自动展示所有信息+根据hid查询文章全文并用乐观锁修改阅读量)
1.1 自动展示所有信息 需求描述: 进入新闻首页portal/findAllType, 自动返回所有栏目名称和id 接口描述 url地址:portal/findAllTypes 请求方式:get 请求参数:无 响应数据: 成功 {"code":"200","mes…...
Abaqus许可分析工具
在当今的知识产权保护和许可管理领域,一款高效、精准的许可分析工具对于企业来说至关重要。Abaqus许可分析工具凭借其强大的功能和卓越的性能,成为了企业优化知识产权许可管理的得力助手。 一、Abaqus许可分析工具的核心优势 1.全面性:Abaqus…...
【开发工具】从eclipse到idea的过度
背景 随着eclipse相比以前性能慢了不少,idea在开发工具领域越战越猛,市场份额也逐年增加,其体验得了软件工程师的热爱。 概要 本文只是做了一个简要的记录,简单描述下本人从eclipse到idea的过度的心态。 正文 在大厂都会研发自…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...