当前位置: 首页 > news >正文

【云原生】centos7搭建安装k8s集群 v1.25版本详细教程实战

文章目录

  • 前言
  • 一. 实验环境
  • 二. k8s 的介绍
  • 三 . k8s的安装
    • 3.1 搭建实验环境
      • 3.1.1 硬件层面的要求
      • 3.1.2 软件层面环境配置
    • 3.2 docker的安装
      • 3.2.1 搭建docker
      • 3.2.2 部署 cri-dockerd
    • 3.3 部署k8s
      • 3.3.1 配置添加阿里云的yum源
      • 3.3.2 安装kubeadm kubelet kubectl
      • 3.3.3 k8s-master节点初始化
      • 3.3.4 执行成功后,会有加入节点的代码,然后复制到其他节点进行加入。
  • 四. 在已经安全完的k8s上进行测试
    • 4.1 安装配置网络
    • 4.2 安装配置nginx测试
  • 总结

前言

大家好,又见面了,我是沐风晓月,本文是专栏【云原生实战】专栏的第5篇文章,主要讲解如何从零开始安装kubernetes。
专栏地址:【云原生实战】 , 此专栏是沐风晓月对云原生学习的汇总,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。

原本我是写一篇文章叫 prometheus监控kubernetes实战,结果发现kubernetes就写了半天近一万字,所以把从零开始搭建kubernetes实战单独拿出来作为一篇文章吧。

如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

在这里插入图片描述

一. 实验环境

本次的实验环境见下表:

操作系统服务器IPhostname
centos7.6192.168.1.41k8s-master
centos7.6192.168.1.42k8s-node42

如何查看相应的参数:

  • 查看操作系统:
[root@mufenggrow ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
  • 查看hostname
## 修改hostname
[root@mufenggrow ~]# hostnamectl set-hostname mufenggrow41
[root@mufenggrow ~]# bash
# 查看hostname
[root@mufenggrow41 ~]# hostname
mufenggrow41
  • 查看ip
[root@mufenggrow41 ~]# ifconfig |grep inet |awk 'NR==1{print $2}'
192.168.1.41

二. k8s 的介绍

Kubernetes 也称为 K8s,是Google开发的用于自动部署、扩缩和管理容器化应用程序的开源容器编排器技术。
k8s官网地址:https://kubernetes.io

在大流量,高并发的场景,如何实现应用的快速部署。 比如批量启动20台nginx,又如何在流量结束之后,关闭这些nginx服务。

一个容器宕机了,如何快速发现并立即启动一台新的容器去填补, 这些容器的管理问题,就是容器编排。

能做容器编排的工具有好几个,但k8s肯定是占主导地位的。

搭建k8s的方式,我们再这里选择了kubeadm的方式来部署。kubeadm 是官方社区推出的一个用于快速部署kubernetes 集群的工具,这个工具能通过两条指令完成一个kubernetes 集群的部署:

  • 创建一个Master 节点kubeadm init
  • 将Node 节点加入到当前集群中$ kubeadm join <Master 节点的IP 和端口>

三 . k8s的安装

3.1 搭建实验环境

搭建实验环境,包含软件层面和硬件层面:

3.1.1 硬件层面的要求

  • 两台centos7的操作系统
  • k8s-master cpu核心数为2
  • 两台主机可以ping通且能ping通外网
  • 硬盘设置为30G以上

在这里插入图片描述
查看cpu的核心数:

[root@mufenggrow ~]# lscpu |grep "CPU(s)"
CPU(s):                2
On-line CPU(s) list:   0,1

也可以用:

[root@mufenggrow ~]# cat /proc/cpuinfo |grep "cpu cores"
cpu cores	: 2
cpu cores	: 2

3.1.2 软件层面环境配置

这里需要主要的是,用几台服务器操作,我们就需要设置几台服务器的环境:

1) 设置主机名见名知意

让192.168.1.41为k8s-master,设置主机名

[root@mufenggrow ~]# hostnamectl set-hostname k8s-master
[root@mufenggrow ~]# bash
[root@k8s-master ~]# hostname
k8s-master

192.168.1.42 为k8s-node 设置主机名

[root@mufeng ~]# hostnamectl set-hostname k8s-node42
[root@mufeng ~]# bash
[root@k8s-node42 ~]# hostname
k8s-node42

2) 设置/etc/hosts 一对一的映射关系

[root@k8s-master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@k8s-master ~]# cat >>/etc/hosts<< EOF
192.168.1.41 k8s-master192.168.1.42 k8s-node42
EOF
[root@k8s-master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.41 k8s-master
192.168.1.42 k8s-node42

3) 设置时间同步
我这里只截取了一台服务器执行的代码,因为两台要同步做,所以另一台执行的是一样的,需要两台同步执行一样的操作:

[root@k8s-master ~]# systemctl start chronyd
[root@k8s-master ~]# systemctl enable chronyd
[root@k8s-master ~]# date
20230215日 星期三 10:46:09 CST
[root@k8s-master ~]# 

4) 关闭防火墙和selinux

[root@k8s-master ~]# systemctl stop firewalld
[root@k8s-master ~]# setenforce 0

这里要注意: setenforce 0 只是临时关闭,如果要永久关闭需要到配置文件中设置

配置文件路径: /etc/selinux/config

  1. 禁用swap空间

kubernetes要求每个节点都要禁用swap设备

临时关闭:

[root@k8s-master ~]# swapoff -a

永久关闭:

vim /etc/fstab
注释掉 /dev/mapper/centos-swap swap
#/dev/mapper/centos-swap swap

永久关闭需要重启系统。

6) 修改内核参数

# 修改linux的内核采纳数,添加网桥过滤和地址转发功能
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
重新加载配置
# sysctl  --system

3.2 docker的安装

因为k8s最终的管理是容器,所以我们需要再这里先安装docker,每台机器都需要安装。

3.2.1 搭建docker

1) 设置 repo

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

若没有yum-config-manager 需要先安装

[root@k8s-node42 ~]# yum install yum-utils

2) 设置国内镜像并重启daemon
在这里插入图片描述

# mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://ywrd8tun.mirror.aliyuncs.com"]
}
EOF
  1. 下载docker的repo包,并安装
[root@k8s-node42 ~]# yum install wget
[root@k8s-master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

3) 开始安装:

[root@k8s-node42 ~]# yum install -y docker-ce
[root@k8s-master ~]# systemctl start docker
[root@k8s-master ~]# systemctl enable docker
[root@k8s-master ~]# docker --version
Docker version 23.0.1, build a5ee5b1

3.2.2 部署 cri-dockerd

从kubernetes 1.24开始,dockershim已经从kubelet中移除,但因为历史问题docker不支持kubernetes主推的CRI(容器运行时接口)标准,所以docker不能再作为kubernetes的容器运行时了,即从kubernetesv1.24开始不再使用docker了。

但是如果想继续使用docker的话,可以在kubelet和docker之间加上一个中间层cri-docker。cri-docker是一个支持CRI标准的shim(垫片)。一头通过CRI跟kubelet交互,另一头跟docker api交互,从而间接的实现了kubernetes以docker作为容器运行时。

技术的发展得益于人,受限于人。

开源地址 https://github.com/Mirantis/cri-dockerd
下载地址 https://github.com/Mirantis/cri-dockerd/releases

在这里插入图片描述

下载并上传进行解压

#使用rz命令上传
# rz
[root@k8s-node42 ~]# ls
anaconda-ks.cfg  cri-dockerd-0.3.1.amd64.tgz
[root@k8s-node42 ~]# tar xf cri-dockerd-0.3.1.amd64.tgz 
[root@k8s-node42 ~]# cp cri-dockerd/cri-dockerd /usr/bin/
[root@k8s-node42 ~]# chmod +x /usr/bin/cri-dockerd 
[root@k8s-node42 ~]# 

配置启动文件,如下:

cat <<"EOF" > /usr/lib/systemd/system/cri-docker.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

⽣成 socket ⽂件,执行如下命令

cat <<"EOF" > /usr/lib/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF

启动 cri-docker 并设置开机⾃动启动

[root@k8s-node42 ~]# systemctl daemon-reload
[root@k8s-node42 ~]# systemctl enable cri-docker --now
Created symlink from /etc/systemd/system/multi-user.target.wants/cri-docker.service to /usr/lib/systemd/system/cri-docker.service.
[root@k8s-node42 ~]# systemctl is-active cri-docker
active
[root@k8s-node42 ~]# 

3.3 部署k8s

3.3.1 配置添加阿里云的yum源

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
EOF

3.3.2 安装kubeadm kubelet kubectl

yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0

查看版本并设置开机自启动

[root@k8s-master ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.0", GitCommit:"a866cbe2e5bbaa01cfd5e969aa3e033f3282a8a2", GitTreeState:"clean", BuildDate:"2022-08-23T17:43:25Z", GoVersion:"go1.19", Compiler:"gc", Platform:"linux/amd64"}
[root@k8s-master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[root@k8s-master ~]# 

到目前位置,所有的操作都是在全部节点上操作的。接下来我们开始初始化k8s-master的节点,此操作只在k8s-master上执行:

3.3.3 k8s-master节点初始化

kubeadm 使用 eth0 的默认网络接口(通常是内网IP)做为 Master 节点的 advertise address .所以这里的IP地址要设置为你自己的IP地址:

kubeadm init \
--apiserver-advertise-address=192.168.1.41 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.0 \
--service-cidr=10.10.0.0/12 \
--pod-network-cidr=172.17.0.0/16 \
--cri-socket /var/run/cri-dockerd.sock \
--ignore-preflight-errors=all

注释:

--apiserver-advertise-address=192.168.1.41   
这个参数就是master主机的IP地址--image-repository=registry.aliyuncs.com/google_containers 
这个是镜像地址,由于国外地址无法访问,故使用的阿里云仓库地址:registry.aliyuncs.com/google_containers--kubernetes-version=v1.25.0   
这个参数是下载的k8s软件版本号--service-cidr=10.10.0.0/12   
无需更改--pod-network-cidr=172.17.0.0/16 
Specify range of IP addresses for the pod network. If set, the control plane will automatically allocate CIDRs for every node.
该参数指明了 Pod 网络的 CIDR,以用于 Node 相关配置

若执行中出现问题,想要重新执行,可以先运行:

[root@k8s-master ~]# kubeadm  reset -f

3.3.4 执行成功后,会有加入节点的代码,然后复制到其他节点进行加入。

按照下图提示,在k8s-master上创建必要的文件,然后在用最后的join把别的加点加入

在这里插入图片描述

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config

尤其注意最后一条,cri-socket ,这条容易漏掉。

kubeadm join 192.168.1.41:6443 --token 9rmt8j.2pqoh7drm68ns249 \--discovery-token-ca-cert-hash sha256:ff558174c47aba532fef2920f80e1f48976d4712a970eba1a7fac0428c8373ab--cri-socket /var/run/cri-dockerd.sock
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES           AGE    VERSION
k8s-master   NotReady   control-plane   5m5s   v1.25.0
k8s-node42   NotReady   <none>          75s    v1.25.0
[root@k8s-master ~]# 

接下来需要配置网络:

四. 在已经安全完的k8s上进行测试

4.1 安装配置网络

上传需要的网络包
在这里插入图片描述
在每个节点上都要上传
在这里插入图片描述

每个节点手动通过docker离线加载镜像:

37  docker load -i calico~cni~v3.24.3.tar.gz 38  docker load -i calico~kube~controllers~v3.24.3.tar.gz 39  docker load -i calico~node~v3.24.3.tar.gz 

在master安装 网络插件:

[root@k8s-master ~]# kubectl apply -f calico.yaml 
poddisruptionbudget.policy/calico-kube-controllers created
serviceaccount/calico-kube-controllers created

再次执行,这里显示的就是ready

在这里插入图片描述

4.2 安装配置nginx测试

创建nginx服务

[root@k8s-master ~]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created

暴露端口:

[root@k8s-master ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@k8s-master ~]# kubectl get pod,svc
NAME                        READY   STATUS    RESTARTS   AGE
pod/nginx-76d6c9b8c-hw6bz   1/1     Running   0          16sNAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.0.0.1       <none>        443/TCP        17m
service/nginx        NodePort    10.15.105.20   <none>        80:32587/TCP   7s

测试:

[root@k8s-master ~]# curl 127.0.0.1:32587
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>

总结

以上就是无坑版本最新的k8s实战的全部过程了,耗时4个小时,终于完成。看到这里的小伙伴给点个三连呀。

每日鸡汤: 人活到极致,一定要素与简

原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力!\textcolor{green}{点赞,你的认可是我创作的动力!}点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!\textcolor{green}{收藏,你的青睐是我努力的方向!}收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!\textcolor{green}{评论,你的意见是我进步的财富!}评论,你的意见是我进步的财富!

相关文章:

【云原生】centos7搭建安装k8s集群 v1.25版本详细教程实战

文章目录前言一. 实验环境二. k8s 的介绍三 . k8s的安装3.1 搭建实验环境3.1.1 硬件层面的要求3.1.2 软件层面环境配置3.2 docker的安装3.2.1 搭建docker3.2.2 部署 cri-dockerd3.3 部署k8s3.3.1 配置添加阿里云的yum源3.3.2 安装kubeadm kubelet kubectl3.3.3 k8s-master节点初…...

c语言指针

指针 指针是存放地址的变量&#xff0c;也可以说指针地址。 对于定义p&#xff08;这里的话&#xff0c;只是定义&#xff0c;说明p是指针&#xff09;&#xff0c;p作为一个指针去指向存放数据的位置&#xff0c;而p意思是取&#xff08;p指向的内存位置的数据&#xff09;&…...

5.33 综合案例2.0 -ESP32拍照上传阿里云OSS

综合案例2.0 - ESP32拍照上传阿里云OSS案例说明连线功能实现1.阿里云平台连接2.OSS对象存储服务3.ESP32-CAM开发环境4.代码ESP32-CAM开发板代码HaaS506开发板代码测试数据转图片方法案例说明 使用ESP32拍照,将照片数据上传阿里云OSS&#xff08;通过4G网络上传&#xff09;。 …...

java无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “…...

测试用例设计工作中的应用

1. 等价类划分 常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为假设干等价类,在每一个等价类中取一…...

leetcode 困难 —— 数字 1 的个数(简单逻辑题)

&#xff08;害&#xff0c;做题是真的慢&#xff0c;这面试给我这题我估计就傻了&#xff09; 题目&#xff1a; 给定一个整数 n&#xff0c;计算所有小于等于 n 的非负整数中数字 1 出现的个数。 题解&#xff1a; 首先看看整数范围 0 < n < 10^9 不能遍历&#xff0…...

关于JSON

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> </head> <body> <script> /* 1、JSON的英文全称&#xff1a;Java…...

Apifox-接口调用、自动化测试工具

Apifox简介 Apifox 的定位是Postman Swagger Mock JMeter&#xff0c;具有API文档管理、API调试、API Mock、API 自动化测试等功能。可以通过一种工具解决之前使用多种工具的数据同步问题。高效、及时、准确&#xff01; 安装 Apifox的安装非常方便&#xff0c;直接下载安…...

Vue一个项目兼容每个省份的个性化需求

开发环境及打包指令 后拼上省份区划"serve:henan": "yarn && vue-cli-service serve -o --encryptSM2 --zone41","serve:hunan": "yarn && vue-cli-service serve -o --encryptSM2 --zone43","serve:guizhou&quo…...

npm install报错 npm ERR! 的解决办法

以下是四种常见的npm ERR及解决方式错误一、npm ERR! A complete log of this run can be found in:npm ERR!C:\Users\nanyi\AppData\Roaming\npm-cache_logs\2021-09-17T08_58_23_413Z-debug.l查看错误日志&#xff0c;错误日志就在上面展示的C:\Users…这里如果发现错误日志里…...

echarts修改饼图,环形图的圆环宽度,大小

echarts修改环形图的圆环宽度&#xff0c;大小 环形图圆环的大小需要通过series-pie. radius属性来修改 radius 饼图的半径。 Array.<number|string>&#xff1a;数组的第一项是内半径&#xff0c;第二项是外半径。每一项遵从上述 number string 的描述。 把数组的第…...

小白系列Vite-Vue3-TypeScript:010-封装svg

上一篇我们介绍了ViteVue3TypeScript项目中mockjs的安装和配置i。本篇我们来介绍封装SVG图标组件。svg特征Preloading所有图标都是在项目运行时生成的&#xff0c;只需要操作一次dom即可。高性能内置缓存&#xff0c;仅在文件被修改时才会重新生成。安装插件vite-plugin-svg-ic…...

卷严重、难度高、激励少,如何适应空投市场新变化

自从空投交互从2020年开始之后&#xff0c;不少人都开始加入到空投交互的行列中&#xff0c;一些项目也因为“格局”的因素&#xff0c;在项目正式上线前都会给早期参与者空投代币&#xff0c;以此吸引大家的关注。但是在越来越多的人加入到撸空投行列之中后&#xff0c;现在整…...

基于Java与JSP的文件上传和下载

概念 当用户在前端页面点击文件上传后&#xff0c;用户上传的文件数据提交给服务器端&#xff0c;实现保存。 文件上传步骤 提交方式&#xff1a; 提供form表单&#xff0c;method必须是post。因为post请求无数据限制。 <form method"post"></form>…...

Gromacs中的g_mmpbsa计算带电底物与蛋白的结合能不准确

g_mmpbsa计算带电底物与蛋白的结合能总是不准确 TOC 在做的两个项目中&#xff0c;利用g_mmpbsa计算带电底物与蛋白的结合能结果非常不可靠&#xff0c;底物带两个硫酸根离子&#xff0c;g_mmpbsa在计算带电的底物与酶的结合能时总是不准确&#xff0c;因此后续若底物带电&…...

【mmrotate】旋转目标检测之训练DOTA数据集

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 mmrotate训练DOTA数据集记录 1. 正文 1.1 数据准备 数据介绍部分&#xff0c;参考DOTA数据介绍&#xff0c;官方提供了裁剪工具development kit。这里…...

图基本概念

图&#xff1a;顶点和边的集合。无向图&#xff1a;每条边都是无方向的有向图&#xff1a;每条边都是有方向的完全图&#xff1a;任意两个点都有一条边相连稀疏图&#xff1a;有很少边或弧的图稠密图&#xff1a;有较多边或弧的图网&#xff1a;边/弧带权的图邻接&#xff1a;有…...

机器学习基础

一、基本概念 1 学习的概念 1975年图灵奖获得者、1978年诺贝尔经济学奖获得者、著名学者赫伯特.西蒙 (Herbert Simon) 曾下过一个定义: 如果一个系统&#xff0c;能够通过执行某个过程&#xff0c;就此改进了它的性能&#xff0c;那么这个过程就是学习.由此可看出&#xff0c;…...

FreeRTOS-Tickless低功耗模式 | FreeRTOS十四

目录 说明&#xff1a; 一、低功耗模式简介 1.1、STM32低功耗模式 二、Tickless模式 2.1、Tickless模式如何功耗 2.2、Tickless模式设计思想 2.3、为了降低功耗&#xff0c;又不影响系统运行&#xff0c;怎么能做到呢&#xff1f; 三、Tickless模式修改配置 3.1、配置…...

实现了统一消息中心的微服务基础框架 JVS,快点赞收藏

一、开源项目简介基于JVS&#xff08;基于spring cloud封装&#xff09;的基础开源框架&#xff0c;实现了基于多对多租户能力的管理系统。二、基础框架实现功能支持数据管理支持分布式定时任务支持分布式日志采集支持系统监控支持动态配置中心支持模板消息支持链路跟踪支持邮件…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...