kubeadm安装k8s高可用集群

目录

一、环境规划:

二、注意事项:

三、环境准备:

 1. 关闭防火墙规则,关闭selinux,关闭swap交换:

 2. 修改主机名:

 3. 有节点修改hosts文件:

 4. 所有节点时间同步:

 5. 所有节点实现Linux的资源限制:

 6. 所有节点升级内核(可选):

 7. 调整内核参数:

 8. 加载 ip_vs 模块:

四、所有节点安装docker:

 1. 安装:

 2. 更改daemon.json配置:

五、安装kubeadm,kubelet和kubectl:

 1. 定义kubernetes源:

 2. 配置Kubelet使用阿里云的pause镜像:

 3. 开机自启kubelet:

六、高可用组件安装、配置:

 1. 所有 master 节点部署 Haproxy:

 2. 配置haproxy代理:

 3. 所有 master 节点部署 keepalived:

 4. 配置keepalived 高可用:

 5. 编写健康检测脚本:

 6. 启动高可用代理集群:

七、部署K8S集群:

 1. 在 master01 节点上设置集群初始化配置文件:

 2. 更新集群初始化配置文件:

 3. 所有节点拉取镜像:

 4. master01 节点进行初始化:

 5. 修改controller-manager和scheduler配置文件:

 6. 部署网络插件flannel:

 7. 所有节点加入集群:

  7.1 所有master 节点加入集群:

  7.2 node 节点加入集群:

 8. 查看集群信息:

八、安装Harbor私有仓库:

 1. 安装docker:

 2. 所有 node 节点都修改配置文件,加上私有仓库配置

 3. 安装Harbor:

 4. 生成证书:

 5. 访问:


一、环境规划:

服务器类型ip地址
master01192.168.88.100
master02192.168.88.101
master03192.168.88.103
node01192.168.88.104
node02192.168.88.105
hub.wzw.com192.168.88.106

二、注意事项:

  • master节点cpu核心数要求大于2
  • 最新的版本不一定好,但相对于旧版本,核心功能稳定,但新增功能、接口相对不稳
  • 学会一个版本的 高可用部署,其他版本操作都差不多
  • 宿主机尽量升级到CentOS 7.9
  • 内核kernel升级到 4.19+ 这种稳定的内核
  • 部署k8s版本时,尽量找 1.xx.5 这种大于5的小版本(这种一般是比较稳定的版本)

三、环境准备:

 1. 关闭防火墙规则,关闭selinux,关闭swap交换:

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
swapoff -a
sed -ri 's/.*swap.*/#&/' /etc/fstab

 2. 修改主机名:

hostnamectl set-hostname master01
hostnamectl set-hostname master02
hostnamectl set-hostname master03
hostnamectl set-hostname node01
hostnamectl set-hostname node02

 3. 有节点修改hosts文件:

cat >> /etc/hosts << EOF
192.168.88.100 master01
192.168.88.101 master02
192.168.88.103 master03
192.168.88.104 node01
192.168.88.105 node02
EOF

 4. 所有节点时间同步:

yum -y install ntpdate
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' >/etc/timezone
ntpdate time2.aliyun.comsystemctl enable --now crondcrontab -e
*/30 * * * * /usr/sbin/ntpdate time2.aliyun.com

 5. 所有节点实现Linux的资源限制:

vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 655350
* soft memlock unlimited
* hard memlock unlimited

 6. 所有节点升级内核(可选):

wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm -O /opt/kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm
wget http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm -O /opt/kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpmcd /opt/
yum localinstall -y kernel-ml*#更改内核启动方式
grub2-set-default 0 && grub2-mkconfig -o /etc/grub2.cfg
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
grubby --default-kernel
reboot

 7. 调整内核参数:

cat > /etc/sysctl.d/k8s.conf <<EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
fs.may_detach_mounts = 1
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.netfilter.nf_conntrack_max=2310720net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 327680
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_conntrack_max = 65536
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 16384
EOF#生效参数
sysctl --system  

 8. 加载 ip_vs 模块:

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

四、所有节点安装docker:

 1. 安装:

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

 2. 更改daemon.json配置:

cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "500m", "max-file": "3"}
}
EOF#将docker的资源限制更改为systemd,保持与k8s一致systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service 

五、安装kubeadm,kubelet和kubectl:

    所有节点安装kubeadm,kubelet和kubectl

 1. 定义kubernetes源:

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
EOFyum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15

 2. 配置Kubelet使用阿里云的pause镜像:

cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.2"
EOF

 3. 开机自启kubelet:

systemctl enable --now kubelet

六、高可用组件安装、配置:

 1. 所有 master 节点部署 Haproxy:

yum -y install haproxy

 2. 配置haproxy代理:

cat > /etc/haproxy/haproxy.cfg << EOF
globallog         127.0.0.1 local0 infolog         127.0.0.1 local1 warningchroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemonstats socket /var/lib/haproxy/statsdefaultsmode                    tcplog                     globaloption                  tcplogoption                  dontlognulloption                  redispatchretries                 3timeout queue           1mtimeout connect         10stimeout client          1mtimeout server          1mtimeout check           10smaxconn                 3000frontend monitor-inbind *:33305mode httpoption httplogmonitor-uri /monitorfrontend k8s-masterbind *:16443        #如果与apiserver部署在同一台机器上监听端口会冲突,更改监听端口mode tcpoption tcplogdefault_backend k8s-masterbackend k8s-mastermode tcpoption tcplogoption tcp-checkbalance roundrobinserver k8s-master1 192.168.88.100:6443  check inter 10000 fall 2 rise 2 weight 1server k8s-master2 192.168.88.101:6443  check inter 10000 fall 2 rise 2 weight 1server k8s-master3 192.168.88.103:6443  check inter 10000 fall 2 rise 2 weight 1
EOF

 3. 所有 master 节点部署 keepalived:

yum -y install keepalived

 4. 配置keepalived 高可用:

cd /etc/keepalived/
vim keepalived.conf
! Configuration File for keepalived
global_defs {router_id LVS_HA1
}vrrp_script chk_haproxy {script "/etc/keepalived/check_haproxy.sh"interval 2weight 2
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1virtual_ipaddress {192.168.80.200}track_script {chk_haproxy}
}

 5. 编写健康检测脚本:

vim check_haproxy.sh
#!/bin/bash
if ! killall -0 haproxy; thensystemctl stop keepalived
fi
chmod +x check_haproxy.sh

 6. 启动高可用代理集群:

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

七、部署K8S集群:

 1. 在 master01 节点上设置集群初始化配置文件:

kubeadm config print init-defaults > /opt/kubeadm-config.yamlcd /opt/
vim kubeadm-config.yaml
......
11 localAPIEndpoint:
12   advertiseAddress: 192.168.80.10		#指定当前master节点的IP地址
13   bindPort: 644321 apiServer:
22   certSANs:								#在apiServer属性下面添加一个certsSANs的列表,添加所有master节点的IP地址和集群VIP地址
23   - 192.168.80.100
24   - 192.168.80.10
25   - 192.168.80.11
26   - 192.168.80.1230 clusterName: kubernetes
31 controlPlaneEndpoint: "192.168.80.100:16444"		#指定集群VIP地址
32 controllerManager: {}38 imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers			#指定镜像下载地址
39 kind: ClusterConfiguration
40 kubernetesVersion: v1.20.15				#指定kubernetes版本号
41 networking:
42   dnsDomain: cluster.local
43   podSubnet: "10.244.0.0/16"				#指定pod网段,10.244.0.0/16用于匹配flannel默认网段
44   serviceSubnet: 10.96.0.0/16			#指定service网段
45 scheduler: {}
#末尾再添加以下内容
--- 
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs									#把默认的kube-proxy调度方式改为ipvs模式

 2. 更新集群初始化配置文件:

kubeadm config migrate --old-config kubeadm-config.yaml --new-config new.yaml

 3. 所有节点拉取镜像:

#拷贝yaml配置文件给其他主机,通过配置文件进行拉取镜像
for i in master02 master03 node01 node02; do scp /opt/new.yaml $i:/opt/; donekubeadm config images pull --config /opt/new.yaml

 4. master01 节点进行初始化:

kubeadm init --config new.yaml --upload-certs | tee kubeadm-init.log

 初始化后会出现以下信息用来加入k8s集群:

#提示:
.........
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config#这个命令是常规用户身份运行,在master01节点执行此命令
Alternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.conf#如果是root用户,在master01节点执行此命令,两种都行,自己选You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of the control-plane node running the following command on each as root:
#master节点加入使用的命令,记录!kubeadm join 192.168.88.200:16443 --token 7t2weq.bjbawausm0jaxury \--discovery-token-ca-cert-hash sha256:e76e4525ca29a9ccd5c24142a724bdb6ab86512420215242c4313fb830a4eb98 \--control-plane --certificate-key 0f2a7ff2c46ec172f834e237fcca8a02e7c29500746594c25d995b78c92dde96Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.Then you can join any number of worker nodes by running the following on each as root:
#node节点加入使用的命令。记录!
kubeadm join 192.168.88.200:16443 --token 7t2weq.bjbawausm0jaxury \--discovery-token-ca-cert-hash sha256:e76e4525ca29a9ccd5c24142a724bdb6ab86512420215242c4313fb830a4eb98

 5. 修改controller-manager和scheduler配置文件:

vim /etc/kubernetes/manifests/kube-scheduler.yaml 
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
......#- --port=0					#搜索port=0,把这一行注释掉systemctl restart kubelet所有master节点配置

 6. 部署网络插件flannel:

所有节点上传 flannel 镜像 flannel.tar 和网络插件 cni-plugins-linux-amd64-v0.8.6.tgz 到 /opt 目录,master节点上传 kube-flannel.yml 文件
cd /opt
docker load < flannel.tarmv /opt/cni /opt/cni_bak
mkdir -p /opt/cni/bin
tar zxvf cni-plugins-linux-amd64-v0.8.6.tgz -C /opt/cni/bin
#注意自己使用的版本kubectl apply -f kube-flannel.yml 

 7. 所有节点加入集群:

  7.1 所有master 节点加入集群:

   使用自己的token

  kubeadm join 192.168.88.200:16443 --token 7t2weq.bjbawausm0jaxury \--discovery-token-ca-cert-hash sha256:e76e4525ca29a9ccd5c24142a724bdb6ab86512420215242c4313fb830a4eb98 \--control-plane --certificate-key 0f2a7ff2c46ec172f834e237fcca8a02e7c29500746594c25d995b78c92dde96mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

  7.2 node 节点加入集群:

kubeadm join 192.168.88.200:16443 --token 7t2weq.bjbawausm0jaxury \--discovery-token-ca-cert-hash sha256:e76e4525ca29a9ccd5c24142a724bdb6ab86512420215242c4313fb830a4eb98

 8. 查看集群信息:

#在 master01 查看集群信息
kubectl get nodeskubectl get pod -A

八、安装Harbor私有仓库:

    新开一台服务器,ip地址为:192.168.88.106

 1. 安装docker:


//修改主机名
hostnamectl set-hostname hub.wzw.com//所有节点加上主机名映射
echo '192.168.88.106 hub.wzw.com' >> /etc/hosts//安装 docker
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.iomkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.wzw.com"]
}
EOFsystemctl start docker
systemctl enable docker

 2. 所有 node 节点都修改配置文件,加上私有仓库配置

cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"insecure-registries": ["https://hub.wzw.com"]
}
EOFsystemctl daemon-reload
systemctl restart docker

 3. 安装Harbor:

cd /opt/
#上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录
cp docker-compose /usr/local/bin
chmod +x /usr/local/bin/docker-compose
#将docker-compose编排工具复制到bin目录,并添加执行权限tar -zxvf harbor-offline0installer-v1.2.2.tgz
#将harbor包解包cd harbor.cfgvim harbor.cfg
5  hostname = hub.wzw.com
9  ui_url_protocol = https
24 ssl_cert = /data/cert/server.crt
25 ssl_cert_key = /data/cert/server.key
59 harbor_admin_password = Harbor12345

 4. 生成证书:

mkdir  -p /data/cert
#创建证书目录cd /data/cert
openssl genrsa -des3 -out server.key 2048
#生成私钥
//输入两遍密码:123456openssl req -new -key server.key -out server.csr
#生成证书签名请求文件
//输入私钥密码:123456
//输入国家名:CN
//输入省名:BJ
//输入市名:BJ
//输入组织名:www
//输入机构名:www
//输入域名:hub.wzw.com
//输入管理员邮箱:admin@ydq.com
//其它全部直接回车cp server.key server.key.org
#备份私钥openssl rsa -in server.key.org -out server.key
#清除私钥密码:123456,重新生成一个文件,覆盖以前的带密码的。openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt
#签名证书chmod +x /data/cert/*
#全部添加执行权限
cd /opt/harbor/
./install.sh
#执行脚本

 5. 访问:

在本地使用火狐浏览器访问:https://hub.wzw.com添加例外 -> 确认安全例外
用户名:admin
密码:Harbor12345

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

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

相关文章

【星海出品】flask (二) request替代VUE测试flask接口

flask 是一门使用 python 编写的后端框架。 VUE前端UI装饰推荐学习Element组件库 之后就不使用UI去测试flask了,环节太多,影响直观反映,直接使用postman或request测试更加直观. url携带参数 app.route(/my/blog/<blog_id>)def blog_detail(blog_id): # put applicatio…

c++ 中 const 和static

1. static 首先使用static的主要目的是控制存储周期&#xff0c; 链接性 和可见性 可以作为 1. 局部变量 2.类成员 3. 全局变量和函数 2. const const 关键字用于声明一个变量为常量&#xff0c; 一旦初始化之后&#xff0c;它的值就不会被改变 。 2.1 常量表达式 声明为c…

CF1781F Bracket Insertion(2700*) 题解(括号匹配DP)

题目 题面 简要题意&#xff1a; 你需要执行一下步骤 n n n 次来构建括号序列&#xff1a; ⋅ \cdot ⋅ 等概率选择一个空位&#xff08;若当前有 k k k 个字符&#xff0c;则有 k 1 k 1 k1 个空位&#xff09;。 ⋅ \cdot ⋅ 以 p p p 的概率插入字符…

2023.10月考试战报|华为认证HCIP考试100%通过

相关文章&#xff1a; 考试战报|2023.7月-8月思科认证、华为认证-CSDN博客 2023.4月及5月最新HCIP 考试战报来袭_厦门微思网络的博客-CSDN博客 HCIP 3-4月考试战报_厦门微思网络的博客-CSDN博客 2023年HCIP/CCNP考试战报_厦门微思网络的博客-CSDN博客 2023年10月&#xff0…

卸载QQ后聊天记录怎么恢复?这3个有效方法送给大家!

近年来&#xff0c;微信崛起&#xff0c;已经逐渐占据了人们的日常生活&#xff0c;成为大家不可或缺的东西。这也导致了如今使用QQ的用户变得越来越少。如果用户使用QQ的频率比较低&#xff0c;那么他们可能会选择卸载QQ以此来节省手机空间。 一旦将QQ卸载&#xff0c;这意味…

集合贴3——智能客服系统

基础课17——智能客服系统-CSDN博客文章浏览阅读56次。近年来&#xff0c;实体客服机器人开始出现在银行办公厅、电信商务厅等场合&#xff0c;形成了网络智能客服、电话智能客服、实体客服机器人综合智能客服系统&#xff0c;这初步形成了一种新的产业形式。https://blog.csdn…

电汇ABC(2023-10)

目录 基本表单费用承担方式汇款人姓名(拼音)汇款人地址收款人姓名收款人账号收款人地址(及国家/地区)收款行SWIFT 代码收款行名称、地址申报信息 相关汇款时效汇出审核关于汇往境外他人账户 费用钞转汇 其他其他方式个人购汇额度美元现钞存取额度破损美元境内外币转账美元 OR 港…

强化您的应用安全,从app加固开始

强化您的应用安全&#xff0c;从app加固开始 目录 强化您的应用安全&#xff0c;从app加固开始 摘要 引言 1. 加密和数据保护 2. 代码混淆 3. 防止反编译 4. 安全测试 5. 更新和补丁 6. 权限控制 7. 输入验证和输出过滤 8. 日志记录和监控 9. 安全设计和架构 10.…

Python 函数定义详解(More on Defining Functions)- 默认参数/位置参数/关键字参数

1.函数的定义和调用方法 1.1函数定义方法 """def 关键字用来定义一个函数。function_name 是函数名&#xff0c;应遵循命名规范。parameter1, parameter2, ... 是函数的参数列表&#xff0c;可以是任意数量和类型的参数。函数体是用缩进&#xff08;通常为4个…

Cesium 相机设置

1.setView 直接跳转到目的地 // 设置相机位置 const position Cesium.Cartesian3.fromDegrees(113, 31, 20000); // setView通过定义相机目的地&#xff08;方向&#xff09;,直接跳转到目的地 viewer.camera.setView({ destination: position, // 位置设置 orientation: { //…

基于SSM的二手车交易网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

华为开源carbondata中的使用问题处理

carbondata中的使用问题处理 Q&#xff1a;什么是不良记录&#xff1f; A&#xff1a;由于数据类型不兼容而无法加载到CarbonData中的记录或为空或具有不兼容格式的记录被归类为不良记录。 Q&#xff1a;CarbonData中的不良记录存储在哪里&#xff1f; A&#xff1a;不良记录…

代码随想录day2

目录 vscode 自定义代码模板Reference vscode 自定义代码模板 select User snippets from Settings on the bottom left corner. select a certain language for example: cpp create your own snippets 格式如下&#xff0c;防着写 第一行"cpp template",模板…

【Web安全】CORS跨域资源共享漏洞

文章目录 前言一、漏洞概述二、漏洞原理三、CORS响应头类型四、漏洞挖掘五、修复建议前言 本篇文章主要介绍CORS跨域漏洞产生的原理,漏洞复现过程,挖掘手段以及如何进行修复,文章难免会有失误,烦请留下宝贵建议,谢谢! 一、漏洞概述 跨域资源共享(CORS)是一种浏览器机制…

Git 入门使用 —— 建库、代码上下传、常用命令

目录 一、Git 入门 1.1 Git简介 1.2 Git安装 1.3 创建码云仓库 二、Git 使用 2.1 git初始化操作 2.2 代码上传 2.3 代码下载 2.4 代码更新 2.4.1 仓库管理者 2.4.1 仓库使用者 三、Git 常用命令 一、Git 入门 1.1 Git简介 Git是一个开源的分布式版本控制系统&am…

app自动化测试——capability 配置参数解析

一、Capability 简介 功能&#xff1a;配置 Appium 会话&#xff0c;告诉 Appium 服务器需要自动化的平台的应用程序 形式&#xff1a;键值对的集合&#xff0c;键对应设置的名称&#xff0c;值对应设置的值 主要分为三部分 公共部分 ios 部分 android 部分 二、Session Appi…

muduo源码剖析之InetAddress

InetAddress InetAddress 类是 muduo 网络库中的一个重要类&#xff0c;用于表示网络中的 IP 地址和端口号。 InetAddress 类在 muduo 网络库中被广泛使用&#xff0c;用于表示网络中的通信实体的地址信息&#xff0c;例如服务器地址、客户端地址等。通过 InetAddress 类&…

第14章,lambda表达式与流处理例题

package 例题;import java.util.List; import java.util.stream.Collectors; import java.util. stream.Stream;public class 例题19 { public static void main(String[] args){List<例题14> list 例题14.get例题14List();//获取公共类的测试数据Stream<例题14>…

Win11 Edge浏览器进入朔日考试系统(无纸化测评系统)的方法

Win11 Edge浏览器进入朔日考试系统&#xff08;无纸化测评系统&#xff09;的方法 笔记本型号&#xff1a;联想 使用浏览器&#xff1a;edge浏览器 操作系统&#xff1a;Windows11 网址&#xff1a;http://172.31.0.139/WZHEDU/ 注意:使用此方法打开edge浏览器会频繁出现弹窗&a…

派金SDK接入文档

一、接入SDK 1、将sdk文件手动导入到目标项目中&#xff0c;如下图所示&#xff1a; 2、该SDK需接入其他三方广告&#xff0c;通过pod的方式接入&#xff0c;在Profile中加入如下代码&#xff1a; pod GDTMobSDK, ~> 4.14.40pod BaiduMobAdSDK, ~> 5.313pod KSAdSDK…