二、k8s快速入门之docker+Kubernetes平台搭建
centos | master | 192.168.100.10 |
---|---|---|
centos | node1 | 192.168.100.20 |
centos | node2 | 192.168.100.30 |
除特殊说明命令都需要在三台都执行
⭐️ k8s 的指令:
- kubeadm:用来初始化集群的指令
- kubelet: 在集群中的每个节点上用来启动Pod和容器
- kubectl: 用来与集群通信的命令行工具
⭐️ kubeadm 不能帮你安装或者管理 kubelet 或 kubectl, 所以你需要确保它们与通过 kubeadm 安装的控制平面的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 然而,控制平面与 kubelet 之间可以存在一个次要版本的偏差,但 kubelet 的版本不可以超过 API 服务器的版本。 例如,1.7.0 版本的 kubelet 可以完全兼容 1.8.0 版本的 API 服务器,反之则不可以
初始化设置–三台
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 ####想要永久关闭请自己设置
swapoff -a ##想要永久关闭请自己设置
free
iptables -F
iptables -X
iptables -Z
修改名字
hostname set-hostname master
hostname set-hostname node1
hostname set-hostname node2
编辑hosts文件
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.10 master
192.168.100.20 node1
192.168.100.30 node2
把源换为阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
下载需要的组件
yum install -y conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
有些组件非必须
调整内核参数
vim /etc/sysctl.d/kubernetes.conf
##必须 开启ipv4桥接
net.bridge.bridge-nf-call-iptables=1
##必须 开启ipv6桥接
net.bridge.bridge-nf-call-ip6tables=1
##开启TCP连接中TIME-WAIT sockets的快速回收
net.ipv4.tcp_tw_recycle=0
#禁止使用swap空间,只有当系统00M时才允许使用它
vm.swappiness=0
#不检查物理内存是否够用
vm.overcommit_memory=1 #开启00M
vm.panic_on_oom=0
##表示同一用户同时最大可以创建的 inotify(通知) 实例 (每个实例可以有很多 watch(值班))
fs.inotify.max_user_instances=8192
## 表示同一用户同时可以添加的watch数目(watch一般是针对目录,决定了同时同一用户可以监控的目录数量)
##默认值 8192 在容器场景下偏小,在某些情况下可能会导致 inotify watch 数量耗尽,
##使得创建 Pod 不成功或者 kubelet 无法启动成功,
fs.inotify.max_user_watches=1048576
##max-file 表示系统级别的能够打开的文件句柄的数量, 一般如果遇到文件句柄达到上限时,
##会碰到 Too many open files 或者 Socket/File: Can’t open so many files 等错误
fs.file-max=52706963
##单个进程可分配的最大文件数
fs.nr_open=52706963
##禁用ipv6
net.ipv6.conf.all.disable_ipv6=1
##设置最大查看限制
net.netfilter.nf_conntrack_max=2310720## 载入ip_conntrack模块
[root@master ~]# modprobe ip_conntrack
## 载入桥接模式防火墙
[root@master ~]# modprobe br_netfilter
###这里可以直接载入/etc/sysconfig/modules 中
cat > /etc/sysconfig/modules/ipvs.modules <#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- br_netfiltermodprobe -- ip_conntrack
EOF[root@master ~]# sysctl -p /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_recycle = 0
vm.swappiness = 0
vm.overcommit_memory = 1
vm.panic_on_oom = 0
fs.inotify.max_user_instances = 8192
fs.inotify.max_user_watches = 1048576
fs.file-max = 52706963
fs.nr_open = 52706963
net.ipv6.conf.all.disable_ipv6 = 1
net.netfilter.nf_conntrack_max = 23107120
配置时间同步
⭐️ centos7.5
自带了chrony
无需下载
1️⃣ master
操作
[root@master ~]# vim /etc/chrony.conf
server master iburst ##其余的全部删掉加上这条
allow 192.168.100.0/24
local stratum 10
systemctl restart chronyd;systemctl enable chronyd
2️⃣ node1
和node2
vim /etc/chrony.conf
server master iburst ##其余的全部删掉加上这条
systemctl restart chronyd;systemctl enable chronyd
3️⃣ 查看时间同步
chronyc sources
⭐️升级内核版本–三台
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
grub2-set-default 'CentOS Linux (4.4.189-1.e17.elrepo.x86_64) 7 (Core)'
reboot
安装Docker
⭐️ 由于LVS以及加入到linux内核,所以开启IPVS的前提需要加载内核模块
1️⃣在三个节点都执行,初始化操作
cat > /etc/sysconfig/modules/ipvs.modules <#!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shEOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
2️⃣ 安装docker
⭐️kuberntesv1.15.1 支持18.09版本的docker
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
# 将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
# Loading mirror speeds from cached hostfile
# Loaded plugins: branch, fastestmirror, langpacks
# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable
# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable
# Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]
添加daemon.json
文件
mkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver-systemd"], ##默认的cgroup组为systemd 默认情况下有两个cgroupFS一个式systemd
"log-driver": "json-file", ##改存储的日志的存储格式
"log-opts": {
"max-size": "100m"
}
}
EOFsystemctl start docker;systemctl enable docker//或者sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"exec-opts": ["native.cgroupdriver-systemd"],"registry-mirrors": ["https://89fk096n.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Kubeadm安装配置
1️⃣ 配置好yum
源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install --nogpgcheck -y kubelet-1.15.1 kubeadm-1.15.1 kubectl-1.15.1
systemctl start kubelet
systemctl enable kubelet
2️⃣ 使用工具把kubaedm工具压缩包上传到master节点(这个如果是网络不好拉去镜像慢,可以直接用这个办法,如果没有这个包可以看后面的网络拉取)
[root@master ~]# ls
kubeadm-basic.images.tar.gz
##解压
tar zxvf kubeadm-basic.images.tar.gz
3️⃣ 然后将这些镜像导入docker,这里我直接写了给脚本导入–master
[root@master ~]# cat docker.sh #!/bin/bash
ls /root/kubeadm-basic.images >> /root/images.txt
cd /root/kubeadm-basic.images
for i in $(cat /root/images.txt)
dodocker load < $i
done
[root@master ~]# chmod +x docker.sh
4️⃣执行脚本
[root@master ~]# bash docker.sh
fe9a8b4f1dcc: Loading layer 43.87MB/43.87MB
d1e1f61ac9f3: Loading layer 164.5MB/164.5MB
Loaded image: k8s.gcr.io/kube-apiserver:v1.15.1
fb61a074724d: Loading layer 479.7kB/479.7kB
c6a5fc8a3f01: Loading layer 40.05MB/40.05MB
Loaded image: k8s.gcr.io/coredns:1.3.1
8a788232037e: Loading layer 1.37MB/1.37MB
30796113fb51: Loading layer 232MB/232MB
6fbfb277289f: Loading layer 24.98MB/24.98MB
Loaded image: k8s.gcr.io/etcd:3.3.10
aa3154aa4a56: Loading layer 116.4MB/116.4MB
Loaded image: k8s.gcr.io/kube-controller-manager:v1.15.1
e17133b79956: Loading layer 744.4kB/744.4kB
Loaded image: k8s.gcr.io/pause:3.1
15c9248be8a9: Loading layer 3.403MB/3.403MB
00bb677df982: Loading layer 36.99MB/36.99MB
Loaded image: k8s.gcr.io/kube-proxy:v1.15.1
e8d95f5a4f50: Loading layer 38.79MB/38.79MB
Loaded image: k8s.gcr.io/kube-scheduler:v1.15.1
Loaded image: k8s.gcr.io/kube-apiserver:v1.15.1
Loaded image: k8s.gcr.io/coredns:1.3.1
Loaded image: k8s.gcr.io/etcd:3.3.10
Loaded image: k8s.gcr.io/kube-controller-manager:v1.15.1
Loaded image: k8s.gcr.io/pause:3.1
Loaded image: k8s.gcr.io/kube-proxy:v1.15.1
Loaded image: k8s.gcr.io/kube-scheduler:v1.15.1
4️⃣ 查看
[root@master ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-apiserver v1.15.1 68c3eb07bfc3 2 years ago 207MB
k8s.gcr.io/kube-controller-manager v1.15.1 d75082f1d121 2 years ago 159MB
k8s.gcr.io/kube-proxy v1.15.1 89a062da739d 2 years ago 82.4MB
k8s.gcr.io/kube-scheduler v1.15.1 b0b3c4c404da 2 years ago 81.1MB
k8s.gcr.io/coredns 1.3.1 eb516548c180 2 years ago 40.3MB
k8s.gcr.io/etcd 3.3.10 2c4adeb21b4f 2 years ago 258MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 3 years ago 742kB
5️⃣在把脚本和解压后的镜像目录传输到node1,2节点在执行同样操作,我这里就不演示了
6️⃣在master
创建kubeadm
设置yaml
模板
kubeadm config print init-defaults > kubeadm-config.yaml
7️⃣ 修改它的配置参数
[root@master ~]# cat kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.100.10 ##这里修改为本机ipbindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: mastertaints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.15.1 ##注意
networking:dnsDomain: cluster.localpodSubnet: "10.244.0.0/16" ##这里添加ip地址,因为fannl的网络插件和这个一样serviceSubnet: 10.96.0.0/12
scheduler: {}
##添加以下,把默认的调度改为ipvs
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates :SupportIPVSProxyMode: true
mode: ipvs
8️⃣ 初始化kubeadmn
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
9️⃣ 下面是初始化介绍
**--config :指定文件**--experimental-upload-certs: 自动颁发证书 1.13.8才有这个命令初始化操作主要经历了下面 15 个步骤,每个阶段均输出均使用[步骤名称]作为开头: [init]:指定版本进行初始化操作。[preflight]:初始化前的检查和下载所需要的 Docker 镜像文。。 [kubelet-start]:生成 Kubelet 的配置文件/var/lib/kubelet/config.yaml,没有这个文件 Kubelet 无法启动,所以初始化之前的 Kubelet 实际上启动失败。 [certificates]:生成 Kubernetes 使用的证书,存放在/etc/kubernetes/pki 目录中。 [kubeconfig]:生成 KubeConfig 文件,存放在/etc/kubernetes 目录中,组件之间通信需 要使用对应文件。 [control-plane]:使用/etc/kubernetes/manifest 目录下的 YAML 文件,安装 Master 组件。 [etcd]:使用/etc/kubernetes/manifest/etcd.yaml 安装 Etcd 服务。 [wait-control-plane]:等待 control-plan 部署的 Master 组件启动。 [apiclient]:检查 Master 组件服务状态。 [uploadconfig]:更新配置。 [kubelet]:使用 configMap 配置 Kubelet。[patchnode]:更新 CNI 信息到 Node 上,通过注释的方式记录。[mark-control-plane]:为当前节点打标签,打了角色 Master,和不可调度标签,这样默 认就不会使用 Master 节点来运行 Pod。[bootstrap-token]:生成的 Token 需要记录下来,后面使用 kubeadm join 命令往集群中 添加节点时会用到。[addons]:安装附加组件 CoreDNS 和 kube-proxy。
网络拉取
1️⃣ 配置kubeadm
配置文件
[root@master ~]# kubeadm config print init-defaults > kubeadm.yaml
[root@master ~]# vim kubeadm.yaml
[root@master ~]# cat kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.200.10bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockname: mastertaints:- effect: NoSchedulekey: node-role.kubernetes.io/master
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:type: CoreDNS
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers ##修改拉取镜像仓库
kind: ClusterConfiguration
##版本号需要修改为15
kubernetesVersion: v1.15.0
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: "10.244.0.0/16"
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
featureGates :SupportIPVSProxyMode: true
mode: ipvs
2️⃣ 初始化kubeadmn
kubeadm init --config kubeadm.yaml
3️⃣ 假如初始化失败就用下面方法(加入节点失败也通用)
kubeadm reset
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
后序操作
1️⃣ 按照提示复制创建kubelet和api的缓存文件(执行完成kubeadm init
操作后面会有这个直接复制即可)
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config
2️⃣ 查看节点, 如果是NotReady
因为网络没有创建
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master NotReady master 3m6s v1.15.1
3️⃣ 布置flannel
[root@master ~]# mkdir flannel
[root@master ~]# cd flannel
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
podsecuritypolicy.policy/psp.flannel.unprivileged created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created
4️⃣ 查看flannel组件
[root@master ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-5c98db65d4-kvkbl 0/1 ContainerCreating 0 46m
coredns-5c98db65d4-qjhm2 0/1 ContainerCreating 0 46m
etcd-master 1/1 Running 0 45m
kube-apiserver-master 1/1 Running 0 45m
kube-controller-manager-master 1/1 Running 0 45m
kube-flannel-ds-bfw2x 1/1 Running 0 37m
kube-proxy-tvbgm 1/1 Running 0 46m
kube-scheduler-master 1/1 Running
5️⃣ 看网卡
ifconfig
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1450inet 10.244.0.0 netmask 255.255.255.255 broadcast 10.244.0.0ether 02:eb:0e:38:30:4e 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
查看移除master节点污点
⭐️ 移除后就可以在master
节点启动pod
和存储镜像了
1️⃣ 查看
kubectl describe node master
Taints: node-role.kubernetes.io/master:NoSchedule ##NoSchedule就代表不可调度
NoSchedule :表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上 PreferNoSchedule :表示 k8s 将尽量避免将 Pod 调度到具有该污点的 Node 上 NoExecute :表示 k8s 将不会将 Pod 调度到具有该污点的 Node 上,同时会将 Node 上已经存在的 Pod 驱逐出去
2️⃣ 修改
[root@master ~]# kubectl edit node master
spec:podCIDR: 10.244.0.0/24taints:- effect: PreferNoSchedule ##原来是NoSchedulekey: node-role.kubernetes.io/master
3️⃣ 再次查看
kubectl describe node master
Taints: node-role.kubernetes.io/master:PreferNoSchedule
子节点加入
1️⃣ 查看加入命令,在各个node
中使用
[root@master ~]# kubeadm token create --print-join-command
kubeadm join 192.168.100.10:6443 --token 9nx4cb.2zjgaeo5ju98fnq3 --discovery-token-ca-cert-hash sha256:4d4eb15f1f4c36f1283b0a319f74b8e79110d263830d41d82c82b3c2dbe326b2
2️⃣ 查看
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready master 65m v1.15.1
node1 NotReady <none> 13s v1.15.1
node2 NotReady <none> 5s v1.15.1
3️⃣ 移除node
kubectl delete node [node名]
4️⃣ 查看加入节点命令
kubeadm token create --print-join-command
相关文章:
二、k8s快速入门之docker+Kubernetes平台搭建
centosmaster192.168.100.10centosnode1192.168.100.20centosnode2192.168.100.30 除特殊说明命令都需要在三台都执行 ⭐️ k8s 的指令: kubeadm:用来初始化集群的指令kubelet: 在集群中的每个节点上用来启动Pod和容器kubectl: 用来与集群通信的命令行…...
k8s的发展历史
Kubernetes(通常缩写为 K8s)是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它的发展历史可以追溯到多个关键的里程碑: 1. 起源(2013 年) Kubernetes 的起源可以追溯到 Google 的内部项…...
Pytorch lightning多机多卡训练通讯问题(NCCL error)排查
一、问题 单机多卡可以正常训练模型,多机多卡数据加载完成后卡住不动,排查两台机器可以ping通,表明网络没有问题,查看bug信息是NCCL通信问题。报错信息大致如下: torch.distributed.DistBackendError: NCCL error in: …/torch/c…...
React如何实现Vue的keepAlive功能
前言 在React中,默认情况下组件在被卸载后会销毁状态,这与Vue的keep-alive功能不同。在Vue中,keep-alive组件可以缓存组件状态,在路由切换时重新挂载。实现这一功能在React中并不简单,但我们可以借助一个第三方库——…...
在 Ubuntu 22.04 LTS 上安装 NVM (Node Version Manager) 管理和切换不同版本的 Node.js npm
安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash# nvm --version 0.40.1安装 Node.js 的不同版本 列出所有可用的 Node.js 远程版本 nvm ls-remotenvm install v18.20.4# node --version v18.20.4# nvm current v18.20.4npm 是 …...
如何搭建题库管理小序❓
土著刷题小🍊序不仅能够作为组织考试的利器,它同样可以帮助教育培训机构构建一个强大且高效的题库管理系统。 下面跟随我们的指导,一起来看看如何利用土著刷题小🍊序轻松快捷地建立起自己的题库,并享受其所带来的诸多好…...
Spring Boot框架下校园社团信息管理的创新实践
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
vscode clangd for cuda 插件配置
这里写目录标题 1. 下载插件clangd,并且安装server到host2. 配置3. 安装调试插件 1. 下载插件clangd,并且安装server到host 步骤 extension下载 altshiftp, 下服务,如果下不下来请考虑用🪜 下载好后check一下,检查是否正常 正常的标志 注意…...
软件测试学习笔记丨SeleniumPO模式
本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22525 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…...
研发效能DevOps: Vite 使用 Vue Router
目录 一、实验 1.环境 2.初始化前端项目 3.安装vue-router 4.Vite 使用 Vue Router 二、问题 1.运行出现空页面 2.Vue Router如何禁止页面回退 一、实验 1.环境 (1)主机 表1 主机 系统 软件版本备注Windows11VS Code1.94.2Node.jsv18.20.4(LT…...
记第一次本地编译seatunnel源码
拉取代码 git clone https://github.com/apache/seatunnel.git 使用版本 我们生产环境用的是2.3.5版本,所以基于2.3.5-release分支代码进行编译。 maven package过程 遇到的第一个问题:‘com.sun.tools.javac.tree.JCTree com.sun.tools.javac.tree…...
《云主机配置全攻略》
《云主机配置全攻略》 一、云主机配置的重要性二、配置云主机的关键要素(一)CPU 的选择(二)内存的考量(三)硬盘的抉择(四)带宽的确定(五)机房线路的考虑&…...
RHCE nginx架构和安装
nginx架构和安装 nginx架构和安装1.1 nginx架构1.2 安装nginx1.1.1 本地安装1.1.2 官网安装1.1.3 源码安装 1.3 控制服务1.4 页面自定义 nginx架构和安装 nginx是多进程组织模式,而且是一个由 Master 主进程和 Worker 工作进程组成 1.1 nginx架构 1.2 安装nginx …...
Jmeter自动化实战
一、前言 由于系统业务流程很复杂,在不同的阶段需要不同的数据,且数据无法重复使用,每次造新的数据特别繁琐,故想着能不能使用jmeter一键造数据 二、创建录制模板 可参考:jmeter录制接口 首先创建一个录制模板 因为会有各种请求头,cookies,签名,认证信息等原因,导致手动复制…...
构建高效的Java SOCKS5代理:从零开始的网络转发实现
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
spring-boot(绑定配置文件及应用)
配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的; application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好; YAML&#x…...
Mac OS 搭建MySQL开发环境
Mac OS 搭建MySQL开发环境 文章目录 Mac OS 搭建MySQL开发环境一、安装Mysql:二、配置环境变量三、安装Navicat 本地环境: Mac OS Sequoia15.0.1(M3 Max) 目标状态: 下载安装Mysql,配置相关环境。 一、安装Mysql&…...
windows下安装python库wordCloud报错
换电脑安装wordcloud半天安装失败,记录一下遇到的坑,也给大家节省点时间。 方法1: 错误呢就是下面这个,说没c编译器,要不就去他给的地址上安装一下,我安装了一下好像没什么用,也没太敢勾选&am…...
Spring IOC 自动装配(注入)
注解⽅式注⼊ Bean 对于 bean 的注⼊,除了使⽤ xml 配置以外,可以使⽤注解配置。注解的配置,可以简化配置⽂件, 提⾼开发的速度,使程序看上去更简洁。对于注解的解释,Spring对于注解有专⻔的解释器&#…...
Go使用SIMD指令——以string转为整数为例
本文Go使用SIMD指令采用如下方式: C编写对应的程序clang编译成汇编c2goasm将上述生成的汇编转为go的汇编 准备工具 clang。直接使用apt-get install clang安装即可c2goasm。 go get -u github.com/minio/c2goasm来进行安装asm2plan9s。 go get -u github.com/min…...
分享资源合集
为了方便临时使用到的一些软件,提供百度网盘下载。 通过百度网盘分享的文件:WinHex 21.2 SR-2_x86_x64.exe 链接:https://pan.baidu.com/s/19RAnHl_VcKUcIKADU9z9Gw?pwd6666 提取码:6666 通过百度网盘分享的文件:Zi…...
C#/WinForm 鼠标穿透自定义区域截图(后续实现录屏)
效果 窗体截图录屏 git地址:https://gitee.com/feng-cai/screenshot-recording...
基于SpringBoot的“社区维修平台”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“社区维修平台”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 管理员登录页面 住户管理页面 社区公关管理页面 维…...
图书管理系统汇报
【1A536】图书管理系统汇报 项目介绍1.用户登录注册功能1. 1用户角色管理2.图书管理功能2.1 添加图书2.2 编辑图书2.3 删除图书 3.图书搜索和筛选3.1 图书搜索3.2 图书筛选 4.图书借阅、图书归还4.1 图书借阅4.2 图书归还 5.用户信息管理5.1上传头像5.2修改头像5.3 修改密码 项…...
【发版通知】FormMaking 表单设计器新版发布,赋能企业实现低代码开发!
FormMaking 介绍 FormMaking 是基于 Vue 的可视化表单设计器,赋能企业实现低代码开发模式;帮助开发者从传统枯燥的表单代码中解放出来,更多关注业务,快速提高效率,节省研发成本。目前已经在OA系统、考试系统、报表系统…...
计算机科学与技术-毕业设计选题推荐
基于特定技术的系统设计与实现 基于深度学习的图像识别系统设计与实现基于区块链的数据安全保护技术研究与实现基于云计算的大数据处理平台设计与开发基于物联网的智能家居系统设计与实现基于机器学习的推荐算法研究与实现 面向实际应用的需求分析与开发 智慧医疗信息系统设…...
《C++音频频谱分析:开启声音世界的神秘之门》
在数字音频的广阔领域中,频谱分析是一项强大而引人入胜的技术。它能够将无形的声音转化为可视化的数据,让我们深入了解音频的特征和结构。那么,在 C这个强大的编程语言中,我们又该如何实现对音频的频谱分析呢? 音频频…...
GitHub 上传项目保姆级教程
构建项目仓库 登录 GitHub 并进入主页。点击右上角的 New 按钮,进入创建新仓库页面。输入仓库名称和描述(可选),选择是否公开(Public)或私有(Private)。可以选择是否初始化仓库&…...
联想笔记本电脑睡眠后打开黑屏解决方法
下载联想机器睡眠无法唤醒修复工具 下载地址:https://tools.lenovo.com.cn/exeTools/detail/id/233/rid/6182522.html 使用完后重启电脑,问题解决。...
计算机网络:网络层 —— 路由选择与静态路由配置
文章目录 路由选择路由选择的基本概念路由选择算法路由选择策略 路由器的工作原理路由表静态路由配置默认路由特定主机路由 路由选择 路由选择(Routing)是网络层的一个关键功能,负责在源和目的地之间选择最佳路径,以确保数据包高…...
电子商务网站建设 第二版/免费企业网站管理系统
普通for循环写着麻烦,但是是性能最好 foreach循环,简洁,但是性能不及for 所以封装一下for循环,既简洁又高性能 自封装版forEach function enhanceFor(obj, func) {for (let i obj.length - 1; i > -1; i--) {func(obj[i], i);}}添加到原型连上 Array.prototype.forfuncti…...
网页小游戏4933/兰州网络推广关键词优化
JSTL JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规 范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的…...
网站建设首页该放什么/一个好的产品怎么推广
用matplotlib制作饼图 话不多说,直接上代码! import matplotlib.pyplot as plt labels 巴西,欧洲,美国,亚洲 plt.rcParams[font.sans-serif][SimHei] #用于正常显示中文字体的函数 sizes [15,30,45,10] explode (0,0,0.1,0) colors [b,y,r,g] plt…...
简述制作网站的流程/重庆百度seo
概述Swoole 启动一个服务,开启了哪些进程和线程?为了解决这个问题,咱们启动一个最简单的服务,一起看看究竟启动了哪些进程和线程?然后结合官网运行流程图,对每个进程和线程进行归类。服务启动后打印出当前 …...
网站建设电话营销/广告留电话号的网站
⭐️这篇博客,我要给大家分享双链表的知识,上一篇博客,我给大家分享了有关单链表的知识,单链表相比双链表而言结构比较简单,但事实上,双链表的实现比单链表要方便很多,下面我就来给大家聊一聊双…...
辽源网站建设公司/seo黑帽培训骗局
点击上方“程序员小灰”,选择“置顶公众号”有趣有内涵的文章第一时间送达!本文转载自公众号 Hollis一直以来程序员都给大家以高智商低情商,不懂得浪漫不会哄女生开心的形象。但是,我觉得程序员都是浪漫的。对于这种错误观念&…...