K8s:二进制安装k8s(单台master)

目录

一、安装k8s

1、拓扑图

2、系统初始化配置

2.1关闭防火墙selinx以及swap

2.2设置主机名

2.3在每台主机中添加hosts,做映射

2.4调整内核参数,将桥接的ipv4流量传递到iptables,关闭ipv6

2.4时间同步

3、部署docker引擎(两个node节点执行)

4、部署etcd集群

4.1在master01节点操作

4.2生成etcd证书,上传etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中

4.3创建用于生成CA证书,etcd服务器证书以及私钥的目录

4.4上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务

4.5创建用于存放etcd配置文件,命令文件,证书的目录

4.6把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点

4.7在node1节点操作(node2同样)

4.8启动etcd,并检查etcd集群状态

5、master部署组件

6、部署worker node组件

6.1在所有 node 节点上操作创建kubernetes工作目录

6.2上传 node.zip 到 /opt 目录中,解压 node.zip 压缩包,获得kubelet.sh、prox

6.3在master01节点上操作把 kubelet、kube-proxy 拷贝到 node 节点

6.4上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中,生成kubelet初次加入集群引导kubeconfig文件和kube-proxy.kubeconfig文件#kubeconfig 文件包含集群参数(CA 证书、API Server 地址),客户端参数(上面生成的证书和私钥),集群 context 上下文参数(集群名称、用户名)。Kubenetes 组件(如 kubelet、kube-proxy)通过启动时指定不同的 kubeconfig 文件可以切换到不同的集群,连接到 apiserver。

6.5把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 拷贝到 node 节点

6.6RBAC授权,使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书

7、在node01节点上操作

7.1启动kubelet

7.2在 master01 节点上操作,通过 CSR 请求检查到 node01 节点的 kubelet 发起的 CSR 请求,Pending 表示等待集群给该节点签发证书

7.3通过 CSR 请求

7.4查看节点,由于网络插件还没有部署,节点会没有准备就绪 NotReady

7.5在 node01 节点上操作加载 ip_vs 模块 启动proxy服务


一、安装k8s

1、拓扑图

2、系统初始化配置

#所有节点执行
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
#永久关闭firewalld并清空iptables所有表规则
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab 
#永久关闭selinux和swap分区
#三个节点分开执行
hostnamectl set-hostname master01
#192.168.170.111的master上执行修改主机名
hostnamectl set-hostname node01
#192.168.170.113的node1上执行修改主机名
hostnamectl set-hostname node02
#192.168.170.114的node2上执行修改主机名
#所有节点执行
bash
#刷新bash使得修改的主机名生效
cat >> /etc/hosts << EOF
192.168.170.111 master01
192.168.170.113 node1
192.168.170.114 node2
EOF
#使用多行重定向将主机名对应的ip写到hosts里面加快访问速度,注意改为自己的ip
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF
#使用多行重定向调整内核参数,前2行为开启网桥模式后2行为关闭ipv6协议和开启路由转发
sysctl --system
#加载内核使得配置内核参数生效
yum install ntpdate -y
ntpdate time.windows.com
#安装ntpdate时间同步程序,并与本机的windows同步时间
2.1关闭防火墙selinx以及swap

2.2设置主机名

2.3在每台主机中添加hosts,做映射

2.4调整内核参数,将桥接的ipv4流量传递到iptables,关闭ipv6

2.4时间同步

3、部署docker引擎(两个node节点执行)

#2个node节点执行
yum install -y yum-utils device-mapper-persistent-data lvm2
#安装依赖包以便在系统上安装docker
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
#添加Docker官方源,并将它设置为docker-ce.repo文件
yum install -y docker-ce docker-ce-cli containerd.io
#yum安装docker-ce和docker客户端以及容器io
systemctl start docker.service
systemctl enable docker.service
#开机自启并现在启动docker

4、部署etcd集群

#master节点操作,#本文的所有需要上传资源在博客资源包中K8S压缩包中均有
cd /usr/local/bin
chmod +x /usr/local/bin/cfssl*
#将cfssl证书签发的工具和命令(cfssl、cfssljson、cfssl-certinfo)上传到/usr/local/bin目录下并添加执行权限
#本文的cfssl工具在博客资源包中K8S压缩包中有
#cfssl:证书签发的工具命令
#cfssljson:将 cfssl 生成的证书(json格式)变为文件承载式证书
#cfssl-certinfo:验证证书的信息
#cfssl-certinfo -cert <证书名称>			#查看证书的信息
mkdir /opt/k8s
cd /opt/k8s/
#上传 etcd-cert.sh(生成证书脚本) 和 etcd.sh(创建etcd集群脚本) 到 /opt/k8s/ 目录中
chmod +x etcd-cert.sh etcd.sh
#添加可执行权限
mkdir /opt/k8s/etcd-cert
#创建etcd-cert目录用于存放etcd的证书
mv etcd-cert.sh /opt/k8s/etcd-cert
#移动生成证书的脚本到存放etcd证书的目录下
vim /opt/k8s/etcd-cert/etcd-cert.sh
#此脚本ip需要修改80到82行master,node1,node2顺序保存退出
vim  ./etcd-cert.sh           
#修改脚本中的ip为自己的ip
./etcd-cert.sh			
#生成CA证书、etcd 服务器证书以及私钥
ls  /opt/k8s/etcd-cert
#查看生成的证书是否为4个.pem结尾3个.json结尾
#上传 etcd-v3.4.9-linux-amd64.tar.gz(etcd程序命令及证书) 到 /opt/k8s 目录中,启动etcd服务
cd /opt/k8s/
tar zxvf etcd-v3.4.9-linux-amd64.tar.gz
ls etcd-v3.4.9-linux-amd64
#解压上传的etcd包,内容为3个.md文件一个目录,一个etcd和一个etcdctl启动控制脚本
mkdir -p /opt/etcd/{cfg,bin,ssl}
#创建用于存放etcd配置文件,命令文件,证书的目录
cd /opt/k8s/etcd-v3.4.9-linux-amd64
#进入解压的etcd包中
mv etcd etcdctl /opt/etcd/bin/
#将etcd启动和etcdctl控制脚本移动到创建的用于存放etcd命令文件的bin目录下
cd  /opt/k8s/etcd-cert
#进入创建etcd证书的目录
cp  ./*.pem   /opt/etcd/ssl
#将本目录下所有证书全部拷贝一份到创建的用于存放etcd证书的路径ssl上
cd /opt/k8s
./etcd.sh etcd01 192.168.170.111 etcd02=https://192.168.170.113:2380,etcd03=https://192.168.170.114:2380
#进入存放etcd.sh部署etcd集群的脚本目录执行etcd.sh脚本 后面跟三个etcd集群的ip注意格式,进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都已启动,先操作不然不会生成system管理和配置文件,重新开启一个shell查看etcd状态
#另一个窗口执行
ps -ef | grep etcd
#查看etcd集群状态是否为自己的三个etcd  ip
scp -r /opt/etcd/ root@192.168.170.113:/opt/
scp -r /opt/etcd/ root@192.168.170.114:/opt/
scp /usr/lib/systemd/system/etcd.service root@192.168.170.113:/usr/lib/systemd/system/
scp /usr/lib/systemd/system/etcd.service root@192.168.170.114:/usr/lib/systemd/system/
#把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点
#node1节点执行
vim /opt/etcd/cfg/etcd
#修改scp过来的etcd配置文件
#[Member]
ETCD_NAME="etcd02"											#修改为etcd02
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.170.113:2380"			#修改为node1的ip地址
ETCD_LISTEN_CLIENT_URLS="https://192.168.170.113:2379"		#修改为node1的ip地址
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.170.113:2380"		#修改为node1的ip地址
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.170.113:2379"				#修改为node1的ip地址
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.170.111:2380,etcd02=https://192.168.170.113:2380,etcd03=https://192.168.170.114:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
#node2节点执行
vim /opt/etcd/cfg/etcd
#修改scp过来的etcd配置文件
#[Member]
ETCD_NAME="etcd03"											#修改为etcd03
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="https://192.168.170.114:2380"			#修改为node1的ip地址
ETCD_LISTEN_CLIENT_URLS="https://192.168.170.114:2379"		#修改为node1的ip地址
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="https://192.168.170.114:2380"		#修改为node1的ip地址
ETCD_ADVERTISE_CLIENT_URLS="https://192.168.170.114:2379"				#修改为node1的ip地址
ETCD_INITIAL_CLUSTER="etcd01=https://192.168.170.111:2380,etcd02=https://192.168.170.113:2380,etcd03=https://192.168.170.114:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
#master节点执行
cd /opt/k8s
./etcd.sh etcd01 192.168.170.111 etcd02=https://192.168.170.113:2380,etcd03=https://192.168.170.114:2380
#重新启动etcd集群
#node1 node2执行
systemctl enable --now etcd
#设置开机启动并立即启动etcd,然后回到master上查看是否成功。不是一直前台运行状态即成功
#master执行:
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.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379" endpoint health --write-out=table
#检查集群监控状态,health全部未true即可
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.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379" endpoint status  --write-out=table
#检查集群状态,有一个is  leader为true即可
ETCDCTL_API=3   /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.m --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.170.114:2379" --write-out=table member list
##查看etcd集群成员列表
4.1在master01节点操作

4.2生成etcd证书,上传etcd-cert.sh 和 etcd.sh 到 /opt/k8s/ 目录中

4.3创建用于生成CA证书,etcd服务器证书以及私钥的目录

4.4上传 etcd-v3.4.9-linux-amd64.tar.gz 到 /opt/k8s 目录中,启动etcd服务

4.5创建用于存放etcd配置文件,命令文件,证书的目录

注意:进入卡住状态等待其他节点加入,这里需要三台etcd服务同时启动,如果只启动其中一台后,服务会卡在那里,直到集群中所有etcd节点都已启动,可忽略这个情况

可以开启另外一个窗口来查看etcd进程是否正常

4.6把etcd相关证书文件、命令文件和服务管理文件全部拷贝到另外两个etcd集群节点

4.7在node1节点操作(node2同样)

4.8启动etcd,并检查etcd集群状态

5、master部署组件

//在 master01 节点上操作
#上传 master.zip(master组件) 和 k8s-cert.sh(证书) 到 /opt/k8s 目录中,解压 master.zip 压缩包
cd /opt/k8s/
unzip master.zip
cd  master 
chmod +x *.sh
mv *  /opt/k8s
#解压master组件包,里面有master的4个组件脚本,添加权限移动到/opt/k8s文件夹中
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
#创建kubernetes工作目录
mkdir /opt/k8s/k8s-cert
#创建k8s的证书存放路径
mv /opt/k8s/k8s-cert.sh /opt/k8s/k8s-cert
#将k8s证书移动到创建的k8s的证书存放路径
cd /opt/k8s/k8s-cert/
vim /opt/k8s/k8s-cert/k8s-cert.sh 
#修改脚本中的ip56-60行顺序是第一个为master、第二个为master高可用ip、第三个为master虚拟ip、第四load balancer01(master)第五为load balancer01(backup)。第四第五可以删除。单节点master不用,若后面需要做集群需要提前规划好ip
chmod +x k8s-cert.sh	
./k8s-cert.sh				
#生成CA证书、相关组件的证书和私钥
ls *pem
#显示生成的证书等一共8个.pem结尾
cp ca*pem apiserver*pem /opt/kubernetes/ssl/
#将ca证书和apiserver证书拷贝到创建的存放证书的ssl/目录下
cd /opt/k8s/
tar zxvf kubernetes-server-linux-amd64.tar.gz
#上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目录中,解压 kubernetes 压缩包
cd /opt/k8s/kubernetes/server/bin
#进入解压后的k8s的bin目录中将4个组件拷贝到创建的k8s存放bin文件的路径下
cp kube-apiserver kubectl kube-controller-manager kube-scheduler /opt/kubernetes/bin/
cp /opt/kubernetes/bin/* /usr/local/bin/
#将脚本程序存放到 /usr/local/bin下可以全局使用4个命令
cd /opt/k8s/
vim token.sh
[脚本内容]
#!/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 +x token.sh
./token.sh
cat /opt/kubernetes/cfg/token.csv
#创建 bootstrap token 认证文件,apiserver 启动时会调用,然后就相当于在集群内创建了一个这个用户,接下来就可以用 RBAC 给他授权,查看是否生成了csv文件
cd /opt/k8s/
./apiserver.sh 192.168.170.111 https://192.168.30.11:2379,https://192.168.170.113:2379,https://192.168.170.114:2379
#二进制文件、token、证书都准备好后,开启 apiserver 服务
ps aux | grep kube-apiserver
#检查进程是否启动成功,过滤kube-apiserver最上面一个后面会有-etcd-servers=https://192.168.170.111:2379,https://192.168.170.113:2379,https://192.168.170.114:2379 --bind-address=192.168.170.111 --secure-port=6443此信息为正常,注意ip要改为自己的ip地址
netstat -natp | grep 6443
#过滤端口只有监控本机ip的6443为正常
cd /opt/k8s/
vim  scheduler.sh      
#修改脚本ip。KUBE_APISERVER="https://192.168.170.111:6443"为自己的apiserver的ip地址本文是master地址
./scheduler.sh
ps aux | grep kube-scheduler
#运行shceduler组件脚本,查看服务是否正常
vim controller-manager.sh  
#修改ipKUBE_APISERVER="https://192.168.170.111:6443"为自己的apiserver的ip地址本文是master地址
./controller-manager.sh
ps aux | grep kube-controller-manager
#运行controller-manager.sh组件脚本,查看服务是否正常
vim ./admin.sh
#修改ipKUBE_APISERVER="https://192.168.170.111:6443"为自己的apiserver的ip地址本文是master地址
./admin.sh
#生成kubectl连接集群的kubeconfig文件
kubectl get cs
#通过kubectl工具查看当前集群组件状态,正常状态如下
kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
etcd-2               Healthy   {"health":"true"}   
etcd-1               Healthy   {"health":"true"}   
etcd-0               Healthy   {"health":"true"} 
kubectl version
#查看版本信息

上传 kubernetes-server-linux-amd64.tar.gz 到 /opt/k8s/ 目录中,解压 kubernetes 压缩包

复制master组件的关键命令文件到 kubernetes工作目录的 bin 子目录中

创建 bootstrap token 认证文件,apiserver 启动时会调用,然后就相当于在集群内创建了一个这个用户,接下来就可以用 RBAC 给他授权

二进制文件、token、证书都准备好后,开启 apiserver 服务

#启动 scheduler 服务

#启动 controller-manager 服务

#生成kubectl连接集群的kubeconfig文件

6、部署worker node组件

#node1执行
mkdir -p /opt/kubernetes/{bin,cfg,ssl,logs}
#创建kubernetes工作目录
cd /opt/
unzip node.zip
#上传 node.zip 到 /opt 目录中,解压 node.zip 压缩包,获得kubelet.sh、proxy.shchmod +x kubelet.sh proxy.sh
#master执行
cd /opt/k8s/kubernetes/server/bin
scp kubelet kube-proxy root@192.168.30.12:/opt/kubernetes/bin/
#把 kubelet、kube-proxy 节点的组件拷贝到 node1 节点
mkdir /opt/k8s/kubeconfig
cd /opt/k8s/kubeconfig
chmod +x kubeconfig.sh
vim kubeconfig.sh 
./kubeconfig.sh 192.168.170.111 /opt/k8s/k8s-cert/
#上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中,生成kubelet初次加入集群引导kubeconfig文件和kube-proxy.kubeconfig文件
scp bootstrap.kubeconfig kube-proxy.kubeconfig root@192.168.170.113:/opt/kubernetes/cfg/
#把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 2个授权文件拷贝到 node1 节点
kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap
#RBAC授权,使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous
#若执行失败,可先给kubectl绑定默认cluster-admin管理员集群角色,授权集群操作权限
##node1节点执行
cd /opt/
./kubelet.sh 192.168.170.113
ps aux | grep kubelet
#node1节点执行kubelet安装脚步,注意要写node1节点的ip地址,查看kubelet服务是否正常运行
#在 master01 节点上操作,通过 CSR 请求
kubectl get csr
#可以查看有谁发起请求Pending 表示等待集群给该节点签发证书,查看的内容如下
NAME                                                   AGE   SIGNERNAME                                    REQUESTOR           CONDITION
node-csr-saZodXI7_rtwU6VJGMB1UKPx8sHUsAonx4l1BKJRXOo   53m   kubernetes.io/kube-apiserver-client-kubelet   kubelet-bootstrap   Pendingkubectl certificate approve node-csr-saZodXI7_rtwU6VJGMB1UKPx8sHUsAonx4l1BKJRXOo
#执行命令授权csr请求并签发证书
kubectl get csr
#再次查看请求的csr状态Approved,Issued 表示已授权 CSR 请求并签发证书
kubectl get node
#查看节点,状态为NotReady 由于网络插件还没部署
NAME            STATUS     ROLES    AGE    VERSION
192.168.170.113   NotReady   <none>   108s   v1.20.11
6.1在所有 node 节点上操作创建kubernetes工作目录

6.2上传 node.zip 到 /opt 目录中,解压 node.zip 压缩包,获得kubelet.sh、prox

6.3在master01节点上操作把 kubelet、kube-proxy 拷贝到 node 节点

6.4上传kubeconfig.sh文件到/opt/k8s/kubeconfig目录中,生成kubelet初次加入集群引导kubeconfig文件和kube-proxy.kubeconfig文件
#kubeconfig 文件包含集群参数(CA 证书、API Server 地址),客户端参数(上面生成的证书和私钥),集群 context 上下文参数(集群名称、用户名)。Kubenetes 组件(如 kubelet、kube-proxy)通过启动时指定不同的 kubeconfig 文件可以切换到不同的集群,连接到 apiserver。

6.5把配置文件 bootstrap.kubeconfig、kube-proxy.kubeconfig 拷贝到 node 节点

6.6RBAC授权,使用户 kubelet-bootstrap 能够有权限发起 CSR 请求证书

7、在node01节点上操作

7.1启动kubelet

7.2在 master01 节点上操作,通过 CSR 请求检查到 node01 节点的 kubelet 发起的 CSR 请求,Pending 表示等待集群给该节点签发证书

7.3通过 CSR 请求

7.4查看节点,由于网络插件还没有部署,节点会没有准备就绪 NotReady

7.5在 node01 节点上操作加载 ip_vs 模块 启动proxy服务

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

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

相关文章

使用LangChain和Neo4j快速创建RAG应用

大家好&#xff0c;Neo4j 通过集成原生的向量搜索功能&#xff0c;增强了其对检索增强生成&#xff08;RAG&#xff09;应用的支持&#xff0c;这标志着一个重要的里程碑。这项新功能通过向量索引搜索处理非结构化文本&#xff0c;增强了 Neo4j 在存储和分析结构化数据方面的现…

表征和基于结构的蛋白质工程:黄芪特异性皂苷乙酰转移酶-文献精读14

Characterization and structure-based protein engineering of a regiospecific saponin acetyltransferase from Astragalus membranaceus 表征和基于结构的蛋白质工程&#xff1a;黄芪特异性皂苷乙酰转移酶&#xff0c;一篇乙酰基转移酶文章精读分享~ 摘要 乙酰化有助于许…

【C++】继承相关(基类与派生类的继承关系以及细节整理)

目录 00.引言 01.继承的定义 02.基类和派生类对象 03.继承中的作用域 04.派生类的默认成员函数 05.友元、静态成员 00.引言 继承是面向对象编程中的一个重要概念&#xff0c;它的作用是创建一个新的类&#xff0c;该类可以从一个已存在的类&#xff08;父类/基类&#x…

服务攻防——数据库安全

第一步: 端口扫描&#xff1a;nmap 扫不到端口&#xff1a;端口被修改&#xff0c;防护软件&#xff0c;放在内网环境 mysql 内置端口3306 第一种官方漏洞 第一步:先扫描有什么端口开发 用这个错误密码一直访问&#xff0c;最终就进去了 弱口令猜解 不可以直接猜解&#x…

机器人学导论实验1—CoppeliaSim 平台介绍及初步使用BJTU

1. 实验内容分析 对实验内容的理解及关键点&#xff1a; 理解这个实验的关键点在于理解如何使用CoppeliaSim和MATLAB来控制和操作机器人。需要熟悉这两个工具的基本操作&#xff0c;例如如何加载场景、如何修改机器人参数、如何使用MATLAB客户端程序来控制机器人等。此外&#…

Docker 部署 Prometheus 实现一个极简的 QPS 监控

背景 : Prometheus 是近年来最流行的开源监控框架, 其功能强大且易于使用, 拥有各种主流后端语言(Java/Go/Python/Node.js等)与各种场景(如web handler/ k8s/Nginx/MySQL等)的客户端, 并自带图形化显示页面。分享一个快速入门Prometheus 的教程, 实现一个极简的, 后端开发需要特…

Nginx-基础-基础配置-Location

Location 参数匹配模式 参数匹配方式匹配模式说明注意事项精准匹配普通字符串匹配用于标准uri前&#xff0c;要求请求字符串与uri精准匹配&#xff0c;成功则立即处理&#xff0c;nginx停止搜索其他匹配。~正则匹配正则表达式匹配用于正则uri&#xff0c;表示uri包含正则表达…

基于SSM的理发店会员管理系统的设计和实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的理发店会员管理系统的设计和实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0…

Docker安装达梦数据库

1.确保已安装Docker 可参考&#xff1a;Linux安装Docker-CSDN博客 2.上传dm镜像并导入安装包 可以从&#xff1a;产品下载 | 达梦数据库下载dm镜像&#xff0c;如下图&#xff1a; docker load -i dm8_20230808.tar 3.导入后查看镜像 docker images 4.启动容器 docker run …

图的概念、性质和存储与简单遍历

前置知识&#xff1a;树的基本概念及性质 为了保证学习效果&#xff0c;请保证已经掌握前置知识之后&#xff0c;再来学习本章节&#xff01;如果在阅读中遇到困难&#xff0c;也可以回到前面章节查阅。 学习目标 掌握图的基本概念掌握图的一些性质 图的概念 基本概念 图 (…

Pytorch如何计算网络参数

方法一. 利用pytorch自身 PyTorch是一个流行的深度学习框架&#xff0c;它允许研究人员和开发者快速构建和训练神经网络。计算一个PyTorch网络的参数量通常涉及两个步骤&#xff1a;确定网络中每个层的参数数量&#xff0c;并将它们加起来得到总数。 以下是在PyTorch中计算网…

如何在 CloudFlare 里屏蔽/拦截某个 IP 或者 IP 地址段

最近除了接的 CloudFlare 代配置订单基本很少折腾自己的 CloudFlare 配置了,今天给大家简单的讲解一下如何在 CloudFlare 里屏蔽/拦截 IP 地址和 IP 地址段,虽然明月一直都很反感针对 IP 的屏蔽拦截,但不得不说有时候还是很有必要的。并且,既然可以拦截屏蔽 IP 自然也可以但…

鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基础

基本概念 | 官方定义 VFS&#xff08;Virtual File System&#xff09;是文件系统的虚拟层&#xff0c;它不是一个实际的文件系统&#xff0c;而是一个异构文件系统之上的软件粘合层&#xff0c;为用户提供统一的类Unix文件操作接口。由于不同类型的文件系统接口不统一&#x…

Flink HA模式下JobManager切换时发送告警

资源&版本信息 Flink版本1.14.6 运行平台&#xff1a;K8s HA使用ZK&#xff08;使用K8s的ETC应该是一个道理&#xff09; 详解Flink HA原理 Flink启动时会创建HighAvailabilityServices提供HA和相关基础服务&#xff0c;其中包括leaderRetrievalService和LeaderElecti…

搜索引擎的设计与实现(二)

目录 3 搜索引擎的基本原理 3.1搜索引擎的基本组成及其功能 l.搜索器 (Crawler) 2.索引器(Indexer) 3.检索器(Searcher) 4.用户接口(UserInterface) 3.2搜索引擎的详细工作流程 4 系统分析与设计 4.1系统分析 4.2系统概要设计 4.2系统实现目标 前面内容请移步 搜索引…

宁夏银川市起名专家的老师颜廷利:死神(死亡)并不可怕,可怕的是...

在中国优秀传统文化之中&#xff0c;汉语‘巳’字与‘四’同音&#xff0c;在阿拉伯数字里面&#xff0c;通常用‘4’来表示&#xff1b; 湖南长沙、四川成都、重庆、宁夏银川最靠谱最厉害的起名大师的老师颜廷利教授指出&#xff0c;作为汉语‘九’字&#xff0c;倘若是换一个…

[ACTF新生赛2020]SoulLike

没见过的错误&#xff1a; ida /ctg目录下的hexrays.cfg文件中的MAX_FUNCSIZE64 改为 MAX_FUNCSIZE1024 然后就是一堆数据 反正就是12个字符 from pwn import * flag"actf{" k0 for n in range(12):for i in range(33,127):pprocess("./SoulLike")_flag…

94.二叉树的中序遍历

刷算法题&#xff1a; 第一遍&#xff1a;1.看5分钟&#xff0c;没思路看题解 2.通过题解改进自己的解法&#xff0c;并且要写每行的注释以及自己的思路。 3.思考自己做到了题解的哪一步&#xff0c;下次怎么才能做对(总结方法) 4.整理到自己的自媒体平台。 5.再刷重复的类…

Python爬虫入门:网络世界的宝藏猎人

今天阿佑将带你踏上Python的肩膀&#xff0c;成为一名网络世界的宝藏猎人&#xff01; 文章目录 1. 引言1.1 简述Python在爬虫领域的地位1.2 阐明学习网络基础对爬虫的重要性 2. 背景介绍2.1 Python语言的流行与适用场景2.2 网络通信基础概念及其在数据抓取中的角色 3. Python基…

ssm+vue的公务用车管理智慧云服务监管平台查询统计(有报告)。Javaee项目,ssm vue前后端分离项目

演示视频&#xff1a; ssmvue的公务用车管理智慧云服务监管平台查询统计&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&…