【kubernetes】k8s集群的简述与搭建

简述

Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序

关键特性

  1. 自动化部署和回滚:Kubernetes 可以自动化地部署和回滚应用程序,确保应用程序始终处于预期的状态。
  2. 服务发现和负载均衡:Kubernetes 提供内置的服务发现和负载均衡功能,确保流量自动分配到健康的容器实例。
  3. 存储编排:Kubernetes 支持挂载本地存储、云存储和网络存储等多种存储系统。
  4. 自我修复:Kubernetes 可以自动重启失败的容器、替换被杀死的容器、以及在节点不可用时重新调度容器。
  5. 水平扩展:Kubernetes 可以根据需求自动扩展或缩减容器实例的数量。

主要组件

  1. Master 节点:
  • API Server:处理 REST 操作,提供集群的统一入口。
  • etcd:分布式键值存储,用于存储集群的所有数据。
  • Controller Manager:负责执行集群的控制逻辑,管理不同的控制器。
  • Scheduler:调度器,负责将容器调度到合适的节点上运行。
  1. 工作节点(Node):
  • Kubelet:运行在每个节点上,负责管理容器的生命周期。
  • Kube-proxy:负责网络代理和负载均衡。
  • 容器运行时:如 Docker 或 containerd,用于实际运行容器。从1.24版本之后不再使用docker作为运行时。

基本概念

  1. Pod:Kubernetes 中的最小部署单元,一个 Pod 可以包含一个或多个容器。
  2. Service:定义了一组 Pod 的访问策略,提供负载均衡和服务发现。
  3. Deployment:用于声明应用的期望状态,负责管理 Pod 的创建和更新。
  4. Namespace:用于将集群资源划分为逻辑上的组,以便不同的项目或团队使用。

搭建

环境准备

可以多节点部署,也可单节点部署。需要注意的是单节点部署要删除污点,否则无法部署应用

主机名IP地址
master192.168.11.122
node192.168.11.127

1、禁用防火墙、selinux、swap

# 禁用防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 禁用selinux
sudo sed -i 's/enforcing/disabled/' /etc/selinux/config  #永久禁用
sudo setenforce 0  # 临时禁用
# 禁用swap
sudo swapoff -a # 临时禁用
sudo sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久禁用

2、将桥接的IPv4流量传递到iptables的链

以下为一条命令,可直接复制执行

cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1 # 开启路由转发
net.bridge.bridge-nf-call-ip6tables = 1 # 开启桥流量监控
net.bridge.bridge-nf-call-iptables = 1 # 开启桥流量监控
EOF
# 生效
sudo sysctl --system  

3、apt 切换国内源

Ubuntu 22.04换国内源 清华源 阿里源 中科大源 163源_ubuntu22阿里源-CSDN博客
系统版本:ubuntu22.04
其他版本可自行搜索,不同版本对应不同的代号

cat > /etc/apt/sources.list << EOF

# 清华源
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

# 阿里源
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

EOF

换源后,更新

apt-get update

4、时间同步

以下有两种方式,可任选其一

  • 安装chrony
## 安装chrony
sudo apt-get update
sudo apt-get install chrony -y
## 启用并启动Chrony服务
sudo systemctl enable chrony
sudo systemctl start chrony

## 检查chrony状态,看时间是否同步
sudo chronyc tracking
  • 安装ntpd
# 安装ntpd
sudo apt-get update
sudo apt-get install ntp

# 启动并启用 ntpd 服务
sudo systemctl start ntp
sudo systemctl enable ntp

# 检查 ntpd 状态
ntpq -p

更换时区

# 查看当前时区
timedatectl status
# 列出可用时区
timedatectl list-timezones
# 过滤时区列表
timedatectl list-timezones | grep Asia

# 更改时区
sudo timedatectl set-timezone Asia/Shanghai

# 验证时区更改
timedatectl status

安装k8s组件(所有节点)

  • kubeadm:用来初始化k8s集群的指令。
  • kubelet:在集群的每个节点上用来启动 Pod 和容器等。
  • kubectl:用来与k8s集群通信的命令行工具,查看、创建、更新和删除各种资源。

官网:安装kubeadm、kubelet和kubectl

方式一:apt安装

1、更新 apt 包索引,安装k8s需要的依赖包

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
  • ca-certificates 是 Linux 系统中一个非常重要的软件包,它包含了一系列的数字证书,这些证书用于验证 HTTPS 连接的安全性
  • apt-transport-https 是一个 APT (Advanced Packaging Tool) 的传输层插件,它允许 APT 通过 HTTPS 协议来获取软件包。

2、下载用于 k8s 软件包仓库的公共签名密钥
如果 /etc/apt/keyrings 目录不存在

sudo mkdir -p -m 755 /etc/apt/keyrings

所有仓库都使用相同的签名密钥,因此你可以忽略URL中的版本:

sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

3、添加 k8s apt 的源列表

  • 注意版本 Kubernetes 1.31 ; 对于其他 Kubernetes 版本,则需要更改
    在这里插入图片描述

  • 此操作会覆盖 /etc/apt/sources.list.d/kubernetes.list 中现存的所有配置

  • 添加之后,直接install不指定版本会默认安装设置的源列表中1.31所有版本中的最新版

sudo echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

4、更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl

执行成功后,可以看到相关依赖安装成功和安装的版本号
在这里插入图片描述

若想安装指定版本,可查询kubelet、kubeadm、kubectl可安装版本的列表

sudo apt-cache madison kubeadm
sudo apt-cache madison kubelet
sudo apt-cache madison kubectl

在这里插入图片描述

方式二:二进制包安装

二进制包地址(注意版本和架构替换),可自行下载或使用curl,wget等工具

地址: https://dl.k8s.io/release/版本/bin/linux/系统架构(amd64或arm64)/(kubeadm,kubelet,kubectl)

我这里使用最新版本,amd64架构

1、kubectl二进制包

https://dl.k8s.io/release/v1.31.3/bin/linux/amd64/kubectl

2、kubeadm二进制包

https://dl.k8s.io/release/v1.31.3/bin/linux/amd64/kubeadm

3、kubelet二进制包

https://dl.k8s.io/release/v1.31.3/bin/linux/amd64/kubelet

4、赋权并配置全局可执行

二进制包下载完成后,是执行文件,赋权

chmod +x kubeadm
chmod +x kubectl
chmod +x kubelet

配置全局可执行

cp kubeadm kubectl kubelet /usr/bin/

5、配置kubelet.service

vim /etc/systemd/system/kubelet.service

修改ExecStart为自己的kubelet的安装目录

[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/kubelet # 注意修改为kubelet执行文件所在目录
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target

设置kubelet开机自启动

sudo systemctl enable kubelet

以上为所有节点的配置,下面进行对master节点的单独配置

配置与初始化(master节点)

1、配置容器运行时(master节点)

官网:Container Runtimes

安装containerd

若安装了docker,可跳过containerd等安装,直接对containerd进行配置,若未安装过可以使用以下方式安装

下载containerd 二进制文件

  • amd64(x86_64)版本
sudo wget https://github.com/containerd/containerd/releases/download/v1.6.12/containerd-1.6.12-linux-amd64.tar.gz
  • arch64(arm64)版本
sudo wget https://github.com/containerd/containerd/releases/download/v1.6.12/containerd-1.6.12-linux-arm64.tar.gz

解压并安装

  • amd64(x86_64)版本
sudo tar -xvf containerd-1.6.12-linux-amd64.tar.gz
  • arch64(arm64)版本
sudo tar -xvf containerd-1.6.12-linux-arm64.tar.gz

将解压后的二进制文件内容移动到 /usr/local/bin 目录

sudo mv bin/* /usr/local/bin/

创建 containerd 的 systemd 服务文件containerd.service,执行一下命令写入配置

cat > /etc/systemd/system/containerd.service << EOF
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target

[Service]
ExecStart=/usr/local/bin/containerd
Restart=always
RestartSec=5
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity

[Install]
WantedBy=multi-user.target
EOF

至此,containerd安装完成,下面进行配置

配置containerd

创建配置文件

sudo mkdir -p /etc/containerd

生成容器运行时的默认配置,写入/etc/containerd/config.toml

sudo containerd config default > /etc/containerd/config.toml

进入配置文件,按ESC,输入"/<关键字>"查询内容

sudo vi /etc/containerd/config.toml
  • 按ESC,进入命令模式。输入"/sandbox_image",找到位置后按Enter选中,按i进入插入模式,修改sandbox_image镜像为国内镜像,这里用的阿里云。若配置了代理可不用切换国内源,直接访问k8s镜像源拉取

    sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.10"
    
  • 按ESC,输入"/SystemdCgroup"查询,修改SystemdCgroup = true,使用 systemd 作为容器的 cgroup 驱动程序

  • 修改完成后按ESC,输入:wq保存退出
    重启containerd,并设置开机自启

    sudo systemctl daemon-reload
    sudo systemctl restart containerd
    sudo systemctl enable containerd
    

2、配置cgroup驱动(master节点)

官网:配置cgroup驱动

方式一:输出默认配置文件,写入kubeadm-config.yaml中
sudo kubeadm config print init-defaults > kubeadm-config.yaml

在这里插入图片描述
配置详解:

kind: InitConfiguration(初始化过程的配置)
localAPIEndpoint.advertiseAddress:设置控制平面节点的广播地址,通常是节点的 IP 地址。
bootstrapTokens 用于配置集群的引导令牌(Bootstrap
Tokens)。在集群初始化时,允许新的节点加入集群。引导令牌是一种短期的、一次性的令牌,通常用于在集群初始化和节点加入过程中进行身份验证。
nodeRegistration.name:设置主节点名称。
nodeRegistration.criSocket:如果你使用的是containerd 而不是 Docker,设置为 “/run/containerd/containerd.sock”。

kind: ClusterConfiguration(集群的配置)
kubernetesVersion:指定 Kubernetes 版本,例如"v1.30.1"。
controlPlaneEndpoint:如果你有高可用性(HA)集群,设置控制平面通信的共享端点,例如 “master节点IP:6443”。
networking.podSubnet:指定 Pod网络的子网范围,例如 “10.244.0.0/16”
controllerManager 和 scheduler: 分别包含了控制器管理器和调度器的额外设置。
etcd:包含了etcd(Kubernetes的后端存储)的配置,可以是本地的也可以是外部的。
imageRepository:如果你使用自定义镜像仓库,设置镜像仓库地址,例如registry.aliyuncs.com/google_containers。

增加KubeletConfiguration的配置,设置cgroup驱动为systemd
在1.22及以上版本中,不设置cgroupDriver会默认为systemd,低版本注意修改。

--- # 分隔
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd # 使用 systemd 作为cgroup 驱动程序

修改配置文件
通过/<关键词>搜索 更改默认配置中的localAPIEndpoint.advertiseAddress地址为节点ip、更改节点名称、切换镜像源为阿里源、指定 Pod 网络的 CIDR地址范围

localAPIEndpoint:
  advertiseAddress: 192.168.11.122 # 主节点的IP
  
nodeRegistration:
  name: master # 主节点的hostname
  
imageRepository: registry.aliyuncs.com/google_containers


networking:
  podSubnet: 10.244.0.0/16 # 指定 Pod 网络的 CIDR(Classless Inter-Domain Routing)地址范围
方式二:最简配置,创建kubeadm-config.yaml,写入以下配置

以下配置版本为1.31。若安装的其他版本可以通过sudo kubeadm config print init-defaults命令,将kubeadm.k8s.io/v1beta4改为其输出的内容中对应的版本即可

apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
kubernetesVersion: stable
controlPlaneEndpoint: "192.168.11.122:6443" # master节点IP:6443
networking:
  podSubnet: "10.244.0.0/16"
imageRepository: registry.aliyuncs.com/google_containers
---
apiVersion: kubeadm.k8s.io/v1beta4
kind: InitConfiguration
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

3、初始化master节点

在kubeadm-config.yaml文件所在目录执行命令

sudo kubeadm init --config kubeadm-config.yaml

集群创建成功,执行提示命令,创建集群配置文件,开始使用集群
在这里插入图片描述

需要注意的是:
直接执行export KUBECONFIG=/etc/kubernetes/admin.conf命令是有时效性的,关闭终端立即失效 ,所以也可在root用户执行命令创建配置文件

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

或者将export KUBECONFIG=/etc/kubernetes/admin.conf 放入shell配置文件~/.bashrc或~/.zshrc

稍等30s执行命令查看节点

kubectl get nodes

这个过程中可能遇到的问题 :【解决】k8s使用kubeadm初始化集群失败问题整理

工作节点加入集群(node节点)

主节点初始化集群成功后,会提示工作节点的加入命令,复制到工作节点执行即可(此处替换自己的)

kubeadm join 192.168.11.122:6443 --token abcdef.0123456789abcdef \
	--discovery-token-ca-cert-hash sha256:036843071148c8f7700062c2438b35c86b0dc5754011829b5cf83bb9379d88fa 

此命令为集群初始化时生成的,toke有效期有限,后面加入集群,可执行以下命令:

1、在master节点获取 Join 命令
首先,你需要从集群的master节点获取 kubeadm join 命令。执行以下命令来获取:

kubeadm token create --print-join-command

这将输出一个 kubeadm join 命令

kubeadm join 192.168.11.122:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

2、在工作节点上运行 输出的Join 命令
node工作节点上运行控制台输入的Join 命令,等待执行完成

节点成功加入集群

3、验证节点是否加入集群
在主节点上运行以下命令,验证工作节点是否成功加入集群:

kubectl get nodes

能够看到新加入的节点出现在节点列表中
在这里插入图片描述

至此,集群创建并加入工作节点成功,接下来继续在master节点安装部署需要的组件

安装网络插件flannel

下载地址: kube-flannel.yml

可直接下载到本机,复制到远程

scp  本地文件路径 user@ip:远程路径

或者使用wget、curl等工具下载

sudo wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

下载完成后,部署到集群

kubectl apply -f kube-flannel.yml

等待flannel拉取必要组件镜像并完成初始化,查看所有组件的状态,必须全部Running才行

kubectl get pods --all-namespaces

所有命名空间的pod状态

这个过程中可能遇到的问题 :【解决】k8s使用flannel网络插件的问题整理

初始化PV、PVC

创建pv.yaml配置文件

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-pv
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: manual
  hostPath:
    path: "/mnt/data"    

pvc.yaml配置文件

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: manual

部署pv和pvc

kubectl apply -f pv.yaml
kubectl apply -f pvc.yaml

验证pv和pvc

kubectl get pv
kubectl get pvc

在这里插入图片描述

在 Kubernetes (K8s) 中,持久卷 (Persistent Volume, PV) 和持久卷声明 (Persistent Volume Claim, PVC) 是用于管理持久存储的资源。

它们的主要目的是为容器化应用提供持久化存储,以便在 Pod重启或重新调度时数据不会丢失。

安装 ingress

来自: https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.1/deploy/static/provider/cloud/deploy.yaml

注意上面内容的ingress.yaml 复制下来后,需要设定 ingress 的外部地址:

按ESC进入命令模式,输入/kind: Service搜索,按Enter后,N查找下一个,找到Service 中name为ingress-nginx-controller的配置项,在该配置的最下方加入:

  externalIPs: 
    - 服务器ip

在这里插入图片描述

部署ingress

kubectl apply -f ingress.yaml

创建默认的 ingressCllass 配置文件ingress-class.yaml

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: k8s.io/ingress-nginx

部署 ingressClass

kubectl apply -f ingress-class.yaml

删除污点

如果是单节点部署,需要删除污点,否则无法部署运行应用 pod

kubectl taint nodes --all node-role.kubernetes.io/master-
kubectl taint nodes --all node-role.kubernetes.io/control-plane-

部署安装应用

示例

编写my-dockerfile-nginx.yaml文件

此文件主要是定义了一个 K8s 服务(Service)和一个部署(Deployment),用于运行一个基于 Nginx 的应用

apiVersion: v1
kind: Service
metadata:
  name: my-dockerfile-nginx
spec: 
  ports:
    - port: 8081 # 对外暴露的端口
      targetPort: 80 # Nginx 内部监听的端口
      nodePort: 31111  # NodePort访问端口
  type: NodePort   # NodePort类型的Service,可以通过Node的IP和NodePort访问到Service   
  selector:
    app: my-dockerfile-nginx
---   
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-dockerfile-nginx
  labels:
    app: my-dockerfile-nginx
spec:
  replicas: 1 # 副本数
  selector:  # 选择器,用于选择replicas生效的Pod
    matchLabels:
      app: my-dockerfile-nginx
  template:
    metadata:
      labels:
        app: my-dockerfile-nginx
    spec:
      containers:
      - name:  my-dockerfile-nginx
        image: liuhp6903/my-dockerfile-nginx:latest # 应用的镜像
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          protocol: TCP

部署到集群

kubectl apply -f my-dockerfile-nginx.yaml -n <指定namespace>

不指定命名空间,会部署到默认命名空间

等待pod创建并running,可以通过节点IP:nodePort在外部进行访问

在这里插入图片描述

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

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

相关文章

华为USG系列防火墙 RESTCONF NAT配置 Python实现

目录 前言 文档下载 开启RESTCONF接口 Python 实现SNAT增删改查 查看nat映射列表 查看私网地址池 查看源地址池&#xff08;公网&#xff09; 查看nat映射规则 创建nat映射规则 创建私网地址池 创建源地址池 创建nat映射规则 修改NAT映射规则 删除NAT映射规则 …

token失效重新存储发起请求

import axios from axios import { MessageBox, Message } from element-ui import store from /store import Router from /router import { getCookie, setToken, setCookie } from ./auth// 因为后端环境区分v1 v2 剔除测试盛传的环境配置&#xff0c;并添加统一前缀 const …

HTML综合

一.HTML的初始结构 <!DOCTYPE html> <html lang"en"><head><!-- 设置文本字符 --><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 设置网页…

【合作原创】使用Termux搭建可以使用的生产力环境(六)

前言 在上一篇【合作原创】使用Termux搭建可以使用的生产力环境&#xff08;五&#xff09;-CSDN博客我们讲到了如何美化xfce4桌面&#xff0c;达到类似于Windows的效果&#xff0c;这一篇将继续在上一篇桌面的基础上给我们的系统装上必要的软件&#xff0c;让它做到真正可以使…

python3中幂怎么表示

首先导入math模块&#xff0c;然后调用pow()函数&#xff0c;即可实现幂运算&#xff0c;示例如下&#xff1a; import math math.pow(2&#xff0c;3) 结果如下&#xff1a; 8

AES笔记整理

文章目录 1. 简介2. 密钥加法层2. 字节代换层3. 行位移 - ShiftRows4. 列混淆 - MixColumn5. 其他5.1列混淆矩阵乘法运算5.2 AES密钥生成 6. 参考资料 以下内容为信息安全开发过程中&#xff0c;AES对称加密算法的笔记&#xff0c;大部分内容转载其他文章&#xff0c;若描述不清…

elementUI修改table样式

在Vue项目中&#xff0c;如果使用的是单文件组件&#xff08;.vue&#xff09;&#xff0c;并且样式是通过<style>标签定义的&#xff0c;vue2可以使用/deep/&#xff0c;vue3可以使用::v-deep选择器来修改ElementUI组件的样式。 1.修改表头背景色 /deep/.el-table__head…

【WiFi】WiFi中RSSI、SNR、NF之间关系及说明

RSSI&#xff08;接收信号强度指示&#xff09; 定义&#xff1a; RSSI 是一个相对值&#xff0c;用于表示接收到的无线信号的强度。它通常由无线设备的硬件&#xff08;如无线网卡或无线芯片&#xff09;直接提供。 计算&#xff1a; RSSI 的计算通常是由设备的无线芯片完成的…

爬虫基础知识点

最近看了看爬虫相关知识点&#xff0c;做了记录&#xff0c;具体代码放到了仓库&#xff0c;本文仅学习使用&#xff0c;如有违规请联系博主删除。 这个流程图是我使用在线AI工具infography生成的&#xff0c;这个网站可以根据url或者文本等数据自动生成流程图&#xff0c;挺…

路由引入问题(双点双向路由回馈问题)

简介 总所周知&#xff0c;路由引入import又称路由重分发redistribute&#xff0c;为了解决不同路由协议进程间路由信息不互通而使用的技术&#xff0c;由于不同路由协议的算法、机制、开销等因素的差异&#xff0c;它们之间无法直接交换路由信息。因此&#xff0c;路由引入技…

LAVE——基于大语言模型的新型代理辅助视频编辑工具允许用户根据自己的编辑风格进行调整

概述 论文地址&#xff1a;https://arxiv.org/abs/2402.10294 视频是一种非常强大的交流和讲述故事的媒介。随着社交媒体和视频共享平台的出现&#xff0c;视频的受欢迎程度直线上升&#xff0c;许多人都在制作和分享自己的内容。然而&#xff0c;对于初学者来说&#xff0c;视…

Java安全—SpringBootActuator监控泄露Swagger自动化

前言 今天依旧是SpringBoot框架&#xff0c;估计还要一篇文章才能把它写完&#xff0c;没办法&#xff0c;Java安全的内容太多了。 Actuator SpringBoot Actuator模块提供了生产级别的功能&#xff0c;比如健康检查&#xff0c;审计&#xff0c;指标收集&#xff0c;HTTP跟踪…

docker快速实现ELK的安装和使用

目录 一、ELK功能原理 二、项目功能展示​ 三、日志查询展示​ 四、ELK安装步骤 1、创建elasticsearch、kibana、filebeat相关data、log、conf目录 2、进入/usr/local/elk目录&#xff0c;并创建一个docker网络 3、启动 elasticsearch容器 4、运行kibana容器 5、启动f…

【Spark】Spark Join类型及Join实现方式

如果觉得这篇文章对您有帮助&#xff0c;别忘了点赞、分享或关注哦&#xff01;您的一点小小支持&#xff0c;不仅能帮助更多人找到有价值的内容&#xff0c;还能鼓励我持续分享更多精彩的技术文章。感谢您的支持&#xff0c;让我们一起在技术的世界中不断进步&#xff01; Sp…

从YOLOv5到训练实战:易用性和扩展性的加强

文章目录 前言一、模型介绍二、YOLOv5网络结构1.Input&#xff08;输入端&#xff09;&#xff1a;智能预处理与优化策略2.Backbone&#xff08;骨干网络&#xff09;&#xff1a;高效特征提取3.NECK&#xff08;颈部&#xff09;&#xff1a;特征增强与多尺度融合4.Prediction…

Java爬虫设计:淘宝商品详情接口数据获取

1. 概述 淘宝商品详情接口&#xff08;如Taobao.item_get&#xff09;允许开发者通过编程方式&#xff0c;以JSON格式实时获取淘宝商品的详细信息&#xff0c;包括商品标题、价格、销量等。本文档将介绍如何设计一个Java爬虫来获取这些数据。 2. 准备工作 在开始之前&#x…

AIGC 013-CoT用思维链挖掘自回归语言模型的潜在能力

AIGC 013-CoT用思维链挖掘自回归语言模型的潜在能力 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 纯自回归式语言模型&#xff0c;本来并不具备优秀推理能力&#xff0c;特别是在数学问题的推理。但是现在的生成模型是能实现一些数学的推理的。研究者认为当模型足够大…

上传文件时获取音视频文件时长和文本文件字数

获取音视频文件时长和文本文件字数 一、获取音视频文件时长二、计算文本文件字数 最近有个需求&#xff0c;要求上传文件时获取音视频文件时长和文本文件字数&#x1f436;。 发现这样的冷门资料不多&#xff0c;特做个记录。本文忽略文件上传功能&#xff0c;只封装核心的工具…

ue5.2 数字孪生(11)——Web_UI插件网页通信

Web_UI插件下载安装&#xff1a; https://github.com/tracerinteractive/UnrealEngine/releases 下载对应Ue版本的Web_UI插件以及相关的Json、Http库&#xff1b; 将插件安装到引擎根目录 Ue链接Web&#xff1a; 在项目中启用插件并重启项目&#xff1b; 创建基于Web的用户…

postman可以通的请求,前端通不了(前端添加Content-type,后端收不到请求)

接口完成之后,自己使用postman测试了一下,没有问题; 可是在和小组前端调试接口的时候,他却说访问不了; 信息如下:(我自己写的一个打印请求信息的拦截器) 发现报错信息是: Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported 也就是说…