【云原生】Kubeadm部署k8s

目录

一、部署步骤

二、部署kubernetes

2.1、所有节点关闭防火墙 核心防护 iptables规则 swap交换

2.2、修改主机名并添加主机映射

2.3、调整内核参数

三、安装Docker

3.1、所有节点安装docker

3.2、所有接点添加镜像加速器

3.3、开启docker、并设置开机自启、查看状态

四、安装kubeadm,kubelet和kubectl

4.1、定义kubernetes源

4.2、安装kubeadm,kubelet和kubectl

4.3、开机自启kubelet

五、部署K8S集群

5.1、查看初始化需要的镜像

5.2、初始化kubeadm

5.3、设定kubectl

5.4、所有节点部署网络插件

5.5、在 node 节点上执行 kubeadm join 命令加入群集并查看状态

5.6、测试pod创建资源

5.7、暴露端口提供服务

5.8、测试访问

5.9、扩展3个副本

六、部署 Dashboard

6.1、上传 相关yaml 文件到 /opt/k8s 目录中

6.2、创建service account并绑定默认cluster-admin管理员集群角色

七、安装Harbor私有仓库

7.1、修改主机名,添加主机名和ip的映射

7.2、安装Docker20版本

7.2.1 添加镜像加速器

7.2.2 开启docker并设为开机自启

7.3、安装harbor

7.3.1 准备docker-compose安装包

7.3.2 准备harbor私有仓库的安装包

7.3.3 生成证书、私钥

7.3.4 启动Harbor

7.3.5 浏览器访问

7.3.6 在一个node节点上登录harbor

7.3.7 登录Harbar上传镜像

7.4、安装ipvsadm

7.4.1 修改调度策略,再去访问

7.5、浏览器访问

7.6、内核参数优化方案


一、部署步骤

  1. 在所有节点上安装Docker和kubeadm
  2. 部署Kubernetes Master
  3. 部署容器网络插件
  4. 部署 Kubernetes Node,将节点加入Kubernetes集群中
  5. 部署 Dashboard Web 页面,可视化查看Kubernetes资源
  6. 部署 Harbor 私有仓库,存放镜像资源

二、部署kubernetes

实验环境

服务器IP地址主要组件
master192.168.10.100docker / kubeadm / kubelet / kubectl / flannel
node01192.168.10.101docker/kubeadm/kubelet/kubectl/flannel
node02192.168.10.102docker/kubeadm/kubelet/kubectl/flanne
harbor192.168.10.103docker、docker-compose、harbor-offline-v1.2.2

2.1、所有节点关闭防火墙 核心防护 iptables规则 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      ##永久关闭swap分区,&符号在sed命令中代表上次匹配的结果
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   ##加载模块

2.2、修改主机名并添加主机映射

hostnamectl set-hostname master01
bash
hostnamectl set-hostname node01
bash
hostnamectl set-hostname node02
bash

echo "192.168.10.100 master01" >> /etc/hosts
echo "192.168.10.101 node01" >> /etc/hosts
echo "192.168.10.102 node02" >> /etc/hosts
echo "192.168.10.103 hub.hg.com" >> /etc/hosts
cat /etc/hosts

2.3、调整内核参数

cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
#关闭ipv6协议
net.ipv6.conf.all.disable_ipv6=1
net.ipv4.ip_forward=1
EOF

//生效参数
sysctl --system 

三、安装Docker

3.1、所有节点安装docker

[root@master01 ~]#yum install -y yum-utils device-mapper-persistent-data lvm2 
[root@master01 ~]#yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
[root@master01 ~]#yum install -y docker-ce docker-ce-cli containerd.io
[root@master01 ~]#mkdir /etc/docker/
[root@master01 ~]#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"
   }
 }
EOF
[root@master01 ~]#systemctl daemon-reload 
[root@master01 ~]#systemctl restart docker.service 
[root@master01 ~]#systemctl enable docker.service 

3.2、所有接点添加镜像加速器

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"
  }
}
EOF
#使用Systemd管理的Cgroup来进行资源控制与管理,因为相对Cgroupfs而言,Systemd限制CPU、内存等资源更加简单和成熟稳定。
#日志使用json-file格式类型存储,大小为100M,保存在/var/log/containers目录下,方便ELK等日志系统收集和管理日志。

3.3、开启docker、并设置开机自启、查看状态

systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service
systemctl status docker.service

docker info | grep "Cgroup Driver"
Cgroup Driver: systemd    ##结果

四、安装kubeadm,kubelet和kubectl

所有节点安装

4.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
EOF

4.2、安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11

4.3、开机自启kubelet

systemctl enable kubelet.service

五、部署K8S集群

5.1、查看初始化需要的镜像

[root@master01 ~]#kubeadm config images list
[root@master01 opt]#unzip v1.20.11.zip -d /opt/k8s/
[root@master01 opt]#cd /opt/k8s/v1.20.11/
[root@master01 v1.20.11]#for i in $(ls *.tar); do docker load -i $i; done
#复制镜像和脚本到 node 节点,并在 node 节点上执行脚本加载镜像文件
[root@master01 v1.20.11]#scp -r /opt/k8s/ root@192.168.10.132:/opt/
[root@master01 v1.20.11]#scp -r /opt/k8s/ root@192.168.10.133:/opt/
[root@node01 v1.20.11]# for i in $(ls *.tar); do docker load -i $i; done
[root@node02 v1.20.11]# for i in $(ls *.tar); do docker load -i $i; done

5.2、初始化kubeadm

kubeadm config print init-defaults > /opt/kubeadm-config.yaml

vim kubeadm-config.yaml

advertiseAddress: 192.168.10.100               ## 12行
kubernetesVersion: v1.20.11                    ## 34行
podSubnet: 10.244.0.0/16                       ## 37行
serviceSubnet: 10.96.0.0/16                    ## 38行
---                                            ## 40行
apiVersion: kubeproxy.config.k8s.io/v1alpha1   ## 41行
kind: KubeProxyConfiguration                   ## 42行
mode: ipvs                                     ## 43行


kubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
#--experimental-upload-certs 参数可以在后续执行加入节点时自动分发证书文件,K8S V1.16版本开始替换为 --upload-certs
#tee kubeadm-init.log 用以输出日志  
//查看 kubeadm-init 日志
less kubeadm-init.log

//kubernetes配置文件目录
ls /etc/kubernetes/

//存放ca等证书和密码的目录
ls /etc/kubernetes/pki

5.3、设定kubectl

kubectl需经由API server认证及授权后方能执行相应的管理操作,kubeadm 部署的集群为其生成了一个具有管理员权限的认证配置文件 /etc/kubernetes/admin.conf,它可由 kubectl 通过默认的 “$HOME/.kube/config” 的路径进行加载。

[root@master01 opt]#mkdir -p $HOME/.kube
[root@master01 opt]#cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@master01 opt]#chown $(id -u):$(id -g) $HOME/.kube/config
[root@master01 opt]#kubectl get node
[root@master01 opt]#kubectl get cs
#如果 kubectl get cs 发现集群不健康,更改以下两个文件
[root@master01 opt]#vim /etc/kubernetes/manifests/kube-scheduler.yaml 
[root@master01 opt]#vim /etc/kubernetes/manifests/kube-controller-manager.yaml 
把httpGet:字段下的hosts由127.0.0.1变成192.168.10.100(有两处)
#- --port=0					# 搜索port=0,把这一行注释掉
host: 192.168.10.100        ##修改地址
[root@master01 opt]#systemctl restart kubelet.service 
[root@master01 opt]#kubectl get cs
[root@master01 opt]#kubectl get node

[root@master01 opt]#vim /etc/kubernetes/manifests/kube-scheduler.yaml

 - --bind-address=192.168.10.100     ## 第16行
#    - --port=0                      ## 第19行
host: 192.168.10.100                 ## 第25行
host: 192.168.10.100                 ## 第39行

[root@master01 opt]#vim /etc/kubernetes/manifests/kube-scheduler.yaml

 - --bind-address=192.168.10.100     ## 第17行
#    - --port=0                      ## 第26行
host: 192.168.10.100                 ## 第37行
host: 192.168.10.100                 ## 第51行

5.4、所有节点部署网络插件

cd /opt
unzip kuadmin.zip     ##上传所需要的压缩包
解压
unzip kuadmin.zip
scp flannel-cni-v1.2.0.tar flannel-v0.22.2.tar node01:/opt/   ##拷贝到node01
scp flannel-cni-v1.2.0.tar flannel-v0.22.2.tar node01:/opt/   ##拷贝到node02

[root@master01 opt]#docker load -i flannel-cni-v1.2.0.tar
[root@master01 opt]#docker load -i flannel-v0.22.2.tar
[root@master01 opt]#docker images

[root@master01 opt]#kubectl apply -f kube-flannel.yml
[root@master01 opt]#kubectl get node

5.5、在 node 节点上执行 kubeadm join 命令加入群集并查看状态

将node节点加进来,

[root@master01 opt]#ls
[root@master01 opt]#cat kubeadm-init.log

##node01和node02上面添加
kubeadm join 192.168.10.100:6443 --token abcdef.0123456789abcdef \
    --discovery-token-ca-cert-hash sha256:3800375b6db6fe668a7812e883ff1dc7ecc405c5ead58d289a6f015b594d1205

##master01查看
[root@master01 opt]#kubectl get node
[root@master01 opt]#kubectl get cs
[root@master01 opt]#kubectl get pods -n kube-system
[root@master01 opt]#kubectl get pod -n kube-flannel
[root@master01 opt]#kubectl get pod -n kube-flannel -owide

由于机器的原因,换了三台,和之前位置相似 

5.6、测试pod创建资源

kubectl create deployment nginx --image=nginx   ##拉取nginx
[root@master01 opt]#kubectl get pod             ##看是否拉取到
[root@master01 opt]#kubectl get pod -owide      ##查看详细信息

[root@master01 opt]#curl 10.244.2.2             ##只能对内访问,不能访问

5.7、暴露端口提供服务

[root@master01 opt]#kubectl expose deployment nginx --port=80 --type=NodePort
[root@master01 opt]#kubectl get svc

5.8、测试访问

192.168.10.103:31606
192.168.10.104:31606

5.9、扩展3个副本

[root@master01 opt]#kubectl scale deployment nginx --replicas=3
[root@master01 opt]#kubectl get pods -o wide

六、部署 Dashboard

6.1、上传 相关yaml 文件到 /opt/k8s 目录中

在 master01 节点上操作

在 master01 节点上操作
#上传 recommended.yaml 文件到 /opt/k8s 目录中
cd /opt/k8s
vim recommended.yaml
#默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001     #添加
  type: NodePort          #添加
  selector:
    k8s-app: kubernetes-dashboard

##上传dashboard.tar metrics-scraper.tar到/opt目录下

##远程从master拷贝到node节点的/opt下
[root@master01 opt]#scp dashboard.tar metrics-scraper.tar node01:/opt/
	
##master节点执行下面语句
kubectl apply -f recommended.yaml
 
 
#使用输出的token登录Dashboard
https://NodeIP:30001

6.2、创建service account并绑定默认cluster-admin管理员集群角色

#创建service account并绑定默认cluster-admin管理员集群角色
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

6.3、登录Dashboard

#使用输出的token登录Dashboard
https://NodeIP:30001

无论哪个node的IP地址、因为服务都是运行在node上的

https://192.168.10.104:30001

 

七、安装Harbor私有仓库

7.1、修改主机名,添加主机名和ip的映射

#修改主机名
hostnamectl set-hostname hub.hg.com
 
#所有节点加上主机名映射
echo "192.168.10.103 master01" >> /etc/hosts
echo "192.168.10.104 node01" >> /etc/hosts
echo "192.168.10.105 node02" >> /etc/hosts
echo "192.168.10.106 hub.hg.com" >> /etc/hosts
cat /etc/hosts

7.2、安装Docker20版本

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-20.10.18 docker-ce-cli-20.10.18 containerd.io

mkdir /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.hg.com"]
}
EOF

systemctl start docker
systemctl enable docker

7.2.1 添加镜像加速器

所有节点都需要修改

vim /etc/docker/daemon.json

{
  "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.hg.com"]
}

7.2.2 开启docker并设为开机自启

##首先加载一下,因为前面把每个节点都配置了镜像加速器
systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service
systemctl status docker.service
##此处就显示一个界面,其他节点的不展示了

7.3、安装harbor

7.3.1 准备docker-compose安装包

[root@hub ~]#cd /usr/local/bin/       
##上传docker-compose         ##直接将docker-compose上传到/usr/local/bin/ 
docker-compose
[root@hub bin]#chmod +x docker-compose     ##添加执行权限

7.3.2 准备harbor私有仓库的安装包

官网下载地址:http://harbor.orientsoft.cn/harbor-1.2.2/harbor-offline-installer-v1.2.2.tgz
##首先进入/opt,然后将下载好的harbor压缩包上传到/opt
##进行解压
[root@hub opt]#tar xf harbor-offline-installer-v1.2.2.tgz
##将harbor配置文件进行备份
[root@hub harbor]#cp harbor.cfg{,.bak}
##对harbor.cfg配置文件进行修改
[root@hub harbor]#vim harbor.cfg
hostname = reg.hg.com                  ##第5行
ui_url_protocol = https                ##第9行
db_password = root123                  ##第12行
ssl_cert_key = /data/cert/server.key   ##第25行
harbor_admin_password = Harbor12345    ##第59行

7.3.3 生成证书、私钥

生成证书

make -p /data/cert
cd /data/cert

#生成私钥

openssl genrsa -des3 -out server.key 2048
##密码:123456
-------------------------------------------------------------------------------------------
openssl          #这是一个强大的加密库和工具集,用于处理SSL/TLS协议和相关的加密操作。
genrsa           #openssl的子命令,用于生成 RSA 私钥。
-des3           #openssl 使用 DES3算法来加密生成的私钥。
-out server.key  #这个选项指定了输出文件的名称,即生成的私钥将被保存在名为server.key的文件中。
2048             #这个数字指定了RSA密钥的长度(以位为单位)。

#生成证书签名请求文件

openssl req -new -key server.key -out server.csr
=========================================================================================
req #用于处理与证书签名请求(CSR)和私钥相关的任务。
-new #这个选项指示OpenSSL创建一个新的证书签名请求。
-key server.key #指定用于生成CSR的私钥文件的路径
-out server.csr #指定生成的CSR文件的输出路径。
=========================================================================================
-----------------------------------------------------------------------------------------
输入私钥密码:123456
输入国家名:CN
输入省名:BJ
输入市名:BJ
输入组织名:HG
输入机构名:HG
输入域名:hub.hg.com
输入管理员邮箱:admin@hg.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

备份私钥

cp server.key server.key.org

清除私钥密码

openssl rsa -in server.key.org -out server.key

签名证书

openssl x509 -req -days 1000 -in server.csr -signkey server.key -out server.crt
===========================================================================================
openssl x509          #这是OpenSSL的一个子命令,用于处理X.509证书。
-req                  #指示OpenSSL从一个CSR文件中读取请求信息。
-days 1000            #设置证书的有效期为1000天。这意味着证书将在 1000 天后过期。
-in server.csr        #指定CSR文件的输入路径
-signkey server.key   #使用指定的私钥(server.key)对CSR进行签名,生成证书。
-out server.crt       #指定输出的证书文件路径。在这个例子中,证书文件将被保存为server.crt
===========================================================================================

chmod +x /data/cert/*

7.3.4 启动Harbor

[root@hub cert]#cd  /opt/harbor/
[root@hub harbor]#./install.sh 
#执行命令 ./install.sh 以 pull 镜像并启动容器
 
#运行./install.sh时,这个脚本会执行一系列的步骤来配置和启动Harbor服务。这些步骤可能包括:
#检查和准备安装环境(如检查必要的依赖项、配置文件等)。
#生成或验证 Harbor 的配置文件(通常是 harbor.yml)。
#创建必要的数据目录和文件。
#初始化数据库(如果使用了数据库存储)。
#启动 Harbor 的各个组件(如 core、registry、portal、jobservice 等)

7.3.5 浏览器访问

添加主机映射
在本地使用火狐浏览器访问:https://hub.hg.com
点击高级--->添加例外---->确认安全例外
 
用户密码登录,默认为:
 
用户名:admin
密码:Harbor12345

7.3.6 在一个node节点上登录harbor

docker login -u admin -p Harbor12345 https://hub.hg.com

7.3.7 登录Harbar上传镜像

在node01节点操作

​##上传镜像
docker tag nginx:latest hub.hg.com/library/nginx:v1
docker push hub.hg.com/library/nginx:v1

在master节点上删除之前创建的nginx资源

kubectl delete deployment nginx
kubectl create deployment nginx-deployment --image=hub.hg.com/library/nginx:v1 --port=80 --replicas=3
kubectl expose deployment nginx-deployment --port=30000 --target-port=80
kubectl get svc,pods
kubectl get svc,pods -owide

访问验证

curl 10.244.1.7

7.4、安装ipvsadm

[root@master01 k8s]#yum -y install ipvsadm.x86_64
[root@master01 k8s]#ipvsadm -Ln
[root@master01 k8s]#curl 10.96.30.170:30000

7.4.1 修改调度策略,再去访问

kubectl edit svc nginx-deployment
25   type: NodePort                        #把调度策略改成NodePort
 
[root@master01 k8s]#kubectl get svc
NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)           AGE
kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP           2d3h
nginx              NodePort    10.96.169.156   <none>        80:31606/TCP      2d3h
nginx-deployment   NodePort    10.96.30.170    <none>        30000:31973/TCP   10h
[root@master01 k8s]#

7.5、浏览器访问

浏览器访问:
 
http://192.168.10.103:31973/
http://192.168.10.104:31973/
http://192.168.10.105:31973/

#将cluster-admin角色权限授予用户system:anonymous
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

7.6、内核参数优化方案

cat > /etc/sysctl.d/kubernetes.conf <<EOF
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									#禁止使用 swap 空间,只有当系统内存不足(OOM)时才允许使用它
vm.overcommit_memory=1							#不检查物理内存是否够用
vm.panic_on_oom=0								#开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963							#指定最大文件句柄数
fs.nr_open=52706963								#仅4.4以上版本支持
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio中MP编译参数

MP通常与OpenMP&#xff08;Open Multi-Processing&#xff09;关联&#xff0c;它是用于多平台共享内存并行编程的一个API。 在编译C或C代码时使用OpenMP&#xff0c;通常需要特定的编译参数来启用这一功能。对于GCC和G编译器&#xff0c;这些参数包括&#xff1a; -fopenmp…

【全开源】Java情侣飞行棋系统微信小程序+H5+微信公众号+APP 源码

情侣飞行棋系统源码&#xff1a;共享欢乐时光的数字新选择 引言 在这个数字化时代&#xff0c;人们越来越追求独特的娱乐方式&#xff0c;与伴侣共度美好时光。情侣飞行棋系统源码应运而生&#xff0c;它不仅仅是一款游戏&#xff0c;更是情侣间增进感情、共享欢乐时光的桥梁…

C++的线程安全队列模板类封装

目录 1 线程安全队列封装一 2 线程安全队列封装二 3 线程安全队列封装三 1 线程安全队列封装一 /*** ** Copyright (c) Huawei Technologies Co., Ltd. 2020-2022. All rights reserved.** Redistribution and use in source and binary forms, with or without* modif…

机器学习(五) -- 监督学习(3) -- 决策树

系列文章目录及链接 上篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;2&#xff09; -- 朴素贝叶斯 下篇&#xff1a;机器学习&#xff08;五&#xff09; -- 监督学习&#xff08;4&#xff09; -- 集成学习方法-随机森林 前言 tips&#xff1a…

JAVA面试题大全(九)

1、为什么要使用 spring&#xff1f; 方便解耦&#xff0c;便于开发支持aop编程声明式事务的支持方便程序的测试方便集成各种优秀的框架降低JavaEE API的使用难度 2、解释一下什么是 aop&#xff1f; AOP 是 Aspect-Oriented Programming 的缩写&#xff0c;中文翻译为“面向…

Java CRM客户关系管理系统源码:基于Spring Cloud Alibaba与Spring Boot,专为成长型企业设计

项目名称&#xff1a;CRM客户关系管理系统 功能模块及描述&#xff1a; 一、待办事项 今日需联系客户&#xff1a;显示当日需跟进的客户列表&#xff0c;支持查询和筛选。分配给我的线索&#xff1a;管理分配给用户的线索&#xff0c;包括线索列表和查询功能。分配给我的客户…

EDM图纸管理软件_图纸文档管理软件

图纸文档管理软件是一种用于管理和组织各种类型的图纸和文档的工具。它提供了一种集中存储、查找、共享和版本控制图纸和文档的方式&#xff0c;以便团队成员可以更有效地进行协作和管理。 以下是一些常见的图纸文档管理软件&#xff1a; 彩虹EDM系统&#xff1a;这是一款图纸文…

K8S认证|CKA题库+答案| 5. 创建 Ingress

5 . 创建 Ingress 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node k8s master …

java项目之图书管理系统源码(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的图书管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 系统主要分为管理员角色和用…

六种常用设计模式

单例设计模式 单例模式指在整个系统生命周期里&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性。 单例模式分类 单例模式可以分为懒汉式和饿汉式&#xff0c;两者之间的区别在于创建实例的时间不同&#xff1a; 懒汉式&#xff1a;指系统运行中&#…

基于Python实现 HR 分析(逻辑回归和基于树的机器学习)【500010104】

介绍 数据集说明 此数据集包含与员工有关的综合属性集合&#xff0c;从人口统计细节到与工作相关的因素。该分析的主要目的是预测员工流动率并辨别导致员工流失的潜在因素。 在这个数据集中&#xff0c;有14,999行&#xff0c;10列&#xff0c;以及这些变量&#xff1a;满意度…

【Python】 如何使用逗号作为千位分隔符打印数字

基本原理 在Python中&#xff0c;打印数字时自动添加千位分隔符可以提高数字的可读性&#xff0c;尤其是在处理大数字时。Python提供了多种方法来实现这一功能&#xff0c;包括使用内置的format()函数、f-string&#xff08;格式化字符串字面量&#xff09;以及locale模块。 …

数据量较小的表是否有必要添加索引问题分析

目录 前言一、分析前准备1.1、准备测试表和数据1.2、插入测试数据1.3、测试环境说明 二、具体业务分析2.1、单次查询耗时分析2.2、无索引并发查询服务器CPU占用率分析2.3、添加索引并发查询服务器CPU占用率分析 三、总结 前言 在一次节日活动我们系统访问量到达了平时的两倍&am…

50道题目!Python、SQL数据库、AB测试、业务分析、机器学习都在这里了!

介绍 每日一题系列已经更新了50道题目啦&#xff01; 题目难度为初级到中级&#xff0c;涵盖了Python、SQL数据库、AB测试、业务分析、机器学习五大主题&#xff0c;适合初学者和有一定基础的朋友。 原文链接: 50道题目&#xff01;Python、SQL数据库、AB测试、业务分析、机器…

达梦数据库详解

达梦认证是指针对中国数据库管理系统&#xff08;DBMS&#xff09;厂商达梦公司所推出的数据库产品&#xff0c;即达梦数据库&#xff08;DMDB&#xff09;&#xff0c;进行的一种官方认证体系。达梦认证旨在验证数据库管理人员对达梦数据库产品的掌握程度&#xff0c;及其在数…

LoRA:大型语言模型的低秩适应

LoRA 官网 LoRA(Low-Rank Adaptation)出自2021年的论文“LoRA: Low-Rank Adaptation of Large Language Models” 常见的大模型微调方法&#xff1a; Adapter-Tuning、Prefix-Tuning、Prompt-Tuning(P-Tuning)、P-Tuning v2、LoRA。 LoRA技术冻结预训练…

冬奥会|基于SprinBoot+vue的冬奥会科普平台(源码+数据库+文档)

目录 基于SprinBootvue的冬奥会科普平台 一、前言 二、系统设计 三、系统功能设计 1登录注册 2系统功能模块 3管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|…

Discourse 使用 DiscourseConnect 调用接口 admin/users/sync_sso 404 错误

在对用户数据通过 SSO 同步的时候&#xff0c;调用提示 404 错误。 我们使用的是 Java 的代码。 2024-05-23_16-34-421340802 70.3 KB 如上图&#xff0c;返回显示的代码为 404。 问题原因 出现上面错误的原因是安装的 Discourse 实例的 discourse connect 没有启用。 2024-…

【C语言】明析部分C语言内存函数

目录 1.memcpy 2.memmove 3.memset 4.memcmp 以下都是内存函数&#xff0c;作用单位均是字节 1.memcpy memcpy是C/C语言中的一个内存拷贝函数&#xff0c;其原型为&#xff1a; void* memcpy(void* dest, const void* src, size_t n);目标空间&#xff08;字节&#xff09…

作家百度百科怎么做出来的 怎么创建作家百科词条才能通过

创建作家百度百科词条需要遵循一定的步骤&#xff0c;并注意一些关键点&#xff0c;以确保词条能够顺利通过审核。以下是伯乐网络传媒pouquan根据经验结果得出的详细指导&#xff1a; 准备工作 注册百度账号&#xff1a;在创建任何百度百科词条之前&#xff0c;您需要先注册一…