k8s的二进制部署
k8s的二进制部署
k8s的二进制部署的实验:
源码包部署
k8s的master01:192.168.233.91
组件:kube-apiserver kube-controller-manager kube-scheduler etcd
k8s的master02:192.168.233.92
组件:kube-apiserver kube-controller-manager kube-scheduler
node节点01:192.168.233.93 kubelet kube-proxy etcd
node节点02:192.168.233.94 kubelet kube-proxy etcd
负载均衡:nginx+keepalived:master:192.168.233.95
backup:192.168.233.96
etcd:192.168.233.91
192.168.233.93
192.168.233.94
91、93、94主机:
清空iptables的所有策略
关闭交换分区
swapoff -a
k8s在设计时,为了提升性能,默认是不使用swap交换分区的,kubenetes在初始化时,会检测swap是否关闭
91:
93:
94:
91、93、94:
#开启网桥模式
net.bridge.brideg-nf-call-ip6tables=1
net.bridge.brideg-nf-call-iptables=1
#网桥的流量传给iptables链,实现地址映射
#关闭ipv6的流量(可关也可以不关)
net.ipv6.conf.all.disable_ipv6=1
#根据工作中的实际情况,自定
net.ipv4.ip_forward=1
时间同步
yum install ntpdate -y
ntpdate ntp.aliyun.com
date
部署 docker引擎
91、93、94:
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service
部署 etcd 集群
(部署第一个组件,存储k8s的集群信息和用户配置组件)
(etcd是一个高可用----分布式的键值存储数据库,采用raft算法保证节点的信息一致性。etcd是go语言写的)
(etcd的端口:2379:api接口,对外为客户端提供通信
2380:内部服务的通信端口
etcd一般都是集群部署,etcd也有选举leader的机制,至少要三台,或者奇数台)
k8s的内部通信依靠证书认证,密钥认证:证书的签发环境
91:
把三个证书拖进来
sfssl:证书签发的命令工具
cfssl-certinfo:查看证书信息的工具
cfssljson:把证书的格式转化成json格式,变成文件的承载式证书
移到bin目录下面
mv cfssl-certinfo cfssljson cfssl /usr/local/bin/
chmod 777 /usr/local/bin/cfssl*
cd到opt,然后创建一个mkdir k8s的目录
mkdir /opt/k8s
拖两个证书包到k8s
vim etcd-cert.sh
记得改文件里的IP地址
赋权
chmod 777 etcd-cert.sh etcd.sh
mkdir /opt/k8s/etcd-cert
mv etcd-cert.sh etcd-cert
cd etcd-cert/
./etcd-cert.sh
ca-config.json:配置了证书生成策略,定义了默认过期时间和一个名为 "www" 的配置模板
ca-csr.json:用于生成根证书和私钥的签名请求文件。包括了Common Name(CN),密钥算法和一些组织信息
ca.pem:根证书文件
server-csr:服务器证书签名请求文件
server-key.pem:生成etcd服务器证书和私钥
server.pem:etcd服务器的证书文件,用于加密和认证etcd节点之间的通信
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
cd /opt/k8s/etcd-cert/
cp *.pem /opt/etcd/ssl/
./etcd.sh etcd01 192.168.233.31 etcd02=https://192.168.233.33:2380,etcd03=https://192.168.233.34:2380
再开一台91的终端:
传参到93和94的主机
scp -r /opt/etcd/ root@192.168.233.93:/opt/
scp -r /opt/etcd/ root@192.168.233.94:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.233.93:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.233.94:/usr/lib/systemd/system/
93:
94:
91、93、94:
(谁先启动谁是主)
91:
检查etcd群集状态
ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.233.91:2379,https://192.168.233.93:2379,https://192.168.233.94:2379" endpoint health --write-out=table
master节点的部署:
91:
上传 master.zip 和 k8s-cert.sh 到 /opt/k8s 目录中,解压 master.zip 压缩包
91是主节点
92是从节点
95和96是nginx的IP地址
unzip master.zip
vim controller-manager.sh
指向apiserver的ip地址
chmod 777 *.sh
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
mkdir /opt/k8s/k8s-cert
mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
cd /opt/k8s/k8s-cert/
./k8s-cert.sh
cp ca*pem apiserver*pem /opt/kubernetes/ssl/
cd /opt/k8s/
拖软件包
tar zxvf kubernetes-server-linux-amd64.tar.gz
cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
ln -s /opt/kubernetes/bin/* /usr/local/bin/
#!/bin/bash
#获取随机数前16个字节内容,以十六进制格式输出,并删除其中空格
BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
#生成 token.csv 文件,按照 Token序列号,用户名,UID,用户组 的格式生成
cat > /opt/kubernetes/cfg/token.csv <<EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF
chmod 777 token.sh
./token.sh
cat /opt/kubernetes/cfg/token.csv
二进制文件、token、证书都准备好后,开启 apiserver 服务
cd /opt/k8s/
./apiserver.sh 192.168.233.91 https://192.168.233.91:2379,https://192.168.233.93:2379,https://192.168.233.94:2379
netstat -antp | grep 6443
./scheduler.sh
./controller-manager.sh
./admin.sh
通过kubectl工具查看当前集群组件状态
kubectl get cs
node节点的部署:
93、94:
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
拖软件包
unzip node.zip
91:
scp kubelet kube-proxy root@192.168.233.93:/opt/kubernetes/bin/
scp kubelet kube-proxy root@192.168.233.94:/opt/kubernetes/bin/
91:
拖软件包
chmod 777 kubeconfig.sh
scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.233.93:/opt/kubernetes/cfg/
scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.233.94:/opt/kubernetes/cfg/
93:
94:
91:
RBAC授权,生成和赋权用户,使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
若执行失败,可先给kubectl绑定默认cluster-admin管理员集群角色,授权对整个集群的管理员权限
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
93:
chmod 777 kubelet.sh
./kubelet.sh 192.168.233.93
91:
94:
91:
kube-proxy节点上的网络代理部署:
93:
cd /opt
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
chmod 777 proxy.sh
./proxy.sh 192.168.233.93
ps aux | grep kube-proxy
94:
cd /opt
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
安装flannel:
93、94:
把软件包拖到opt目录
91:
cd /opt/k8s
传 kube-flannel.yml 文件到 /opt/k8s 目录中,部署 CNI 网络
93、94:
ifconfig查看一下有没有flannel.1
部署 CoreDNS
CoreDNS:可以为集群中的 service 资源创建一个域名与 IP 的对应关系解析。
service是对外提供访问的地址,现在我们加入DNS机制之后,可以直接访问服务名
在所有 node 节点上操作
93、94:
#上传 coredns.tar 到 /opt 目录中
cd /opt
docker load -i coredns.tar
//在 master01 节点上操作
91:
#上传 coredns.yaml 文件到 /opt/k8s 目录中,部署 CoreDNS
cd /opt/k8s
kubectl apply -f coredns.yaml
kubectl get pods -n kube-system
#DNS 解析测试
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
kubectl run -it --rm dns-test --image=busybox:1.28.4 sh
/ # nslookup kubernetes
Server: 10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local
Name: kubernetes
Address 1: 10.0.0.1 kubernetes.default.svc.cluster.local
exit
master02 节点部署
92:
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
#在master添加hosts
cat >> /etc/hosts << EOF
192.168.233.91 master01
192.168.233.93 node01
192.168.233.94 node02
EOF
91:
92:
93:
如上同步
94:
如上同步
91、92、93、94同步操作:
91:
从 master01 节点上拷贝证书文件、各master组件的配置文件和服务管理文件到 master02 节点
scp -r /opt/etcd/ root@192.168.233.92:/opt/
scp -r /opt/kubernetes/ root@192.168.233.92:/opt
scp -r /root/.kube root@192.168.233.92:/root
scp /usr/lib/systemd/system/{kube-apiserver,kube-controller-manager,kube-scheduler}.service root@192.168.233.92:/usr/lib/systemd/system/
92:
修改配置文件kube-apiserver中的IP
vim /opt/kubernetes/cfg/kube-apiserver
KUBE_APISERVER_OPTS="--logtostderr=true \
--v=4 \
--etcd-servers=https://192.168.233.91:2379,https://192.168.233.93:2379,https://192.168.233.94:2379 \
--bind-address=192.168.233.92 \ #修改
--secure-port=6443 \
--advertise-address=192.168.233.92 \ #修改
在 master02 节点上启动各服务并设置开机自启
systemctl start kube-apiserver.service
systemctl enable kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl enable kube-controller-manager.service
systemctl start kube-scheduler.service
systemctl enable kube-scheduler.service
查看node节点状态
ln -s /opt/kubernetes/bin/* /usr/local/bin/
kubectl get nodes
弄完之后查看一下node状态 以及pod
负载均衡部署:
35、36同步操作:
配置nginx的官方在线yum源,配置本地nginx的yum源
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
EOF
yum install nginx -y
修改nginx配置文件,配置四层反向代理负载均衡,指定k8s群集2台master的节点ip和6443端口
vim /etc/nginx/nginx.conf
(以下内容可以直接把配置文件里的东西全部删掉,然后使用)
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
#添加
stream {
log_format main '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent';
#日志记录格式
#$remote_addr: 客户端的 IP 地址。
#$upstream_addr: 上游服务器的地址。
#[$time_local]: 访问时间,使用本地时间。
#$status: HTTP 响应状态码。
#$upstream_bytes_sent: 从上游服务器发送到客户端的字节数。
access_log /var/log/nginx/k8s-access.log main;
upstream k8s-apiserver {
server 192.168.233.31:6443;
server 192.168.233.32:6443;
}
server {
listen 6443;
proxy_pass k8s-apiserver;
}
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
重启和开启自启nginx
部署keepalived服务
yum install keepalived -y
! Configuration File for keepalived
global_defs {
# 接收邮件地址
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
# 邮件发送地址
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id NGINX_MASTER
#lb01节点的为 NGINX_MASTER,lb02节点的为 NGINX_BACKUP
#vrrp_strict #注释掉
}
#添加一个周期性执行的脚本
vrrp_script check_nginx {
script "/etc/nginx/check_nginx.sh"
#指定检查nginx存活的脚本路径
}
vrrp_instance VI_1 {
state MASTER
#lb01节点的为 MASTER,lb02节点的为 BACKUP
interface ens33
#指定网卡名称 ens33
virtual_router_id 51
#指定vrid,两个节点要一致
priority 100
#lb01节点的为 100,lb02节点的为 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.233.100/24 #指定 VIP
}
track_script {
check_nginx #指定vrrp_script配置的脚本
}
}
创建nginx状态检查脚本
vim /etc/nginx/check_nginx.sh
#!/bin/bash
/usr/bin/curl -I http://localhost &>/dev/null
if [ $? -ne 0 ];then
# /etc/init.d/keepalived stop
systemctl stop keepalived
fi
chmod +x /etc/nginx/check_nginx.sh
先启动nginx,再启动keepalived
ip a查看虚拟ip地址
可以停主的nginx 看看ip有没有飘到备上
93、94同步操作:
修改node节点上的bootstrap.kubeconfig,kubelet.kubeconfig配置文件为VIP
cd /opt/kubernetes/cfg/
vim bootstrap.kubeconfig
vim kubelet.kubeconfig
server: https://192.168.233.100:6443
vim kube-proxy.kubeconfig
server: https://192.168.233.100:6443
重启kubelet和kube-proxy服务
systemctl restart kubelet.service
systemctl restart kube-proxy.service
然后用主的有虚拟ip的主机查看端口号6443
##### 在 master01 节点上操作 #####
//测试创建pod
kubectl run nginx --image=nginx
//查看Pod的状态信息
kubectl get pods
部署 Dashboard:
Dashboard:仪表盘,kubernetes的可视化界面,在这个可视化界面上,可以对k8s集群进行管理
91:
在 master01 节点上操作
#上传 recommended.yaml 文件到 /opt/k8s 目录中
kubectl apply -f recommended.yaml
创建service account并绑定默认cluster-admin管理员集群角色
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
获取token值
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
然后用浏览器登录 (有的浏览器用不了)
点击高级
这一步的密码就是上面几步中获取token值的密码
进入到这里算完成创建
补齐的命令部署:
在最后一行
相关文章:

k8s的二进制部署
k8s的二进制部署 k8s的二进制部署的实验: 源码包部署 k8s的master01:192.168.233.91 组件:kube-apiserver kube-controller-manager kube-scheduler etcd k8s的master02:192.168.233.92 组件:kube-api…...

Python基础语法总结
1.每条语句结束不需要分号(也可以加上), 直接换行, 注意: 如果两行代码写一行, 则必须加分号. 2.定义变量不需要指定类型(如果需要写类型, 需要在变量名后面加": 类型, 这个写法只是方便读代码). 3.变量名大小写敏感. 4.查看变量类型: type(变量名). 5.Python中的int表…...
矩阵理论基本知识
1、矩阵范数、算子范数 矩阵无穷范数是非自相容范数,矩阵1-范数、矩阵2-范数是自相容范数矩阵2-范数:Frobenius范数,是向量2-范数的自然推广。 ∥ A ∥ m 2 ∥ A ∥ F ∑ a i j ∗ a i j \|A\|_{m2}\|A\|_{F}\sqrt{\sum a_{ij}^*a_{ij}} ∥…...

《深入理解Java虚拟机(第三版)》读书笔记:Java内存区域与内存溢出异常、垃圾收集器与内存分配策略
下文是阅读《深入理解Java虚拟机(第3版)》这本书的读书笔记,如有侵权,请联系删除。 文章目录 第2章 Java内存区域与内存溢出异常2.2 运行时数据区域2.3 HotSpot虚拟机对象探秘 第3章 垃圾收集器与内存分配策略3.2 对象已死&…...
android 手机主界面侧滑退出app问题
最近重新搭了个app,发现手机显示APP主界面时,沿着手机右边向左滑,会直接关闭应用,所以想搞个第一次提示,第二次退出app的效果。 结果搞出个复杂的东西,下面是两段代码。1: 1:GestureDetector扩展函数。其…...
spring boot 配置全局日期和时间格式
spring boot 为项目配置 全局日期和时间格式化yyyy-MM-dd HH:mm:ss 方式一:代码配置全局日期和时间格式化 /*** author hua*/ Configuration public class WebConfiguration implements WebMvcConfigurer {/*** 项目全局时间格式化*/ Bean public ObjectMapper get…...

GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(二)
书写上回,上回讲到,Elasticsearch的使用前提即:语法,表结构,使用类型结构等。要学这个必须要看前面这个:GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思…...

鸿蒙APP的代码规范
鸿蒙APP的代码规范是为了确保代码质量、可读性和可维护性而定义的一系列规则和标准。以下是一些建议的鸿蒙APP代码规范,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 代码风格: 采用…...
蓝桥杯-每日刷题-027
出租汽车计费器 一、题目要求 题目描述 有一个城市出租汽车的计费规则是3公里内(含3公里)基本费6元,超过3公里,每一公里1.4元。 现在对于输入具体的公里数x(0<x<1000),编程计算x公里所需…...

安装Node修改Node镜像地址搭建Vue脚手架创建Vue项目
1、安装VSCode和Node 下载VSCode Visual Studio Code - Code Editing. Redefined 下载Node Node.js (nodejs.org) 检验是否安装成功,WinR,输入cmd命令,使用node -v可以查看到其版本号 2、修改镜像地址 安装好node之后,开始修改镜像地址 …...

git 学习 之一个规范的 commit 如何写
最好的话做一件完整的事情就提交一次...

2023 年人工智能研究与技术排名前 10 的国家
人工智能研究是一项全球性的工作。虽然美国和中国因其对人工智能的贡献而备受关注,但事实是,世界各国都在涉足这项技术,尝试新的突破,并吸引投资者的关注。 斯坦福大学的《2023年人工智能报告》估计,到 2022 年&#…...

留言板(Mybatis连接数据库版)
目录 1.添加Mybatis和SQL的依赖 2.建立数据库和需要的表 3.对应表中的字段,补充Java对象 4.对代码进行逻辑分层 5.后端逻辑代码 之前的项目实例【基于Spring MVC的前后端交互案例及应用分层的实现】https://blog.csdn.net/weixin_67793092/article/details/134…...

第十二章 Sleuth分布式请求链路跟踪
Sleuth分布式请求链路跟踪 gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数…...
EasyExcel多线程批量导出数据,动态表头,静态资源访问
1.导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>2.建立实体 Data public class ActResultLogVO implements Serializable {private static…...

树莓派界面改成中文
安装完树莓派系统(Raspberry Pi OS with Desktop),第一次启动时,时会有如下面二个图所示,让你选择区域时区和语言。 树莓派默认的语言为英文,如果你在安装时没有选择的话,默认的区域为英国,语言为英国英文&…...

软件工程期末复习
● 用例:借书 ●参与者:管理员,借阅者 ●操作流: ① 管理员进入图书借阅界面,用例开始。 ② 系统要求输入借阅者的借书证编码。 ③系统检验借书证编码,如果正确,则显示借阅者的信息。 A1:借书证编码有错。 A2: 如果该借…...
【linux】select实现定时器
/*秒级定时器*/ void seconds_sleep(unsigned long seconds) {if(seconds 0) return;struct timeval tv;tv.tv_secseconds;tv.tv_usec0;int err;do{errselect(0,NULL,NULL,NULL,&tv);}while(err<0 && errnoEINTR); }/*毫秒定时器*/void milliseconds_slee…...

Android 13 - Media框架(28)- MediaCodec(三)
上一节我们了解到 ACodec 执行完 start 流程后,会把所有的 input buffer 都提交给 MediaCodec 层,MediaCodec 是如何处理传上来的 buffer 呢?这一节我们就来了解一下这部分内容。 1、ACodecBufferChannel::fillThisBuffer ACodec 通过调用 A…...

Azure 学习总结
文章目录 1. Azure Function1.1 Azure Function 概念1.2 Azure Function 实现原理1.3 Azure Function 本地调试1.4 Azure Function 云部署 2. Azure API Managment 概念 以及使用2.1 Azure API 概念2.2 Azure API 基本使用 3. Service Bus 应用场景及相关特性3.1 Service Bus 基…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...