kubeadm安装k8s集群

目录

一、环境部署

1、关闭防火墙规则、关闭selinux、关闭swap交换分区

2、修改主机名、DNS解析

3、调整内核参数

二、所有节点安装Docker

三、安装k8s集群

1、所有节点配置K8S源

2、所有节点安装kubeadm、kubelet和kubectl

3、部署K8S集群

3.1 初始化操作(master节点操作)

3.2 设置kubectl命令(master节点操作)

4、node节点加入k8s集群

四、所有节点部署网络插件flannel

五、测试k8s集群,在集群中创建一个pod,验证是否能正常运行

六、扩展3个副本

七、部署Dashboard可视化界面

八、安装Harbor私有仓库

1、安装docker

2、安装Harbor

3、上传镜像,创建pod

4、访问测试

一、环境部署

服务器类型ip地址
master192.168.247.10
node01192.168.247.20
node02192.168.247.30
hub.ydq.com192.168.247.40

1、关闭防火墙规则、关闭selinux、关闭swap交换分区

#所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
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
#加载ip_vs

2、修改主机名、DNS解析

cat >> /etc/hosts <<EOF
192.168.247.10 master
192.168.247.20 node01
192.168.247.30 node02
EOF

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

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 docker-ce-cli containerd.iomkdir /etc/docker
cat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["https://i2q96v0n.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等日志系统收集和管理日志。systemctl daemon-reload
systemctl restart docker.service
systemctl enable docker.service docker info | grep "Cgroup Driver"

三、安装k8s集群

1、所有节点配置K8S源

#定义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

2、所有节点安装kubeadm、kubelet和kubectl

yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11
#安装三个组件命令systemctl enable kubelet.service
#开机自启kubelet
#K8S通过kubeadm安装出来以后都是以Pod方式存在,即底层是以容器方式运行,所以kubelet必须设置开机自启

3、部署K8S集群

kubeadm config images list
#查看初始化需要的镜像mkdir /opt/k8s/
cd /opt/k8s/
#上传v1.20.11.zip压缩包cd /opt/k8s/v1.20.11for i in $(ls *.tar);do docker load -i $i;done
#使用for循环,将上传的镜像导入到docker中scp -r /opt/k8s/v1.20.11 root@node01:/opt
scp -r /opt/k8s/v1.20.11 root@node02:/opt
#复制镜像和脚本到node节点,并在node节点上执行脚本加载镜像文件。(上面的for循环)

3.1 初始化操作(master节点操作)

方法一:

kubeadm config print init-defaults > /opt/kubeadm-config.yaml
#打印配置文件重定向到指定文件中vim /opt/kubeadm-config.yaml
11 localAPIEndpoint:
12   advertiseAddress: 192.168.247.10		#指定master节点的IP地址
13   bindPort: 6443
......
34 kubernetesVersion: v1.20.11				#指定kubernetes版本号
35 networking:
36   dnsDomain: cluster.local
37   podSubnet: "10.244.0.0/16"				#指定pod网段,10.244.0.0/16用于匹配flannel默认网段
38   serviceSubnet: 10.96.0.0/12			#指定service网段
39 scheduler: {}
#末尾再添加以下内容
--- 
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs									#把默认的kube-proxy调度方式改为ipvs模式=============================================================
cd /optkubeadm init --config=kubeadm-config.yaml --upload-certs | tee kubeadm-init.log
#--upload-certs参数可以在后续执行加入节点时自动分发证书文件
#tee kubeadm-init.log 用以输出日志less kubeadm-init.log
#查看kubeadm-init.log日志ls /etc/kubernetes/
#查看kubernetes配置文件目录ls /etc/kubernetes/pki
#查看存放ca等证书密码的目录

方法二:

kubeadm init \
--apiserver-advertise-address=192.168.247.10 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.11 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16------------------------#解释字段----------------------------------------------
--apiserver-advertise-address   //apiserver通告给其他组件的IP地址,一般应该为Master节点的用于集群内部通信的IP地址,0.0.0.0表示节点上所有可用地址
--apiserver-bind-port  //apiserver的监听端口,默认是6443
--cert-dir  //通讯的ssl证书文件,默认/etc/kubernetes/pki
--control-plane-endpoint  //控制台平面的共享终端,可以是负载均衡的ip地址或者dns域名,高可用集群时需要添加
--image-repository   //拉取镜像的镜像仓库,默认是k8s.gcr.io
--kubernetes-version //指定kubernetes版本
--pod-network-cidr  //pod资源的网段,需与pod网络插件的值设置一致。Flannel网络插件的默认为10.244.0.0/16,Calico插件的默认值为192.168.0.0/16;
--service-cidr  //service资源的网段
--service-dns-domain //service全域名的后缀,默认是cluster.local
--token-ttl   //默认token的有效期为24小时,如果不想过期,可以加上 --token-ttl=0 这个参数# service-cidr 和 pod-network-cidr 最好就用这个,不然需要修改后面的 kube-flannel.yaml 文件方法二初始化后需要修改 kube-proxy 的 configmap,开启 ipvs
kubectl edit cm kube-proxy -n=kube-system
修改mode: ipvs

3.2 设置kubectl命令(master节点操作)

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

执行以下命令可以使用kubectl管理工具

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#授权操作,不然无法使用kubectl命令kubectl get cs
#查看集群健康状态

如果 kubectl get cs 发现集群不健康,更改以下两个文件

vim /etc/kubernetes/manifests/kube-scheduler.yaml 
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
# 修改如下内容把--bind-address=127.0.0.1变成--bind-address=20.0.0.55		#修改成k8s的控制节点master01的ip
把httpGet:字段下的hosts由127.0.0.1变成20.0.0.55(有两处)
#- --port=0					# 搜索port=0,把这一行注释掉systemctl restart kubelet
#重启服务kubectl get cs
#查看集群节点信息

4、node节点加入k8s集群

node01和node02上面都执行

kubeadm join 1922.168.247.10:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:6e06913a9f07388d0873864f0cce4b11c112e43341ddb52d52c2d956e70de08d 
#将前面创建好的token令牌,再两台node节点上执行,加入到集群中

node 节点加入集群需要生成的 token,token 有效期为 24 小时,过期需要重新创建

kubeadm token create --print-join-command
#token 过期重新生成 token

四、所有节点部署网络插件flannel

方法一:

//上传cni-plugins-linux-amd64-v1.2.0.tgz、flannel-cni-v1.2.0.tar、flannel-v0.22.2.tar和kube-flannel.yml//master01上操作:
docker load -i flannel-v0.22.2.tar
docker load -i flannel-cni-v1.2.0.tar
scp flannel-cni-v1.2.0.tar flannel-v0.22.2.tar node01:/opt  #复制到node1节点
scp flannel-cni-v1.2.0.tar flannel-v0.22.2.tar node02:/opt  #复制到node2节点//node01/node02上操作:
docker load -i flannel-v0.22.2.tar
docker load -i flannel-cni-v1.2.0.tar//master01操作:
kubectl apply -f kube-flannel.yml
kubectl get pod -n kube-system

###如若显示下述问题,可尝试重启所有节点的docker和kubelet服务

方法二:

//所有节点上传flannel镜像 flannel.tar 到 /opt 目录,master节点上传 kube-flannel.yml 文件
cd /opt
docker load < flannel.tar//在 master 节点创建 flannel 资源
kubectl apply -f kube-flannel.yml 

五、测试k8s集群,在集群中创建一个pod,验证是否能正常运行

#部署服务
kubectl create deployment nginx --image=nginx:1.14#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePortkubectl get pods
#查看pod的状态kubectl get svc(service)
#查看暴露的端口//测试访问
curl http://node01:32404---------------------------------------------------------------------
#删除pod与svc
kubectl delete deploy/nginx
kubectl delete svc/nginx

六、扩展3个副本

kubectl scale deployment nginx --replicas=3
#使用deployment的pod控制器创建3个podkubectl get pods -o wide
#查看pods的状态。显示详细信息

七、部署Dashboard可视化界面

在master上面操作

cd /opt/k8s
#上传recommended.yaml 文件到 /opt/k8s目录中#默认Dashboard只能集群内部访问,修改service为NodePort类型,暴露到外部
vim recommended.yaml
kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:ports:- port: 443targetPort: 8443nodePort: 30001     #添加type: NodePort          #添加selector:k8s-app: kubernetes-dashboard
--------------------------------------------------
kubectl apply -f recommended.yaml
#基于recommended.yaml文件生成kubectl create serviceaccount dashboard-admin -n kube-system
##创建资源,并指定账号kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
#创建podkubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
#查看pod的详细信息,并且过滤需要的信息--------------------------token--------------------------------------------
eyJhbGciOiJSUzI1NiIsImtpZCI6IktwWEgwVW9nZW1iZVdaNDl2TkMzeFQ0dlVLQ19RZUNtLVQ0ZnVGQ00wU3cifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tOHpwN2ciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiMzBkMTBhYzItZGJkZC00YjA1LWJlYTYtYTQxMzdjNjZlNWUzIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.GxOH-3FjrPHKHr3EcDi3D_NUmvDNTBusDIhIb5-fcmjEGrkSEK4Ddj7auh-Xa5dslAIHm77EaXJ4oGrk93fV-PyUbpBNdE1DYVGRsUrveNHrAh2AC4PMx8S0gOotYSzfD0VMOGJV9vx4Ee-yIOfvZi8jeJnKJwxIDcvIGvW3E061rAz0-GSrITpHRB1JtktPhmqkB1r-XoDHOPdE0dOVWuzL6c02x9wmajF8dvzmPFbOb_gbOxjTJf8_m44GLee6JzW3Hl0bgj0tM799-UDPJjEB3QKr-NXp8ochi1hkMYxe1hUFJGDV4Fjz6ndzSB5_vvhPFWhTmmlMys1kqsrvtw
#使用输出的token登录Dashboard
https://NodeIP:30001注:
https://192.168.247.20:30001
https://192.168.247.30:30001

八、安装Harbor私有仓库

新开一台服务器,ip地址为:192.168.247.40

1、安装docker

//修改主机名
hostnamectl set-hostname hub.kgc.com//所有节点加上主机名映射
echo '192.168.247.50 hub.kgc.com' >> /etc/hosts//安装 docker
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 docker-ce-cli containerd.iomkdir /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.kgc.com"]
}
EOFsystemctl start docker
systemctl enable docker

所有 node 节点都修改 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.kgc.com"]
}
EOFsystemctl daemon-reload
systemctl restart docker

2、安装Harbor

cd /opt/
#上传 harbor-offline-installer-v1.2.2.tgz 和 docker-compose 文件到 /opt 目录
cp docker-compose /usr/local/bin
chmod +x /usr/local/bin/docker-compose
#将docker-compose编排工具复制到bin目录,并添加执行权限tar -zxvf harbor-offline0installer-v1.2.2.tgz
#将harbor包解包cd harbor.cfgvim harbor.cfg
5  hostname = hub.ydq.com
9  ui_url_protocol = https
24 ssl_cert = /data/cert/server.crt
25 ssl_cert_key = /data/cert/server.key
59 harbor_admin_password = Harbor12345

生成证书

mkdir  -p /data/cert
#创建证书目录cd /data/cert
openssl genrsa -des3 -out server.key 2048
#生成私钥
//输入两遍密码:123456openssl req -new -key server.key -out server.csr
#生成证书签名请求文件
//输入私钥密码:123456
//输入国家名:CN
//输入省名:BJ
//输入市名:BJ
//输入组织名:KGC
//输入机构名:KGC
//输入域名:hub.ydq.com
//输入管理员邮箱:admin@ydq.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
#执行脚本
在本地使用火狐浏览器访问:https://hub.ydq.com添加例外 -> 确认安全例外
用户名:admin
密码:Harbor12345

3、上传镜像,创建pod

#注意错误
如果其他node节点登录不了harbor仓库,那就需要看一下node节点上是否配置了执行harbor的域名注册表或者DNS解析没有配置。
docker login -u admin -p Harbor12345 https://hub.zzz.com
#在一个node节点上登录harbordocker tag nginx:1.14 hub.zzz.com/library/nginx:v1
#修改镜像标签docker push hub.zzz.com/library/nginx:v1
#上传镜像

在master节点操作

kubectl delete deployment nginx
#在master节点删除之前创建的nginx资源(可不删)kubectl create deployment nginx-zzz --image=hub.zzz.com/library/nginx:v1 --port=80 --replicas=3
#运行一个pod,它镜像来自于harbor仓库中的nginx,并且保留端口,且创建3个副本kubectl get pods 
#查看创建的podskubectl expose deployment nginx-zzz --port=30000 --target-port=80
#暴露端口kubectl get svc,pods
#查看pods信息和service信息

修改service的端口类型

kubectl edit svc nginx-kk1
#25行改为:NodePortkubectl get svc
#查看端口类型

4、访问测试

浏览器访问:
192.168.27.10:32704
192.168.27.20:32704
192.168.27.30:32704

扩展

########### 内核参数优化方案 ##########
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

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

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

相关文章

车载音频ADI-ADSP21569音频DSP开发

车载音频ADI-ADSP21489音频DSP开发 是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送蓝牙音频,车载DSP音频项目核心开发资料, 1 芯片手册 2 电路原理图

网工内推 | 急招网工,思科、华为认证优先,法定节假日三薪

01 江苏臻云技术 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、负责落实数据中心机房日常网络监测及巡检任务&#xff1b; 2、负责数据中心网络设备日常监控、变更、维护、巡检&#xff1b; 3、负责日常巡检报告、故障维护报告、变更申请的文档的编制&#xff1b;…

竞赛 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满…

番外8.2 --- 后续

### 01&#xff1a;dd命令&#xff1a;在新挂载点创建swap文件大小10MB&#xff1b;&#xff08;dd if/dev/zero of/swap bs1024 count10240&#xff09; 02&#xff1a;给swap建立文件系统&#xff0c;将其分属到swap文件&#xff08;mkswap /swap&#xff1b; swapon /swap &…

21.2 Python 使用Scapy实现端口探测

Scapy 是一款使用纯Python编写的跨平台网络数据包操控工具&#xff0c;它能够处理和嗅探各种网络数据包。能够很容易的创建&#xff0c;发送&#xff0c;捕获&#xff0c;分析和操作网络数据包&#xff0c;包括TCP&#xff0c;UDP&#xff0c;ICMP等协议&#xff0c;此外它还提…

ExcelPatternTool 开箱即用的Excel工具包现已发布!

文章目录 ExcelPatternTool功能特点&#xff1a;快速开始使用说明常规类型高级类型Importable注解Exportable注解IImportOption导入选项IExportOption导出选项单元格样式StyleMapping样式映射使用数据库作为数据源 示例Sample1&#xff1a;不同类型字段导出Sample2&#xff1a;…

Macos视频增强修复工具:Topaz Video AI for mac

Topaz Video AI是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频&#xff0c;包括低分辨率视频、老旧影片、手机录制的视频等等。 使用Topaz Video AI非常简单&#xff0c;…

【Linux】部署单机OA项目及搭建spa前后端分离项目

目录 部署OA项目 ​编辑 搭建spa前后端分离项目 后端 前端 配置坏境变量 部署OA项目 在虚拟机中&#xff0c;将项目打包成war文件放置到tomcat根目录下的webapps文件目录下 再在主机数据库中连接数据库&#xff0c;并定义数据库名导入相关的表 继续进入tomcat目录下双击点…

【REDIS】redis-命令大全

【REDIS】redis-命令大全 redis-命令的官方文档 键命令 序号命令及描述1DEL key 该命令用于在 key 存在时删除 key。2DUMP key 序列化给定 key &#xff0c;并返回被序列化的值。3EXISTS key 检查给定 key 是否存在。4EXPIRE key seconds 为给定 key 设置过期时间&#xf…

升级 Xcode 15模拟器 iOS 17.0 Simulator(21A328) 下载失败

升级 IDE Xcode 15 后本地模拟器 Simulator 全被清空,反复重新尝试 Get 下载频频因网络异常断开而导致失败 ... 注:通过 Get 方式下载一定要保证当前网络环境足够平稳,网络环境不好的情况下该方法几乎成不了 解决办法 Get 方式行不通可以尝试通过 官网 途径先下载 模拟器安装包…

p5.js 到底怎么设置背景图?

本文简介 点赞 关注 收藏 学会了 在 《p5.js 光速入门》 里我们学过加载图片元素&#xff0c;学过过背景色的用法&#xff0c;但当时没提到背景图要怎么使用。 本文就把背景图这部分内容补充完整&#xff0c;并且会提到在 p5.js 里使用背景图的一些注意点。 背景图的用法…

JDK JVM JRE和Java API的关系

Java SE 英文全称是Java Standared Edition&#xff0c;它是Java的标准版。 Java SE由四部分组成&#xff1a;JDK JVM JRE和Java语言。 1.JDK Java Development Kit Java开发工具包。包含了所有编译&#xff0c;运行Java程序所需要的工具&#xff0c;还包含了Java运行环境&a…

npm改变npm缓存路径和改变环境变量

在安装nodejs时&#xff0c;系统会自动安装在系统盘C&#xff0c; 时间久了经常会遇到C盘爆满&#xff0c;有时候出现红色&#xff0c;此时才发现很多时候是因为npm 缓存保存在C盘导致的&#xff0c;下面就介绍下如何改变npm缓存路径。 1、首先找到安装nodejs的路径&#xff0c…

Linux MMC子系统 - 2.eMMC 5.1总线协议浅析

By: Ailson Jack Date: 2023.10.27 个人博客&#xff1a;http://www.only2fire.com/ 本文在我博客的地址是&#xff1a;http://www.only2fire.com/archives/161.html&#xff0c;排版更好&#xff0c;便于学习&#xff0c;也可以去我博客逛逛&#xff0c;兴许有你想要的内容呢。…

C++项目——云备份-⑥-服务端热点管理模块的设计与实现

文章目录 专栏导读1.热点管理类设计2.热点管理类的实现与整理 专栏导读 &#x1f338;作者简介&#xff1a;花想云 &#xff0c;在读本科生一枚&#xff0c;C/C领域新星创作者&#xff0c;新星计划导师&#xff0c;阿里云专家博主&#xff0c;CSDN内容合伙人…致力于 C/C、Linu…

如何系列 如何玩转远程调用之OpenFegin+SpringBoot(非Cloud)

文章目录 简介原生Fegin示例基础契约日志重试编码器/解码器自定义解码器 请求拦截器响应拦截器表单文件上传支持错误解码器断路器指标metrics客户端 配合SpringBoot&#xff08;阶段一&#xff09;配合SpringBoot&#xff08;阶段二&#xff09;1.EnableLakerFeignClients2.Lak…

vscode不显示横滚动条处理

最近发现vscode打开本地文件不显示水平的滚动条&#xff0c;但是打开一个临时文件是有水平滚动条的。 解决方案 可以一个个试 vscode配置 左下角设置–设置–搜索Scrollbar: Horizontal auto 自动visible 一直展示hidden 一直隐藏 拖动底部状态栏 发现是有的&#xff0c;但是…

UML中类之间的六种主要关系

UML中类之间的六种主要关系: 继承&#xff08;泛化&#xff09;&#xff08;Inheritance、Generalization&#xff09;, 实现&#xff08;Realization&#xff09;&#xff0c;关联&#xff08;Association)&#xff0c;聚合&#xff08;Aggregation&#xff09;&#xff0c;组…

【软考】系统集成项目管理工程师(九)项目成本管理【4分】

一、成本概念 1、产品全生命周期成本 产品或系统的整个使用生命周期内&#xff0c;在获得阶段&#xff08;设计、生产、安装和测试等活动&#xff0c;即项目存续期间&#xff09;、运营与维护、生命周期结束时对产品的处置所发生的全部成本 2、成本类型 成本类型描述可变成…

lossBN

still tips for learning classification and regression关于softmax的引入和作用分类问题损失函数 - MSE & Cross-entropy⭐Batch Normalization&#xff08;BN&#xff09;⭐想法&#xff1a;直接改error surface的landscape&#xff0c;把山铲平feature normalization那…