部署K8S集群

目录

一、环境搭建

1、准备环境

2、安装master节点

3、安装k8s-master上的node

4、安装配置k8s-node1节点

5、安装k8s-node2节点

6、为所有node节点配置flannel网络

7、配置docker开启加载防火墙规则允许转发数据

二、k8s常用资源管理

1、创建一个pod

2、pod管理


一、环境搭建

1、准备环境

  1. 计算机说明,建议系统版本7.4或者7.6

主机名

IP地址

角色

硬件

k8s-master

192.168.2.116

Master,node

Etcd、apiserver、controlor-manager、scheduler、kube-proxy、docker、registry

K8s-node1

192.168.2.117

Node

Kubletel、kube-proxy、docker

K8s-node2

192.168.2.118

Node

Kubletel、kube-proxy、docker

  1. 修改master主机的计算机名设置host文件
[root@centos01 ~]# hostnamectl set-hostname k8s-master[root@centos01 ~]# bash[root@k8s-master ~]# vim /etc/hosts192.168.2.116 k8s-master192.168.2.117 k8s-node1192.168.2.118 k8s-node2
  1. 修改节点一主机名设置host文件

[root@centos02 ~]# hostnamectl set-hostname k8s-node1[root@centos02 ~]# bash[root@k8s-node1 ~]# scp 192.168.2.117:/etc/hosts /etc/

4)修改节点二主机名字设置host文件

[root@centos03 ~]# hostnamectl set-hostname k8s-node2[root@centos03 ~]# bash[root@k8s-node2 ~]# scp 192.168.2.118:/etc/hosts /etc/

2、安装master节点

1)安装etcd配置etcd

[root@k8s-master ~]# yum -y install etcd[root@k8s-master ~]# cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak[root@k8s-master ~]# vim /etc/etcd/etcd.conf6 ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
21 ETCD_ADVERTISE_CLIENT_URLS=http://192.168.2.116:2379[root@k8s-master ~]# systemctl start etcd[root@k8s-master ~]#  systemctl enable etcdCreated symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.

2)安装k8s-master节点

[root@k8s-master ~]#yum install kubernetes-master.x86_64 -y

3)配置apiserver

[root@k8s-master ~]# vim /etc/kubernetes/apiserver8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"		//修改监听IP地址
12 KUBE_API_PORT="--port=8080"							//监听端口
16 KUBELET_PORT="--kubelet-port=10250"					//kubelet监听端口
19 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.2.116:2379"	//连接etcd
24 KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"

4)配置controller和scheduler

[root@k8s-master ~]# vim /etc/kubernetes/config22 KUBE_MASTER="--master=http://192.168.2.116:8080"

5)启动k8s服务

[root@k8s-master ~]#  systemctl start kube-apiserver.service[root@k8s-master ~]# systemctl start kube-controller-manager.service[root@k8s-master ~]# systemctl start kube-scheduler.service[root@k8s-master ~]# systemctl enable kube-apiserver.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/kube-apiserver.service to /usr/lib/systemd/system/kube-apiserver.service.[root@k8s-master ~]# systemctl enable kube-controller-manager.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/kube-controller-manager.service to /usr/lib/systemd/system/kube-controller-manager.service.[root@k8s-master ~]# systemctl enable kube-scheduler.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/kube-scheduler.service to /usr/lib/systemd/system/kube-scheduler.service.

6)检查节点安装都是健康的

[root@k8s-master ~]# kubectl get componentstatus NAME                 STATUS    MESSAGE             ERROR
etcd-0               Healthy   {"health":"true"}   
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  

3、安装k8s-master上的node

1)安装node

[root@k8s-master ~]# yum install kubernetes node.x86_64

2)配置kubelet

[root@k8s-master ~]# vim /etc/kubernetes/kubelet
5 KUBELET_ADDRESS="--address=192.168.2.116"						//监听IP地址
11 KUBELET_HOSTNAME="--hostname-override=k8s-master"				//监听计算机名
14 KUBELET_API_SERVER="--api-servers=http://192.168.2.116:8080"		//监听apiserver端口

3)启动kubelet启动自动启动docker服务

[root@k8s-master ~]# systemctl start kubelet
[root@k8s-master ~]# systemctl enable kubeletCreated symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

4)启动kubelet-proxy

[root@k8s-master ~]# systemctl start kube-proxy
[root@k8s-master ~]# systemctl enable kube-proxyCreated symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.

5)检查node节点

[root@k8s-master ~]# kubectl get nodesNAME         STATUS    AGE
k8s-master   Ready     51s

4、安装配置k8s-node1节点

1)安装node

[root@k8s-node1 ~]# yum install kubernetes-node.x86_64

2)node1连接k8s-master

[root@k8s-node1 ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.2.116:8080"

3)配置kubelet

[root@k8s-node1 ~]# vim /etc/kubernetes/kubelet
5 KUBELET_ADDRESS="--address=192.168.2.117"
11 KUBELET_HOSTNAME="--hostname-override=k8s-node1"
15 KUBELET_API_SERVER="--api-servers=http://192.168.2.116:8080"

4)启动服务

[root@k8s-node1 yum.repos.d]# systemctl start kubelet
[root@k8s-node1 yum.repos.d]# systemctl start kube-proxy
[root@k8s-node1 yum.repos.d]# systemctl enable kubeletCreated symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.[root@k8s-node1 yum.repos.d]# systemctl enable kube-proxyCreated symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.

5)在master节点检测node节点状态

[root@k8s-master ~]# kubectl get nodesNAME         STATUS    AGE
k8s-master   Ready     27m
k8s-node1    Ready     12m

5、安装k8s-node2节点

1)安装node

[root@k8s-node2 ~]# yum install kubernetes-node.x86_64

 2)node2连接k8s-master

[root@k8s-node2 ~]# vim /etc/kubernetes/config
22 KUBE_MASTER="--master=http://192.168.2.116:8080"

3)配置kubelet

[root@k8s-node2 ~]# vim /etc/kubernetes/kubelet
5 KUBELET_ADDRESS="--address=192.168.2.118"
11 KUBELET_HOSTNAME="--hostname-override=k8s-node1"
15 KUBELET_API_SERVER="--api-servers=http://192.168.2.116:8080"

4)启动服务

[root@k8s-node2 yum.repos.d]# systemctl start kubelet
[root@k8s-node2 yum.repos.d]# systemctl start kube-proxy
[root@k8s-node2 yum.repos.d]# systemctl enable kube-proxyCreated symlink from /etc/systemd/system/multi-user.target.wants/kube-proxy.service to /usr/lib/systemd/system/kube-proxy.service.[root@k8s-node2 yum.repos.d]# systemctl enable kubeletCreated symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to 
/usr/lib/systemd/system/kubelet.service.

5)在master节点检测node节点状态

[root@k8s-master ~]# kubectl get nodesNAME         STATUS    AGE
k8s-master   Ready     31m
k8s-node1    Ready     16m
k8s-node2    Ready     33s

6、为所有node节点配置flannel网络

1)在k8s-master节点安装flannel

[root@k8s-master ~]# yum install flannel -y
[root@k8s-master ~]# vim /etc/sysconfig/flanneld
4 FLANNEL_ETCD_ENDPOINTS=http://192.168.200.112:2379[root@k8s-master ~]# etcdctl set /atomic.io/network/config '{ "Network": "172.16.0.0/16" }'	//配置网络
{ "Network": "172.16.0.0/16" }[root@k8s-master ~]# systemctl start flanneld
[root@k8s-master ~]# systemctl enable flanneld
Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.
Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.[root@k8s-master ~]# ifconfigflannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472inet 172.16.35.0  netmask 255.255.0.0  destination 172.16.35.0inet6 fe80::db5b:30ce:83c4:c67b  prefixlen 64  scopeid 0x20<link>unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3  bytes 144 (144.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@k8s-master ~]# systemctl restart docker
[root@k8s-master ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.[root@k8s-master ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 172.16.35.1  netmask 255.255.255.0  broadcast 0.0.0.0ether 02:42:02:36:e4:15  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2)配置node1节点flannel网络

[root@k8s-node1 ~]# yum install flannel -y
[root@k8s-node1 ~]# vim /etc/sysconfig/flanneld4 FLANNEL_ETCD_ENDPOINTS=http://192.168.2.116:2379[root@k8s-node1 ~]# systemctl start flanneld
[root@k8s-node1 ~]# systemctl enable flanneldCreated symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.
Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.[root@k8s-node1 ~]# systemctl restart docker
[root@k8s-node1 ~]# systemctl enable dockerCreated symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

3)安装node2节点flannel网络

[root@k8s-node2 ~]# yum install flannel -y[root@k8s-node2 ~]# vim /etc/sysconfig/flanneld4 FLANNEL_ETCD_ENDPOINTS=http://192.168.2.116:2379[root@k8s-node2 ~]# systemctl start flanneld
[root@k8s-node2 ~]# systemctl enable flanneldCreated symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.
Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.[root@k8s-node2 ~]# systemctl restart docker
[root@k8s-node2 ~]# systemctl enable dockerCreated symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.[root@k8s-master ~]# kubectl get nodesNAME         STATUS    AGE
k8s-master   Ready     47m
k8s-node1    Ready     32m
k8s-node2    Ready     16m

4)测试docker容器跨宿主机通信

[root@k8s-master ~]# docker run -it busybox            //下载镜像
Unable to find image 'busybox:latest' locally
Trying to pull repository docker.io/library/busybox ... 
latest: Pulling from docker.io/library/busybox
3f4d90098f5b: Pull complete 
Digest: sha256:3fbc632167424a6d997e74f52b878d7cc478225cffac6bc977eedfe51c7f4e79
Status: Downloaded newer image for docker.io/busybox:latest
/ # 
/ # ping 172.16.71.1                    //测试和其他docker宿主机之间通信
PING 172.16.71.1 (172.16.71.1): 56 data bytes
64 bytes from 172.16.71.1: seq=0 ttl=61 time=1.730 ms
64 bytes from 172.16.71.1: seq=1 ttl=61 time=0.443 ms
64 bytes from 172.16.71.1: seq=2 ttl=61 time=0.867 ms
^C
--- 172.16.71.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.443/1.013/1.730 ms
/ # ping 172.16.10.1                    //测试和其他docker宿主机之间通信
PING 172.16.10.1 (172.16.10.1): 56 data bytes
64 bytes from 172.16.10.1: seq=0 ttl=61 time=1.424 ms
64 bytes from 172.16.10.1: seq=1 ttl=61 time=0.485 ms
^C
--- 172.16.10.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.485/0.954/1.424 ms

7、配置docker开启加载防火墙规则允许转发数据

1)配置k8s-master节点

[root@k8s-master ~]# vim /usr/lib/systemd/system/docker.service
18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT        #添加[root@k8s-master ~]# systemctl daemon-reload
[root@k8s-master ~]# systemctl restart docker

2)配置k8s-node1节点

[root@k8s-node1 ~]# vim /usr/lib/systemd/system/docker.service18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT        #添加[root@k8s-node1 ~]# systemctl daemon-reload
[root@k8s-node1 ~]# systemctl restart docker

3)配置k8s-node2节点

[root@k8s-node2 ~]# vim /usr/lib/systemd/system/docker.service18 ExecStartPort=/usr/sbin/iptables -P FORWARD ACCEPT            #添加[root@k8s-node2 ~]# systemctl daemon-reload
[root@k8s-node2 ~]# systemctl restart docker

二、k8s常用资源管理

1、创建一个pod

1)创建yuml文件

[root@k8s-master ~]# mkdir k8s
[root@k8s-master ~]# vim ./k8s/nginx.yaml
apiVersion: v1
kind: Pod
metadata:name: nginxlabels:app: web
spec:containers:- name: nginximage: nginx:1.13ports:- containerPort: 80

2)创建容器

方法一.  yum安装[root@k8s-master ~]#yum install *rhsm*方法二 (我是用这方法解决的)执行命令:[root@k8s-master ~]#wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm[root@k8s-master ~]#rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem    
前两个命令会生成/etc/rhsm/ca/redhat-uep.pem文件.     [root@k8s-master ~]#docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml

3)查看所有pod创建运行状态

[root@k8s-master ~]# kubectl get pod
NAME      READY     STATUS              RESTARTS   AGE
nginx     0/1       ContainerCreating   0          5m

4)查看指定pod资源

[root@k8s-master ~]# kubectl get pod nginx
NAME      READY     STATUS              RESTARTS   AGE
nginx     0/1       ContainerCreating   0          6m

5)查看pod运行的详细信息

[root@k8s-master ~]# kubectl describe pod nginx
Name:		nginx
Namespace:	default
Node:		k8s-node2/192.168.2.118
Start Time:	Fri, 11 Aug 2023 15:34:10 +0800
Labels:		app=web
Status:		Pending
IP:		
Controllers:	<none>
Containers:nginx:Container ID:		Image:			nginx:1.13Image ID:			Port:			80/TCPState:			WaitingReason:			ContainerCreatingReady:			FalseRestart Count:		0Volume Mounts:		<none>Environment Variables:	<none>
Conditions:Type		StatusInitialized 	True Ready 	False PodScheduled 	True 
No volumes.
QoS Class:	BestEffort
Tolerations:	<none>
Events:FirstSeen	LastSeen	Count	From			SubObjectPath	Type  Reason		Message---------	--------	-----	----			-------------	--------	------		-------7m		7m		1	{default-scheduler }			NormalScheduled	Successfully assigned nginx to k8s-node27m		1m		6	{kubelet k8s-node2}			WarninFailedSync	Error syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request.  details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"6m	9s	25	{kubelet k8s-node2}		Warning	FailedSync	Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""

6)验证运行的pod

[root@k8s-master ~]#  kubectl get pod nginx -o wide
NAME      READY     STATUS              RESTARTS   AGE       IP        NODE
nginx     0/1       ContainerCreating   0          8m        <none>    k8s-node2

2、pod管理

1)删除pod

[root@k8s-master ~]# kubectl delete  pod nginx
pod "nginx" deleted

2)查看删除pod无法找到

[root@k8s-master ~]# kubectl get pod nginx -o wide
Error from server (NotFound): pods "nginx" not found

3)创建pod

[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml 
pod "nginx" created

4)发现最先创建的pod运行在k8s-master节点上,下载镜像速度太慢没法运行

[root@k8s-master ~]# kubectl get pod nginx -o wide
NAME      READY     STATUS              RESTARTS   AGE       IP        NODE
nginx     0/1       ContainerCreating   0          8s        <none>    k8s-node1

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

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

相关文章

电脑开不了机如何解锁BitLocker硬盘锁

事情从这里说起&#xff0c;不想看直接跳过 早上闲着无聊&#xff0c;闲着没事干&#xff0c;将win11的用户名称改成了含有中文字符的用户名&#xff0c;然后恐怖的事情发生了&#xff0c;蓝屏了… 然后就是蓝屏收集错误信息&#xff0c;重启&#xff0c;蓝屏收集错误信息&…

C#小轮子:自动连续Ping网络地址

文章目录 前言Ping代码异步问题 前言 工作中&#xff0c;我们经常用到Ping这个指令&#xff0c;有时候我们需要Ping整个网段来查看这个网段上面有什么设备&#xff0c;哪些Ip地址是通的&#xff0c;这个时候就需要Ping指令 Ping 代码 我这个是批量Ping的代码&#xff0c;而…

python爬虫实战(2)--爬取某博热搜数据

1. 准备工作 使用python语言可以快速实现&#xff0c;调用BeautifulSoup包里面的方法 安装BeautifulSoup pip install BeautifulSoup完成以后引入项目 2. 开发 定义url url https://s.微博.com/top/summary?caterealtimehot定义请求头&#xff0c;微博请求数据需要cookie…

C++14 17共享超时互斥锁 shared_timed_mutex / 共享锁 shared_mutex

共享锁&#xff0c;也叫读写锁&#xff0c;主要应用与读多写少的场景。 比如&#xff0c;在多线程环境下&#xff0c;多个线程操作同一个文件&#xff0c;其中读文件的操作比写文件的操作更加频繁&#xff0c;那么在进行读操作时&#xff0c;不需要互斥&#xff0c;线程间可以…

OpenAI允许网站阻止其网络爬虫;谷歌推出类似Grammarly的语法检查功能

&#x1f989; AI新闻 &#x1f680; OpenAI推出新功能&#xff0c;允许网站阻止其网络爬虫抓取数据训练GPT模型 摘要&#xff1a;OpenAI最近推出了一个新功能&#xff0c;允许网站阻止其网络爬虫从其网站上抓取数据训练GPT模型。该功能通过在网站的Robots.txt文件中禁止GPTB…

datax抽取库名带点的表遇到的问题

一、描述任务 使用Datax抽取mysql中的数据到hive的wedw_ods层中&#xff0c;mysql的库名为&#xff1a;b.p.n.p 表名为&#xff1a;bene_group 二、datax.json脚本生成 因为datax的脚本是自动生成的&#xff0c;生成的格式如下&#xff1a; {"core": {},"jo…

python接口自动化测试框架2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等

项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python unittest ddt HTMLTestRunner log excel mysql 企业微信通知 Jenkins 实现的接口自动化框架。 前言 公司突然要求你做自动化&#xff0c;但是没有代码基础不知道怎么做&#xff1f;或者有自动化…

部署模型并与 TVM 集成

本篇文章译自英文文档 Deploy Models and Integrate TVM tvm 0.14.dev0 documentation 更多 TVM 中文文档可访问 →Apache TVM 是一个端到端的深度学习编译框架&#xff0c;适用于 CPU、GPU 和各种机器学习加速芯片。 | Apache TVM 中文站 本节介绍如何将 TVM 部署到各种平台&…

搭建Repo服务器

1 安装repo 参考&#xff1a;清华大学开源软件镜像站:Git Repo 镜像使用帮助 2 创建manifest仓库 2.1 创建仓库 git init --bare manifest.git2.2 创建default.xml文件 default.xml文件内容&#xff1a; <?xml version"1.0" encoding"UTF-8" ?…

基于Googlenet深度学习网络的人员行为动作识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1. 原理 1.1 深度学习与卷积神经网络&#xff08;CNN&#xff09; 1.2 GoogLeNet 2. 实现过程 2.1 数据预处理 2.2 构建网络模型 2.3 数据输入与训练 2.4 模型评估与调优 3. 应用领域…

STM32 LL库开发

一、STM32开发方式 标准库开发&#xff1a;Standard Peripheral Libraries&#xff0c;STDHAL库开发&#xff1a;Hardware Abstraction Layer&#xff0c;硬件抽象层LL库开发&#xff1a;Low-layer&#xff0c;底层库 二、HAL库与LL库开发对比 ST在推行HAL库的时候&#xff0c;…

C# Linq源码分析之Take方法

概要 Take方法作为IEnumerable的扩展方法&#xff0c;具体对应两个重载方法。本文主要分析第一个接收整数参数的重载方法。 源码解析 Take方法的基本定义 public static System.Collections.Generic.IEnumerable Take (this System.Collections.Generic.IEnumerable source…

最优化方法Python计算:解一元方程

我们知道&#xff0c;若 f ( x ) f(x) f(x)在 R \text{ℝ} R上连续&#xff0c;则 f ( x ) f(x) f(x)有原函数 F ( x ) , x ∈ R F(x),x\in\text{ℝ} F(x),x∈R。因此&#xff0c;解方程 f ( x ) 0 f(x)0 f(x)0&#xff0c;等价于计算 F ( x ) F(x) F(x)的局部最小&#xff08…

【uniapp】uniapp使用微信开发者工具制作骨架屏:

文章目录 一、效果&#xff1a;二、过程&#xff1a; 一、效果&#xff1a; 二、过程&#xff1a; 【1】微信开发者工具打开项目&#xff0c;生成骨架屏&#xff0c;将wxml改造为vue页面组件&#xff0c;并放入样式 【2】页面使用骨架屏组件 【3】改造骨架屏&#xff08;去除…

Hi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs

目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfsHi3798MV200 恩兔N2 NS-1 (四): 制作 Debian rootfs 关于 Debian rootfs Debian 没有像 Ubuntu 提供 Ubuntu-…

以mod_jk方式整合apache与tomcat(动静分离)

前言&#xff1a; 为什么要整合apache和tomcat apache对静态页面的处理能力强&#xff0c;而tomcat对静态页面的处理不如apache&#xff0c;整合后有以下好处 提升对静态文件的处理性能 利用 Web 服务器来做负载均衡以及容错 更完善地去升级应用程序 jk整合方式介绍&#…

项目知识点记录

1.使用druid连接池 使用properties配置文件&#xff1a; driverClassName com.mysql.cj.jdbc.Driver url jdbc:mysql://localhost:3306/book?useSSLtrue&setUnicodetrue&charsetEncodingUTF-8&serverTimezoneGMT%2B8 username root password 123456 #初始化链接数…

【验证码逆向专栏】最新某度旋转验证码 v2 逆向分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…

更新spring boot jar包中的BOOT-INF/lib目录下的jar包

更新spring-boot jar包中的BOOT-INF/lib目录下的jar包 场景 需要更新lib目录下某个jar包的配置文件 失败的解决方法 用解压软件依次打开spring-boot jar包&#xff08;设为a.jar&#xff09;、BOOT-INF/lib目录下的jar包&#xff08;设为b.jar&#xff09;&#xff0c;然后修改…

2021年09月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数字判断 输入一个字符,如何输入的字符是数字,输出yes,否则输出no 输入 一个字符 输出 如何输入的字符是数字,输出yes,否则输出no 样例1输入 样例1输入 5 样例1输出 yes 样例2输入 A 样例2输出 no 下面是一个使用C语言编写的数字判断程序的示例代码,根据输入的字符…