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

K8S1.23.5部署(此前1.17版本步骤囊括)及问题记录

应版本需求,升级容器版本为1.23.5

kubernetes组件

一个kubernetes集群主要由控制节点(master)与工作节点(node)组成,每个节点上需要安装不同的组件

master控制节点:负责整个集群的管理

  • ApiServer:资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册发现等机制。
  • Scheduler:负责集群资源调度按照预定的调度策略Pod调度到相应的node节点上。
  • Controller-Manager:负责维护集群的状态,比如程序部署安排故障检测自动扩展滚动更新等。
  • Etcd:负责存储集群中各种资源对象的信息
  • 流程:运维人员通过kuberctl命令行下发部署指令,apiserver接收指令调度shchedule去etcd数据库查看节点信息,然后etcd再反馈给schedule,schedule再将空闲node信息反馈给apiserver,apiserver再调用controllmanager,controllmanager去连接node节点内的组件kubelet,kubelet再次调用(pod控制器)去搭建pod内的容器。

node工作节点:集群的数据平面,负责为容器提供运行环境

kubelet:负责维护容器的生命周期,既通过控制docker创建更新销毁容器

Docker:负责节点上容器的各种操作

kubeProxy:在node节点对外接收客户端请求

kubernetes概念

Master:集群控制节点,每个集群需要至少一个master节点负责集群的管控

Node:集群工作节点,由master分配容器到这些node节点上,然后node节点上的docker负责容器的运行

Pod:kubernetes的最小控制单元

容器都是运行在pod中,一个pod中可以有1个或多个容器

Controller:控制器,通过它来实现对pod的管理。

比如启动pod、停止pod、伸缩pod的数量等等

Service:pod对外服务的统一入口,可以维护同一类的多个pod

客户去访问k8s内的服务,由node节点内的kube-proxy组件进行介绍,然后再下发信号给service,由service通过负载均衡分配道某个pod中的docker进行处理。

Label:标签,用于对pod进行分类,同一类pod会拥有相同的标签

NameSpac:命名空间,用来隔离pod的运行环境

kubernetes集群部署方式

kubernetes有很多种部署方式,目前主流的部署方式有kubeadm、minikube、二进制包

  • kubeadm特点:一个用于快速搭建kubernetes集群的工具
  • minikube特点:一个用于快速搭建单节点的kubernetes工具
  • 二进制包:从官网下载每个组件的二进制包,依次去安装,安装麻烦
主机设置
mster192.168.75.129
node1192.168.75.130
node2192.168.75.131

kubernetes集群环境准备(三台均需要配置)

1.关闭防火墙并设置防火墙随机不自启

(kubernetes和docker在运行中会产生大量防火墙规则)

[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld

 2.关闭SELinux系统内核安全机制

#临时关闭

[root@master ~]# setenforce 0

#永久关闭

[root@master ~]# vi /etc/selinux/configSELINUX=disabled

3.配置本地yum源

清空yum路径下系统自带的仓库文件

[root@master ~]# rm -rf /etc/yum.repos.d/*

创建挂载点

[root@master ~]# mkdir /mnt/centos

挂载本地iso镜像文件至挂载点目录(临时挂载与永久挂载)

[root@master ~]# mount /dev/cdrom /mnt/centos/

永久挂载

[root@master ~]# vi /etc/fstab

/dev/cdrom /mnt/centos iso9660 defaults 0 0

重加加载/etc/fstab配置文件

[root@master ~]# mount -a

创建本地yum仓库

[root@master ~]# vi /etc/yum.repos.d/local.repo

[local]

name=local_centos

baseurl=file:///mnt/centos

enabled=1

gpgcheck=0

#查看仓库可用软件包

[root@master ~]# yum repolist

 4.配置本地主机名与IP地址解析

(为了后面对集群节点的调用,企业中推荐使用内部DNS服务器

[root@master ~]# vim /etc/hosts

注意:这一步需要改变主机名(举例)

#修改主机名
[root@weiyi001 ~]# hostnamectl set-hostname master#再打开一个bash环境
[root@weiyi001 ~]# bash

测试解析

[root@master ~]# ping node1[root@master ~]# ping node2

5.禁用swap交换分区(kubernetes强制要求禁用)

[root@master ~]# vim /etc/fstab

#/dev/mapper/centos-swap swap                    swap    defaults        0 0

6.修改Linux内核参数,添加网桥过滤器地址转发功能 

#编辑/etc/sysctl.d/kubernetes.conf文件添加如下配置(该文件默认不存在)

[root@master ~]# vim /etc/sysctl.d/kubernetes.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

 重新加载配置

[root@master ~]# sysctl --system

加载网桥过滤器模块

[root@master ~]# modprobe br_netfilter

查看网桥过滤器模块是否加载成功

[root@master ~]# lsmod | grep br_netfilter

7.配置ipvs功能

kubernetes中Service有两种代理模型一种是基于iptables的一种是基于ipvs,两者对比ipvs的性能要高,如果想要使用ipvs模型,需要手动载入ipvs模块 

安装ipset和ipvsadm软件

[root@master ~]# yum -y install ipset ipvsadm

#添加需要加载的模块写入脚本文件

[root@master ~]# cat > /etc/sysconfig/modules/ipvs.modules <<EOF
modprobe --ip_vs
modprobe --ip_vs_rr
modprobe --ip_vs_wrr
modprobe --ip_vs_sh
modprobe --nf_conntrack_ipv4  
EOF

设置脚本权限

[root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules

执行脚本

[root@master ~]# /etc/sysconfig/modules/ipvs.modules

查看对应的模块是否加载成功

[root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

重新启动系统

[root@master ~]# reboot

检查SELinux是否关闭

[root@master ~]# getenforce

Disabled

#检查swap分区是否关闭

[root@master ~]# free -g

wap:            0B          0B          0B 

#设置每台服务器的时区为中国标准时区CST(亚洲/上海)

[root@master ~]# timedatectl set-timezone Asia/Shanghai

#配置时间同步,保证每一个节点时间一致

[root@master ~]# yum -y install chrony

#启动chronyd

[root@master ~]# systemctl start chronyd[root@master ~]# systemctl enable chronyd

#查看时间

[root@master ~]# date

8.安装docker、kubeadm、kubelet、kubectl程序(三台主机都需要安装) 

#创建阿里Base源与epel源用于安装依赖包

​
[root@master ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo​
[root@master ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

#生成yum缓存提高软件下载速度

[root@master ~]# yum makecache

#安装yum-utils软件用于提供yum-config-manager程序

[root@master ~]# yum install -y yum-utils

#使用yum-config-manager创建docker存储库(阿里)

[root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#查看当前镜像源中支持的docker版本

#安装特定版docker-ce,安装时需要使用--setopt=obsoletes=0参数指定版本否则yum会自动安装高版本(我使用的高版本)

[root@master ~]# yum -y install docker-ce-18.06.3.ce-3.el7

#查看docker版本信息

[root@master ~]# docker --version

#创建/etc/docker目录,并在/etc/docker目录下添加一个配置文件

[root@master ~]# mkdir /etc/docker

#Docker默认使用的Cgroup Driver为默认文件驱动,而k8s默认使用的文件驱动为systemd,k8s要求驱动类型必须要一致,所以需要将docker文件驱动改成systemd

[root@master ~]# cat <<EOF > /etc/docker/daemon.json{"registry-mirrors": ["https://aoewjvel.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]}EOF

驱动问题或许会导致master初始化失败(许多问题会导致失败) 具体看

K8S集群部署问题及处理记录-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_72264240/article/details/134438973?spm=1001.2014.3001.5502

#启动docker程序[root@master ~]# systemctl start docker#设置docker随机自启[root@master ~]# systemctl enable docker

 9.安装kubernetes程序

#创建阿里kubernetes仓库

[root@master ~]# 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=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

#查看仓库可用软件包

[root@master ~]# yum repolist

#生成yum缓存提高软件下载速度

[root@master ~]# yum makecache

#安装kubeadm、kubelet、kubectl程序

#指定版本下载
[root@master ~]# yum install kubectl-1.23.5 kubelet-1.23.5  kubeadm-1.23.5  -y#设置kubelet开机自启,不然kubeadm init时会有警告提示
#集群初始化时候kubectl init时会自动start
[root@master ~]# systemctl enable kubelet

必须一次性下完

开始

若是低版本安装(请看开始到截至,1.23版本这部分不需要看)

这里注意:之前我配置的1.17版本需要配置kubelet的cgroup,编辑/etc/sysconfig/kubelet文件

[root@master ~]# vim /etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

KUBELET_PROXY_MODE="ipvs"

 1.23未进行该操作以及初始化前的操作(可能是版本以及containerd支持问题)

#在安装kubernetes集群前,必须要准备好集群需要的镜像,所需的镜像可以通过下面命令查看

[root@master ~]# kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.17.4

k8s.gcr.io/kube-controller-manager:v1.17.4

k8s.gcr.io/kube-scheduler:v1.17.4

k8s.gcr.io/kube-proxy:v1.17.4

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd:3.4.3-0

k8s.gcr.io/coredns:1.6.5

#定义镜像列表,因为此镜像在kubernetes仓库中,由于网络原因无法下载

[root@master ~]# images=(kube-apiserver:v1.17.4kube-controller-manager:v1.17.4kube-scheduler:v1.17.4kube-proxy:v1.17.4pause:3.1etcd:3.4.3-0coredns:1.6.5)

#从阿里镜像仓库下载镜像

[root@master ~]# for imageName in ${images[@]};dodocker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageNamedocker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageNamedocker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageNamedone

#查看镜像(标签已变成k8s标签)

[root@master ~]# docker images

截至

10.kubernetes集群初始化(master节点)

#初始化集群
kubeadm init --kubernetes-version=1.23.5  \
--apiserver-advertise-address=192.168.75.129   \
--image-repository registry.aliyuncs.com/google_containers  \
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.122.0.0/16

[root@master ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
#查看所有的pod[root@master ~]# kubectl get pods --all-namespaces

#查看kubernetes节点
[root@master ~]# kubectl get nodes

 注意:未安装网络是ready

 11.kubernetes安装网络插件

flannel

kubernetes支持多种网络插件,如:flannel、calico、canal等,任选一种使用即可

之前我实验选择的是flannel,这次试一试calico(但是flannel步骤也会写,自行选择)

只在master节点安装flannel插件即可,该插件使用的是DaemonSet控制器,该控制器会在每个节点上都运行;

#获取flannel配置文件

[root@master~]# wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#执行文件启动flannel

[root@master ~]# kubectl apply -f kube-flannel.yml

#查看nodes节点信息

[root@master ~]# kubectl get nodes

calico

#下载calico.yaml文件

[root@master ~]# curl https://docs.projectcalico.org/v3.18/manifests/calico.yaml -O

 calico.yaml获取:

链接:https://pan.baidu.com/s/1zhK26T7mA1PpAsNZY0Xhog?pwd=weiy 
提取码:weiy

#安装calico

[root@master ~]# kubectl apply -f calico.yaml

[root@master ~]# kubectl get pods --all-namespaces
[root@master ~]# kubectl get nodes

12.node节点加入集群

这个地方为了使得证书有效,需要在master上生成新的证书。

为什么要重新生成证书?

通常情况下,我们可以使用初始化后给出的命令来添加worker节点。然而,这些命令通常只在24小时内有效。为了避免在后续增加worker节点时需要重新生成token,我们可以自行生成一个永不过期的命令。这样一来,我们就可以直接使用这个命令来添加worker节点,省去了临时重新生成token的步骤。这样可以更加方便和高效地管理和增加worker节点。

#查看现有token

[root@master ~]#  kubeadm token list


 
#创建一个永不过期的token

[root@master ~]# kubeadm token create --ttl 0

#获取ca证书sha256编码hash值

[root@master ~]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

 生成后,node节点加入

node操作

[root@node1 ~]# kubeadm join 192.168.75.129:6443 --token murk1y.4pdoh7s8a96ejw4v     --discovery-token-ca-cert-hash sha256:475eb6e0d651f1cb7ea17767945dd15a78c1f2511636166b8590c729cbb9e757
[root@node2 ~]# kubeadm join 192.168.75.129:6443 --token murk1y.4pdoh7s8a96ejw4v     --discovery-token-ca-cert-hash sha256:475eb6e0d651f1cb7ea17767945dd15a78c1f2511636166b8590c729cbb9e757

[root@master ~]# kubectl get pods --all-namespaces

[root@master ~]# kubectl get nodes

 等待加入成功,状态由notready到ready

注意:在node节点无法使用kubectl的命令

因为Kubernetes集群中的kubectl命令通常用于与集群进行交互,例如部署、管理和监控应用程序。

在正常情况下,kubectl命令应该在Kubernetes集群的master节点上使用,而不是在node节点上。这是因为master节点才是集群的控制平面,负责管理整个集群的状态和控制逻辑,而node节点主要用于运行应用程序和服务。

因此,在node节点上使用kubectl命令可能会导致权限不足或无法连接到集群的问题。

如果需要在node节点上执行kubectl命令,通常建议通过远程登录到master节点来执行,但是生产环境有时也会需要从node节点去查看pod的健康状态

需要去下载master节点的:/etc/kubernetes/admin.conf

[root@node1 ~]#  scp root@master:/etc/kubernetes/admin.conf /etc/kubernetes/
[root@node1 ~]# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
[root@node1 ~]# source /etc/profile

node2节点同上

13.安装Dashboard

Kubernetes Dashboard是Kubernetes集群的官方Web用户界面,它提供了一种直观的方式来可视化和管理集群中的应用程序、资源和工作负载。通过Kubernetes Dashboard,用户可以查看集群中的各种资源对象(如Pods、Services、Deployments等)、监控集群的状态、进行日志查看、执行命令等操作。

它为用户提供了一个方便的方式来管理和监控他们的Kubernetes集群,而无需深入了解Kubernetes的命令行工具或API。Kubernetes Dashboard使得管理和操作Kubernetes集群变得更加直观和便捷。

[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml

recommended.yaml文件索取地址:

链接:https://pan.baidu.com/s/1K7A_PnMpgHpduMIuTqb2rg?pwd=weiy 
提取码:weiy

#在recommended.yaml的service里添加nodeport,这样可以通过主机ip+port 来访问dashboard 

镜像拉取策略

在容器环境中,镜像拉取策略用于指定容器运行时如何获取所需的镜像。

1. Always(始终拉取):无论本地是否已经存在镜像,始终拉取最新版本。如果本地已有镜像,则会重新拉取最新版本并覆盖原有镜像。

2. IfNotPresent(若不存在则拉取):仅当本地不存在指定镜像时才拉取。如果本地已经存在所需镜像,则直接使用本地镜像而不进行拉取。

3. Never(不拉取):从不拉取镜像,仅使用本地已存在的镜像。如果本地不存在所需镜像,容器将无法启动。

建议改为Never 不然远程拉取容易出错(我这里没做改变)

注意如果修改后要使用kubectl apply -f recommended.yaml而不是create

#创建danshboard

[root@master ~]#  kubectl create -f recommended.yaml

#查看所有pod

[root@master ~]#  kubectl get pods --all-namespaces 

查看pod两个pod的详细信息

[root@master ~]# kubectl describe pod/dashboard-metrics-scraper-799d786dbf-5c5ts --namespace=kubernetes-dashboard

[root@master ~]# kubectl describe pod/kubernetes-dashboard-fb8648fd9-f6ncv --namespace=kubernetes-dashboard

这一步或许会有镜像拉不下来的问题

Kubernetes Dashboard部署ImagePullBackOff问题处理-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_72264240/article/details/134461203

14.访问dashboard界面

经过谷歌以及edge测试

处理办法:使用火狐

#token登录 
#创建账号

[root@master ~]# kubectl create serviceaccount dashboard-admin -n kube-system

#授权

[root@master ~]# kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

#获取token信息

[root@master ~]# kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

 

相关文章:

K8S1.23.5部署(此前1.17版本步骤囊括)及问题记录

应版本需求&#xff0c;升级容器版本为1.23.5 kubernetes组件 一个kubernetes集群主要由控制节点&#xff08;master&#xff09;与工作节点&#xff08;node&#xff09;组成&#xff0c;每个节点上需要安装不同的组件。 master控制节点&#xff1a;负责整个集群的管理。 …...

基于java web的中小型人力资源管理系统

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

Python学习笔记--Python关键字yield

原文:http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained 注:这是一篇 stackoverflow 上一个火爆帖子的译文 问题 Python 关键字 yield 的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self,…...

CF 850 C Arpa and a game with Mojtaba(爆搜优化SG)

CF 850 C. Arpa and a game with Mojtaba&#xff08;爆搜优化SG&#xff09; Problem - C - Codeforces Arpa and a game with Mojtaba - 洛谷 思路&#xff1a;显然对于每一种质因子来说操作都是独立的 &#xff0c; 因此可以考虑对于每一种质因子求当前质因子的SG &#…...

kafka分布式安装部署

1.集群规划 2.集群部署 官方下载地址&#xff1a;http://kafka.apache.org/downloads.html &#xff08;1&#xff09;上传并解压安装包 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf kafka_2.12-3.3.1.tgz -C ../software/&#xff08;2&#xff09;修改解压后的文件…...

[云原生2.] Kurbernetes资源管理 ---- (陈述式资源管理方式)

文章目录 1. K8s管理资源的方法类别1.1 陈述式资源管理方式1.2 声明式资源管理方式1.3 GUI式资源管理方法 2. 陈述式资源管理方式2.1 命令行工具 ---- Kubelet2.1.1 简介2.1.2 特性2.1.3 kubelet拓展命令2.1.4 kubectl基本语法2.1.5 Kubectl工具的自动补全 2.2 k8s Service 的类…...

java:IDEA中的Scratches and Consoles

背景 IntelliJ IDEA中的Scratches and Consoles是一种临时的文件编辑环境&#xff0c;用于写一些文本内容或者代码片段。 其中&#xff0c;Scratch files拥有完整的运行和debug功能&#xff0c;这些文件需要指定编程语言类型并且指定后缀。 举例&#xff1a;调接口 可以看到…...

华为 Mate 60 Pro 拆解:陆制零件比率上升至47% | 百能云芯

近日&#xff0c;日经新闻联合研究公司Fomalhaut Techno Solutions对华为 Mate 60 Pro 进行了拆解&#xff0c;揭示了这款于8月发布的新型智能手机的成本结构。拆解结果显示&#xff0c;该手机的国产零部件比例达到了47%&#xff0c;相较于三年前的 Mate 40 Pro&#xff0c;提高…...

ZBrush 2024(三维数字雕刻软件)

ZBrush是一款Mac数字雕刻软件&#xff0c;它具有以下功能&#xff1a; 雕刻工具&#xff1a;ZBrush的雕刻工具非常强大&#xff0c;可以让用户在3D模型上进行雕刻&#xff0c;就像使用传统雕塑工具一样。高精度模型创建&#xff1a;ZBrush可以创建高精度的3D模型&#xff0c;适…...

wpf devexpress 排序、分组、过滤数据

这个教程示范在GridControl如何排序数据&#xff0c;分组数据给一个行创建一个过滤。这个教程基于前一个教程。 排序数据 可以使用GridControl 排序数据。这个例子如下过滤数据对于Order Date 和 Customer Id 行&#xff1a; 1、对于Order Date 和 Customer Id 行指定Colum…...

使用Badboy录制生成 JMeter 脚本

JMeter是一款在国外非常流行和受欢迎的开源性能测试工具&#xff0c;像LoadRunner 一样&#xff0c;它也提供了一个利用本地Proxy Server&#xff08;代理服务器&#xff09;来录制生成测试脚本的功能&#xff0c;但是这个功能并不好用。所以在本文中介绍一个更为常用的方法——…...

V10 桌面版、服务器版系统加固

V10 桌面版、服务器版系统加固 一、 文档说明 本文档中涉及的加固方法主要包括&#xff1a;密码策略配置、防火墙规 则配置、禁用高风险服务等。 二、 V10 桌面版系统加固 2.1 密码策略配置 密码策略包括密码老化控制策略和密码复杂度策略。密码老化 控制策略需要配置/etc…...

mtgsig1.2简单分析

{"a1": "1.2", # 加密版本"a2": new Date().valueOf() - serverTimeDiff, # 加密过程中用到的时间戳. 这次服主变坏了, 时间戳需要减去一个 serverTimeDiff(见a3) ! "a3": "这是把xxx信息加密后提交给服务器, 服主…...

场景交互与场景漫游-osgGA库(5)

osgGA库 osgGA库是OSG的一个附加的工具库&#xff0c;它为用户提供各种事件处理及操作处理。通过osgGA库读者可以像控制Windows窗口一样来处理各种事件 osgGA的事件处理器主要由两大部分组成&#xff0c;即事件适配器和动作适配器。osgGA:GUIEventHandler类主要提供了窗口系统的…...

Leetcode -1

Leetcode Leetcode -521.最长特殊序列Leetcode - 541.反转字符串Ⅱ Leetcode -521.最长特殊序列 题目&#xff1a;给你两个字符串 a 和 b&#xff0c;请返回 这两个字符串中 最长的特殊序列的长度。如果不存在&#xff0c;则返回 - 1 。 「最长特殊序列」 定义如下&#xff1…...

系列四、JVM的内存结构【本地接口(Native Interface)】

一、组成 本地接口由本地方法栈&#xff08;Native Method Stack&#xff09;、本地方法接口&#xff08;Native Interface&#xff09;、本地方法库组成。 二、本地接口的作用 本地接口的作用是融合不同的编程语言为Java所用&#xff0c;它的初衷是融合C/C程序&#xff0c;Jav…...

大型语言模型中的幻觉研究综述:原理、分类、挑战和未决问题11.15+11.16+11.17

大型语言模型中的幻觉研究综述&#xff1a;原理、分类、挑战和未决问题11.15 摘要1 引言2 定义2.1 LLM2.3 大语言模型中的幻觉 3 幻觉的原因3.1 数据的幻觉3.1.1 有缺陷的数据源3.1.2 较差的数据利用率3.1.3 摘要 3.2 来自训练的幻觉3.2.1训练前的幻觉3.2.2来自对齐的幻觉3.2.3…...

redis悲观锁和乐观锁

redis悲观锁 Redis加锁命令分有INCR、SETNX、SET 一、INCR锁 key不存在时&#xff0c;key的值会先被初始化为0&#xff0c;其它用户在执行INCR操作进行加一&#xff0c; 如果返回的数大于1&#xff0c;说明这个锁正在被使用当中&#xff0c;通常用在同时只能有一个人可以操作某…...

前端项目练习,首页退出登录功能,清除token --点击事件 quitFn

<el-menu-item index"2" click"quitFn"><i class"el-icon-switch-button">退出</i> </el-menu-item>quitFn() {// 为了让用户体验更好&#xff0c;来个确认提示框this.$confirm("确认退出登录吗&#xff1f;退出登…...

nodejs+vue杰和牧场管理系统的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计

系统涉及的对象是奶牛。 系统使用员工有管理员和普通员工。 管理员有修改的权限&#xff0c;普通员工没有。系统包含新闻功能&#xff0c;最好是有个后台管理&#xff0c;在后台输入新闻标题和内容&#xff0c;插入图片&#xff0c;在网页上就可以展示。最好再有个轮播图。 新闻…...

基于STM32的蓝牙低功耗(BLE)通信方案设计与实现

蓝牙低功耗&#xff08;Bluetooth Low Energy&#xff0c;简称BLE&#xff09;是一种能够在低功耗环境下实现无线通信的技术。在物联网应用中&#xff0c;BLE被广泛应用于传感器数据采集、健康监测设备、智能家居等领域。本文将基于STM32微控制器&#xff0c;设计并实现一个简单…...

qt 重载信号,使用““方式进行connect()调用解决方案

问题 在Qt中&#xff0c;重载的信号默认是无法使用&这种方式调用的。 因为&只能绑定到一个具体的信号&#xff0c;而重载的信号名称相同&#xff0c;编译器无法确定要绑定哪一个信号。 解决方案 如果非要使用&绑定重载的信号&#xff0c;可以使用函数指针进行转…...

阿里云+宝塔部署项目(Java+React)

阿里云服务器宝塔面板部署项目&#xff08;SpringBoot React&#xff09; 1. 上传所需的文件到服务器 比如jdk包和java项目的jar&#xff1a;这里以上传jar 为例&#xff0c;创建文件夹&#xff0c;上传文件&#xff1b; 在创建的文件夹下上传jar包 上传jdk 2. 配置jdk环境 3.…...

Linux_系统信息_uname查看内核版本、内核建立时间、处理器类型、顺便得到操作系统位数等

1、uname --help 使用uname --help查看uname命令的帮助信息 2、uname -a 通过上面的help就知道-a选项显示全部内容时的含义了。 内核名是Linux主机名是lubancat&#xff0c;如果想看主机名可以使用命令hostname&#xff1b;内核版本是Linux 4.19.232&#xff0c;建立时间为2…...

screen中conda激活环境后登录jupyter notebook导入包提示找不到,但是在命令行中就可以导入包

问题&#xff1a;screen中conda激活环境后登录jupyter notebook导入包提示找不到&#xff0c;但是在命令行中就可以导入包 解决方法&#xff1a; screen可能有bug&#xff0c;当在screen中conda激活环境后登录jupyter notebook出现问题&#xff0c;import torch提示没有安装好…...

基于SSM的中小型企业财务管理设计与实现

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

工厂模式之简单工厂模式(常用)

工厂模式的分类 简单工厂模式工厂方法模式抽象工厂模式 简单工厂模式 简单工厂模式又称为静态工厂模式&#xff0c;实质是由一个工厂类根据传入的参数&#xff0c;动态决定应该创建哪一个产品类&#xff08;这些产品类继承自一个父类或接口&#xff09;的实例。简单工厂模式的…...

Kafka入门教程与详解(一)

Kafka入门教程与详解&#xff08;一&#xff09; 一、Kafka入门教程 1.1 消息队列&#xff08;Message Queue) Message Queue消息传送系统提供传送服务。消息传送依赖于大量支持组件&#xff0c;这些组件负责处理连接服务、消息的路由和传送、持久性、安全性以及日志记录。消…...

GoFrame学习随便记1

用Yii1.1中典型的 blog 项目作为例子来学习Web应用应该不错。数据库 sqlite3&#xff0c;windows下可以下载 sqlite-tools-win-x64-*** &#xff08;https://www.sqlite.org/download.htm&#xff09;&#xff0c;把下载的几个exe放到 %GOPATH%\bin 目录下&#xff0c;而该目…...

最新自动定位版本付费进群系统源码

更新内容&#xff1a; 1.在网站首页增加了付款轮播功能。 2.新增了城市定位功能&#xff0c;方便用户查找所在城市的相关信息。 3.对域名库及支付设置进行了更新和优化。 4.增加了一种图模板设置模式&#xff0c;简化了后台模板设置流程。 5.此外还进行了前后台的其他优化…...