1-k8s1.24-底座搭建-基于containerd

news2024/11/25 14:58:02

文章目录

    • 一、服务器准备
    • 二、安装Containerd
    • 三、安装k8s
    • 四、安装部署dashboard

ps:第一遍搭建ks8的时候,由于k8s在1.24版本之后就放弃了对docker的支持,如果要继续使用docker需要自己加载插件。所以一开始就是直接使用 k8s1.24+containerd进行搭建。
后续相关的文章,原来是基于 k8s1.24+containerd操作编写的。但是。搭建过程中发现相对于 k8s1.24+containerd组合,网上查阅资料相对较少。所以后来就回退到 k8s1.23.6+docker重新实操一遍,重新整了下文档。不过也只是改变了底层的容器使用方式,后续的文章操作大体上对container也是适用的。
个人觉得docker现在还行,如果习惯使用docker的,可以继续使用8s1.24之前的版本,功能够用就行。

一、服务器准备

  1. as asdf 服务器准备

    服务器名称服务器IP角色CPU(最低要求)内存(最低要求)
    master192.168.248.10master2核2G
    worker1192.168.248.11node2核2G
    worker2192.168.248.12node2核2G
  2. 修改ip:vi /etc/sysconfig/network-scripts/ifcfg-ens33

  3. 修改主机名:hostnamectl set-hostname master

  4. 修改主机名与ip映射:vi /etc/hosts

    192.168.248.10 master
    192.168.248.11 worker1
    192.168.248.12 worker2
    
  5. 重置网络:service network restart

  6. 关闭防火墙:systemctl stop firewalld

二、安装Containerd

ps:本文章所有的配置,没有提示的默认三台都要配置

  1. 下载安装包:https://github.com/containerd/containerd/releases/download/v1.4.12/cri-containerd-cni-1.4.12-linux-amd64.tar.gz

  2. 创建文件夹:mkdir /opt/cri-containerd-cni

  3. 上传文件夹并且解压:tar -xvf cri-containerd-cni-1.4.12-linux-amd64.tar.gz

  4. 将解压的文件,复制到系统的配置目录和执行目录

    cp -a /opt/cri-containerd-cni/etc/systemd/system/containerd.service /etc/systemd/system
    cp -a /opt/cri-containerd-cni/etc/crictl.yaml /etc
    cp -a /opt/cri-containerd-cni/etc/cni /etc
    cp -a /opt/cri-containerd-cni/usr/local/sbin/runc /usr/local/sbin
    cp -a /opt/cri-containerd-cni/usr/local/bin/* /usr/local/bin
    cp -a /opt/cri-containerd-cni/opt/* /opt
    
  5. 启动containerd

    systemctl daemon-reload
    systemctl enable containerd --now 
    
  6. 创建文件夹:mkdir /etc/containerd

  7. 配置containerd:containerd config default | tee /etc/containerd/config.toml

  8. 修改配置文件:/etc/containerd/config.toml

    1. 修改配置:sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2"
    2.[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]下面加一行
       SystemdCgroup = true
    3.[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]替换成下面三行
       endpoint = ["https://bh9y01q2.mirror.aliyuncs.com"]
       [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
       endpoint = ["https://registry.cn-hangzhou.aliyuncs.com/google_containers"]  
       
    弃用:endpoint = ["https://docker.mirrors.ustc.edu.cn"]
    

    ps:endpoint = [“https://bh9y01q2.mirror.aliyuncs.com”],这个地址可以自己取阿里云注册使用

    1)登录阿里云:https://www.aliyun.com/

    2)获取平台分配的镜像加速地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

    在这里插入图片描述
    在这里插入图片描述

  9. 重启containerd

    systemctl daemon-reload
    systemctl restart containerd
    
  10. 安装nerdctl

    1)概念

    nerdctl是containerd原生的命令行管理工具。和Docker的命令行兼容
    nerdctl管理的容器、镜像与Kubernetes的容器、镜像是完全隔离的,不能互通。目前只能通过crictl命令行工具来查看、拉取Kubernetes的容器、镜像
    nerdctl和containerd的版本对应关系,参考:https://github.com/containerd/nerdctl/blob/v0.6.1/go.mod
    

    2)下载安装包:https://github.com/containerd/nerdctl/releases/download/v0.6.1/nerdctl-0.6.1-linux-amd64.tar.gz

    3)创建文件夹:mkdir /opt/nerdctl

    4)上传并且解压:tar -xvf nerdctl-0.6.1-linux-amd64.tar.gz

    5)拷贝:cp -a /opt/nerdctl/nerdctl /usr/bin

    6)查看镜像:nerdctl images

    ​ ps: nerdctl run -p containerPort:hostPort的端口映射无效,只能通过nerdctl run -net host来实现

  11. 安装crictl

    1)概念:crictl是Kubernetes用于管理Containerd上的镜像和容器的一个命令行工具,主要用于Debug

    2)下载:https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.24.0/crictl-v1.24.0-linux-amd64.tar.gz

    3)创建文件夹:mkdir /opt/crictl

    4)解压:tar -zxvf crictl-v1.24.0-linux-amd64.tar.gz -C /usr/local/bin

    5)创建crictl的配置文件:vi /etc/crictl.yaml

    runtime-endpoint: unix:///var/run/containerd/containerd.sock
    image-endpoint: unix:///var/run/containerd/containerd.sock
    timeout: 10
    debug: false
    pull-image-on-create: false
    

    6)加载:systemctl daemon-reload

    7)测试:crictl images

  12. 安装buildkit

    1)概念:使用nerdctl build进行Dockerfile的镜像构建时,报缺少buildkit,所以需要进行安装

    ​ ps:buildkit和containerd的版本对应关系,参考:https://github.com/moby/buildkit/blob/v0.8.3/go.mod

    2)下载安装包:https://github.com/moby/buildkit/releases/download/v0.8.3/buildkit-v0.8.3.linux-amd64.tar.gz

    3)创建文件夹:mkdir /opt/buildkit

    4)解压:tar -xvf buildkit-v0.8.3.linux-amd64.tar.gz

    5)拷贝:cp -a bin /usr/local

    6)编写buildkitd的启动文件:vi /etc/systemd/system/buildkit.service

    [Unit]
    Description=BuildKit
    Documentation=https://github.com/moby/buildkit
    
    [Service]
    ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true
    
    [Install]
    WantedBy=multi-user.target
    

    7)启动buildkitd服务端程序:systemctl enable buildkit --now

三、安装k8s

ps:本文章所有的配置,没有提示的默认三台都要配置

  1. 禁用selinux

    [root@localhost ~]# setenforce 0 
    [root@localhost ~]# getenforce
    Permissive
    

    ps:永久禁用方法(需重启服务器)

    sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
    
  2. 关闭swap:wapoff -a

    ps1:swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用。但是会对系统性能产生影响。所以这里需要关闭。如果不能关闭,则在需要修改集群的配置参数

    ps2:永久关闭方法,需重启服务器

    sed -ri 's/.*swap.*/#&/' /etc/fstab
    
  3. 查看:free -m

    在这里插入图片描述

  4. bridged网桥设置

    1)概念:为了让服务器的iptables能发现bridged traffic,需要添加网桥过滤和地址转发功能

    2)新建modules-load.d/k8s.conf文件:vi /etc/modules-load.d/k8s.conf

    overlay
    br_netfilter
    

    3)新建sysctl.d/k8s.conf文件:vi /etc/sysctl.d/k8s.conf

    net.bridge.bridge-nf-call-ip6tables = 1
    net.ipv4.ip_forward                 = 1
    net.bridge.bridge-nf-call-iptables = 1
    

    4)加载配置文件:sysctl --system

    5)加载br_netfilter网桥过滤模块 :modprobe br_netfilter

    6)加载网络虚拟化技术模块:modprobe overlay

    7)检验网桥过滤模块是否加载成功:lsmod | grep -e br_netfilter -e overlay
    在这里插入图片描述

  5. 配置IPVS

    1)概念:service有基于iptables和基于ipvs两种代理模型。基于ipvs的性能要高一些。需要手动载入才能使用ipvs模块

    2)安装ipset和ipvsadm:yum install ipset ipvsadm

    3)新建脚本文件:vi /etc/sysconfig/modules/ipvs.modules

    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack_ipv4
    

    4)添加执行权限给脚本文件,然后执行脚本文件

    chmod +x /etc/sysconfig/modules/ipvs.modules
    /bin/bash /etc/sysconfig/modules/ipvs.modules
    

    5)检验模块是否加载成功:lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    在这里插入图片描述

  6. 安装kubelet、kubeadm、kubectl

    1)添加yum源:vi /etc/yum.repos.d/kubernetes.repo

    [kubernetes]
    name=Kubernetes
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
    enabled=1
    gpgcheck=0
    repo_gpgcheck=0
    gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
    

    2)下载:yum install -y --setopt=obsoletes=0 kubelet-1.24.0 kubeadm-1.24.0 kubectl-1.24.0

    3)配置: systemctl enable kubelet --now

    4)相关概念

    1. obsoletes等于1表示更新旧的rpm包的同时会删除旧包,0表示更新旧的rpm包不会删除旧包
    2. kubelet启动后,可以用命令journalctl -f -u kubelet查看kubelet更详细的日志
    3. kubelet默认使用systemd作为cgroup driver
    4. 启动后,kubelet现在每隔几秒就会重启,因为它陷入了一个等待kubeadm指令的死循环
    
  7. 下载各个机器需要的镜像

    1)查看集群所需镜像的版本:kubeadm config images list

    2)创建文件夹:mkdir /opt/k8s

    3)创建文件:vi /opt/k8s/images.sh

    #!/bin/bash
    
    images=(
    kube-apiserver:v1.24.0
    kube-controller-manager:v1.24.0
    kube-scheduler:v1.24.0
    kube-proxy:v1.24.0
    pause:3.7
    etcd:3.5.3-0
    coredns:v1.8.6
    )
    for imageName in ${images[@]} ; do
    crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    done
    
    kube-apiserver:v1.24.0  #接口服务,给予rest风格开放k8s的接口服务
    kube-controller-manager:v1.24.0 #控制管理器,管理各个类型的控制器,针对k8s中的各个资源进行管理
    kube-scheduler:v1.24.0 #调度器,将pod根据一定的算法调用到合适的节点上
    kube-proxy:v1.24.0 #网络代理,负责service的服务发现负载均衡
    pause:3.7
    etcd:3.5.3-0 #理解为ks的数据库,键值类型存储的分布式数据库,提供了基于Raft算法实现自主的集群高可用。老版本:基于内存。新版本:持久化存储
    coredns:v1.8.6 #网络配置
    

    4)赋权: chmod +x /opt/k8s/images.sh

    5)执行下载: /opt/k8s/images.sh

  8. 初始化主节点(只在master节点执行)

    kubeadm init --apiserver-advertise-address=192.168.248.10 --control-plane-endpoint=master --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.24.0 --service-cidr=10.96.0.0/16 --pod-network-cidr=192.169.0.0/16 
    

    ps:–pod-network-cidr跟主机网络必须不同

    ps:将最后一段标黑的保存,后续使用

    在这里插入图片描述

    参数说明

    	  --apiserver-advertise-address string   设置 apiserver 绑定的 IP.
          --apiserver-bind-port int32            设置apiserver 监听的端口. (默认 6443)
          --apiserver-cert-extra-sans strings    api证书中指定额外的Subject Alternative Names (SANs) 可以是IP 也可以是DNS名称。 证书是和SAN绑定的。
          --cert-dir string                      证书存放的目录 (默认 "/etc/kubernetes/pki")
          --certificate-key string                kubeadm-cert secret 中 用于加密 control-plane 证书的key
          --config string                         kubeadm 配置文件的路径.
          --cri-socket string                    CRI socket 文件路径,如果为空 kubeadm 将自动发现相关的socket文件; 只有当机器中存在多个 CRI  socket 或者 存在非标准 CRI socket 时才指定.
          --dry-run                              测试,并不真正执行;输出运行后的结果.
          --feature-gates string                 指定启用哪些额外的feature 使用 key=value 对的形式。
      	  --help  -h                             帮助文档
          --ignore-preflight-errors strings       忽略前置检查错误,被忽略的错误将被显示为警告. 例子: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks.
          --image-repository string              选择拉取 control plane images 的镜像repo (default "k8s.gcr.io")
          --kubernetes-version string            选择K8S版本. (default "stable-1")
          --node-name string                     指定node的名称,默认使用 node 的 hostname.
          --pod-network-cidr string              指定 pod 的网络, control plane 会自动将 网络发布到其他节点的node,让其上启动的容器使用此网络
          --service-cidr string                  指定service 的IP 范围. (default "10.96.0.0/12")
          --service-dns-domain string            指定 service 的 dns 后缀, e.g. "myorg.internal". (default "cluster.local")
          --skip-certificate-key-print            不打印 control-plane 用于加密证书的key.
          --skip-phases strings                  跳过指定的阶段(phase)
          --skip-token-print                     不打印 kubeadm init 生成的 default bootstrap token 
          --token string                         指定 node 和control plane 之间,简历双向认证的token ,格式为 [a-z0-9]{6}\.[a-z0-9]{16} - e.g. abcdef.0123456789abcdef
          --token-ttl duration                   token 自动删除的时间间隔。 (e.g. 1s, 2m, 3h). 如果设置为 '0', token 永不过期 (default 24h0m0s)
          --upload-certs                         上传 control-plane 证书到 kubeadm-certs Secret.
    

    ps:如果想要回退,可执行以下指令

    kubeadm reset -f
    rm -rf /etc/kubernetes
    rm -rf /var/lib/etcd/
    rm -rf $HOME/.kube
    
  9. 查看状态:systemctl status kubelet
    在这里插入图片描述

    ps:如果报错,可以使用journalctl -xefu kubelet看下哪里的问题

  10. 设置.kube/config(只在master执行)

    1)mkdir -p $HOME/.kube

    2)cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

    3)chown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config

  11. 安装网络插件calico(只在master执行)

    1)切换目录:cd /opt/k8s

    2)下载:curl https://docs.projectcalico.org/archive/v3.19/manifests/calico.yaml -O

    3)修改内容,其中value为上一步的–pod-network-cidr的ip

    - name: CALICO_IPV4POOL_CIDR
    value: "192.169.0.0"
    

    4)查看需要的镜像:cat calico.yaml | grep image
    在这里插入图片描述

    5)编辑镜像下载文件:vi /opt/calicoImages.sh

    #!/bin/bash
    
    images=(
    docker.io/calico/cni:v3.19.4
    docker.io/calico/pod2daemon-flexvol:v3.19.4
    docker.io/calico/node:v3.19.4
    docker.io/calico/kube-controllers:v3.19.4
    )
    for imageName in ${images[@]} ; do
    crictl pull $imageName
    done
    

    6)赋权:chmod +x /opt/calicoImages.sh

    7)执行:/opt/calicoImages.sh

    8)部署calico(只在master执行):kubectl apply -f calico.yaml

    9)此时查看master的状态:kubectl get pods -A

    在这里插入图片描述

    10)kubectl get nodes

    在这里插入图片描述

  12. 加入node节点(只在node执行)

    1)执行:kubeadm join master:6443 --token x3mk8z.fzaqp9swqxl2o6r3 --discovery-token-ca-cert-hash sha256:f4ced0c25b14a796e02b3300b011f7ec8e120c01e95595d78b6d1b38b8805dfc

    2)令牌有效期24小时,可以在master节点生成新令牌命令: kubeadm token create --print-join-command

    3)查看master的状态:kubectl get pods -A
    在这里插入图片描述

    4)kubectl get nodes
    在这里插入图片描述

    5)拷贝主节点文件使node节点可以执行kubectl命令:scp -r H O M E / . k u b e w o r k e r 1 : HOME/.kube worker1: HOME/.kubeworker1:HOME

    ​ ps:拷贝完,自行在node节点测试kubectl命令

    6)将主节点中的/etc/kubernetes/admin.conf文件拷贝到从node节点相同目录下

    7)导入环境

    echo export KUBECONFIG=/etc/kubernetes/admin.conf >> ~/.bash_profile
    source ~/.bash_profile
    

四、安装部署dashboard

ps:只在master执行

  1. dashboard和kubernetes的版本对应关系,参考:https://github.com/kubernetes/dashboard/blob/v2.5.1/go.mod

  2. 下载镜像:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml

    ps:会下载kubernetesui/dashboard:v2.5.1、kubernetesui/metrics-scraper:v1.0.7两个镜像

  3. 定时刷新查看进度:watch -n 3 kubectl get pods -A
    在这里插入图片描述

  4. 设置访问端口:kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

    将type: ClusterIP改为:type: NodePort
    添加 nodePort: 32414
    

在这里插入图片描述

  1. 查看端口命令:kubectl get svc -A | grep kubernetes-dashboard

  2. 访问dashborad页面:https://192.168.248.11:32414,如下所示
    在这里插入图片描述

  3. 创建访问账号

    1)vi /opt/dash.yaml

    创建用户–》申明角色–》用户和角色绑定

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: admin-user
      namespace: kubernetes-dashboard
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: admin-user
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: admin-user
      namespace: kubernetes-dashboard
    

    2)应用:

    3)获取访问令牌: kubectl -n kubernetes-dashboard create token admin-user

    4)将获取的token填入页面登录即可
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

COMPFEST 15 - Preliminary Online Mirror I. Imagination Castle(dp递推+sg函数思想)

题目 n*m(1<n,m<2e5)的棋盘&#xff0c;有k(k<min(n*m,2e5))个特殊位置&#xff0c; 初始时在(1,1)位置&#xff0c;Chaneka和Bhinneka两人玩游戏&#xff0c;Chaneka先手&#xff0c; 当你在(x,y)位置时&#xff0c;下一步可以走到同一行靠右的位置(xx,y>y)或同…

格式化前做好备份,内存卡数据安全无忧

内存卡格式化会怎么样&#xff1f;了解格式化原理的小伙伴都明白&#xff0c;格式化操作会清除内存卡上的所有数据&#xff0c;包括文档、照片、视频等文件。 因此&#xff0c;在格式化内存卡之前&#xff0c;我们需要将重要的数据进行备份以免丢失。那么&#xff0c;内存卡格式…

408-2015

一、单项选择题 1.已知程序如下。 int S(int n){return n<0?0:s(n-1)n; } void main(){cout<<S(1); }程序运行时使用栈来保存调用过程的信息&#xff0c;自栈底到栈顶保存的信息依次是_____。 A.main()->S(1)->S(0) B.S(0)->S(1)->main() …

uniapp安卓 华为商店 vivo商店 oppo 小米 上架问题 Android中怎么才能不提前申请权限

问题描述 提交 小米 oppo 市场审核失败&#xff0c;原因是提前向用户申请开启通讯录、定位、短信、录音、相机和日历等权限。 解决方案&#xff1a; 是否有使用 READ_PHONE_STATE 权限&#xff0c;如果有使用 oaid 代替&#xff1b;是否有使用第三方 SDK&#xff0c;如果有关…

RPA厂商有哪些?国内头部5家RPA厂商的分析对比

一、RPA是什么&#xff1f; 能模拟人工进行鼠标点击键盘输入、读取信息等操作&#xff0c;实现电脑和手机上各种软件的自动化。 快速搭建任何自动化流程&#xff0c;在工作中&#xff0c;一切重复有规则的事情都可以用RPA来实现自动化。 二、RPA能帮助政企解决什么问题&#…

【百家稷学】人才强企数字化赋能人工智能深度培训(中国联通集团实训)

继续咱们百家稷学专题&#xff0c;本次是有三AI在中国联通集团进行的系统性培训。百家稷学专题的目标&#xff0c;是走进100所高校和企业进行学习与分享。 分享主题 本次分享是在中国联通集团山西邮电学院进行&#xff0c;由51CTO负责组织&#xff0c;主题是《人才强企数字化赋…

外部统一设置了::-webkit-scrollbar { display: none; }如何单独给特定元素开启滚动条设置样式-web页面滚动条样式设置

如果你在外部统一设置了​​::-webkit-scrollbar { display: none; }​​​来隐藏滚动条&#xff0c;但是想要在​​.lever​​元素中单独开启滚动条的样式&#xff0c;你可以使用CSS的级联选择器来覆盖外部样式。 以下是一个示例&#xff0c;展示如何给​​.lever​​单独开启…

linux centos7提示 cannot found font installed on the system.calibri

主图 目录 1.问题描述2.问题解决2.1安装Microsoft Core Fonts2.2手动安装字体文件&#xff1a;2.3查看当前系统基本型细腻 总结参考 文章所属专区 超链接 1.问题描述 linux centos7提示 cannot found font installed on the system.calibri &#xff0c;linux系统找不到cali…

226、翻转二叉树

题目链接&#xff1a; \sf 题目链接&#xff1a; 题目链接&#xff1a; 图解&#xff1a; 方法一、 D F S \sf 方法一、DFS 方法一、DFS 递归&#xff1a; 让左子树是翻转后的右子树&#xff0c; 右子树是翻转后的左子树。 ∴从叶结点开始&#xff0c;自底向上逐步翻转。递归出…

2023年中国超硬材料制品分析及超硬刀具市场规模分析[图]

超硬材料是指硬度特别高的材料&#xff0c;可分为天然以及人造两种&#xff0c;前者主要包括天然的钻石&#xff08;金刚石&#xff09;、黑钻石&#xff0c;后者则包括人造金刚石、立方氮化硼。 超硬材料制品分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#x…

轨迹规划 | 图解动态窗口算法DWA(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 动态障碍建模2 DWA基本原理2.1 采样窗口2.2 评价函数 3 DWA算法流程4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(…

文案配音软件哪个好?(适合新手使用)

随着短视频的逐渐普及&#xff0c;视频博主越来越多&#xff0c;所以很多朋友也期待成为视频博主。但是&#xff0c;如果你想成为一个有名的视频博主&#xff0c;你需要在很多层面上比别人做得更好。其中之一就是视频文字的配音。相信大部分人都没有配音的技巧&#xff0c;所以…

mybatis plus MetaObjectHandler 不生效

首先要知道,spring boot 只会加载启动类同级和下级的bean 如果把bean放在启动类不同的上级目录,是加载不了bean的 如果把mybatisplus的配置文件放在与启动类不同包,就会扫描不到 例如放在这里,就扫描不到 放到这里,就可以扫描到

部署云端SIEM解决方案的5个优势

随着组织迅速转向云端以利用云计算的优势&#xff0c;包括SIEM&#xff08;安全信息与事件管理&#xff09;在内的服务也正在向云端迁移。事实上&#xff0c;SIEM即服务正在迅速崭露头角&#xff0c;成为传统的本地SIEM解决方案的替代品。在Gartner的《采用SaaS SIEM前需回答的…

数学知识总结

素数 质数/素数定义 在大于1的整数中&#xff0c;如果只包含1和本身这两个约数&#xff0c;就被称为质数&#xff0c;或者叫素数 判断素数&#xff08;试除法&#xff09; 约数有一个重要的性质&#xff1a; 假设n代表数字&#xff0c;d代表n的一个约数 即d能整除n(d|n) 那么n…

visual studio安装时候修改共享组件、工具和SDK路径方法

安装了VsStudio后,如果自己修改了Shared路径&#xff0c;当卸载旧版本&#xff0c;需要安装新版本时发现&#xff0c;之前的Shared路径无法进行修改&#xff0c;这就很坑爹了&#xff0c;因为我运行flutter程序的时候&#xff0c;报错找不到windows sdk的位置&#xff0c;所以我…

Windows用VM虚拟机安装MacOS Ventura 13.6系统全流程教程(附资源)

安装成果&#xff1a; 所需容量&#xff1a;至少40GB的硬盘空间&#xff0c;推荐80GB以上。 所需资源 VMware虚拟机激活密钥&#xff1a;VMware Workstation Pro 17.0.2MacOS Ventura 13.6的ISO镜像MacOS的解锁工具卡顿优化工具&#xff1a;beamoff 有人反馈说需要能用的ISO镜…

mysql中特殊字符存储,如表情字符

一.问题&#xff1a;出现下面异常说明是不能存储特殊字符 ### Cause: java.sql.SQLException: Incorrect string value: \xF0\x9F\x98\x81 for column column1 at row 1 ; uncategorized SQLException; SQL state [HY000]; error code [1366]; Incorrect string value: \xF0\x…

UPS 原理和故障案例分享

摘要:不间断电源UPS (Uninterruptible Power System)&#xff0c;主要是由整流器、 逆变器、静态旁路和储能装置等组成;具备高可靠性、高可用性和高质量的独立 电源。通过对收集的 UPS 故障案例进行分析&#xff0c;从施工&#xff0c;调试和运行三个方面筛选 出四个故障案例与…

构建高效问题解答平台:使用Cpolar和Tipas在Ubuntu上搭建专属问答网站

文章目录 前言2.Tipask网站搭建2.1 Tipask网站下载和安装2.2 Tipask网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3 Cpolar稳定隧道&#xff08;本地设置&#xff09; 4. 公网访问测试5. 结语 前…