K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时

news2024/11/23 23:51:06

文章目录

  • 一、部署K8S集群方式
  • 二、kubeadm工具搭建K8s集群
    • 2.1 资源配置
    • 2.2 服务器规划
    • 2.3 搭建流程
      • 2.3.1 操作系统初始化
      • 2.3.2 使用docker容器引擎
      • 2.3.3 安装cri-dockerd
      • 2.3.4 安装kubeadm,kubelet和kubectl
      • 2.3.5 master节点初始化
      • 2.3.6 加入node节点
      • 2.3.7 部署容器网络(CNI)
      • 2.3.8 部署 Dashboard
      • 2.3.9 访问Dashboard
      • 2.3.10 效果测试
        • 2.3.10.1 创建pods
        • 2.3.10.2 查看容器日志
        • 2.3.10.3 查看yaml文件
        • 2.3.10.4 进入容器终端
        • 2.3.10.5 缩放资源
    • 2.4 使用Containerd容器引擎
      • 2.4.1 使用前提条件
      • 2.4.2 安装containerd
      • 2.4.3 修改containerd运行模式
      • 2.4.4 修改containerd运行参数
      • 2.4.5 配置kubelet使用containerd
      • 2.4.6 验证
      • 2.4.7 容器管理工具
        • 2.4.7.1 设置crictl连接containerd
        • 2.4.7.2 验证
        • 2.4.7.3 相关命令
  • 三、kubectl命令行管理工具
    • 3.1 基础命令
      • 3.1.1 创建资源
    • 3.2 部署命令
    • 3.3 集群管理命令
    • 3.4 基础使用
      • 3.4.1 命令行的补全
      • 3.4.2 查看版本
  • 四、报错处理
    • 4.1 其他节点无法使用kubectl命令

一、部署K8S集群方式

两种部署方式:

  1. kubeadm工具部署。Kubeadm 是一个K8s 部署工具,提供 kubeadm init 和kubeadm join,用于快速部署 Kubernetes集群。
    • kubeadm 工具功能:
      • kubeadm init:初始化一个 Master 节点。
      • kubeadm join:将工作节点加入集群。
      • kubeadm upgrade:升级 K8s 版本。
      • kubeadm token:管理 kubeadm join 使用的令牌。
      • kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改。
      • kubeadm version:打印 kubeadm 版本。
      • kubeadm alpha:预览可用的新功能。
  2. 二进制包部署。从 github获取发行版的二进制包,手动依次部署每个组件组成Kubernetes 集群。可以先使用kubeadm工具部署,熟悉之后再进行二进制部署加深理解。

二、kubeadm工具搭建K8s集群

2.1 资源配置

注意事项:

  1. 服务器最好可以访问外网,会有从网上拉取镜像需求。若服务器不能上网,需提前下载对应镜像并导入节点。
节点最低配置建议配置
master2核CPU、2G内存、20G硬盘4核CPU、16G内存、500G硬盘
node4核CPU、8G内存、100G硬盘根据需要运行的容器数量规格进行规划。
软件环境版本备注
操作系统CentOS Linux release 7.5.1804 (Core)CentOS 7.X系列版本都可,最好是最小化安装。
Docker19-ce\
Kubernetes1.25\

2.2 服务器规划

IP角色
192.168.130.145K8S-master
192.168.130.146K8s-node1
192.168.130.147K8s-node2

在这里插入图片描述

2.3 搭建流程

2.3.1 操作系统初始化

  • 以下操作,所有服务器执行。

1.关闭所有服务器防火墙。

systemctl stop firewalld
systemctl disable firewalld

2.关闭所有服务器selinux。

#永久关闭,需重启服务器才能生效。
sed -i 's/enforcing/disabled/g' /etc/selinux/config   

#临时关闭,立即生效,重启服务器后还原配置。
setenforce 0

3.关闭所有服务器swap分区。

#永久关闭。
sed -ri 's/.*swap.*/#&/g' /etc/fstab

#临时关闭。
swapoff -a

4.根据规划设置主机名称。

hostnamectl set-hostname K8s-master
hostnamectl set-hostname K8s-node1
hostnamectl set-hostname K8s-node2

在这里插入图片描述
5.文件绑定解析。

cat >> /etc/hosts << EOF
192.168.130.145 k8s-master
192.168.130.146 k8s-node1
192.168.130.147 k8s-node2
EOF

6.将桥接的IPv4流量传递到iptables的链。

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#重启生效。
sysctl --system

7.时间同步。

yum install ntpdate -y
ntpdate time.windows.com

2.3.2 使用docker容器引擎

  • K8s集群需要安装容器运行时,我这里使用的是docker作为容器引擎,也可以换成别的,例如containerd。
  • 以下操作步骤,所有服务器执行。

1.安装docker环境。

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker

2.配置加速器。

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

3.重启查看。

systemctl restart docker
docker info

在这里插入图片描述

4.添加阿里的镜像源。

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.3.3 安装cri-dockerd

  • Kubernetes v1.24 移除 docker-shim 的支持,而 Docker Engine 默认又不支持CRI标准,因此二者默认无法再直接集成。为此,Mirantis 和 Docker 联合创建了 c14abckefd项2用于为Docker Engine 提供一个能够支持到CRI规范的桥梁,从而能够让 Docker 作为Kubernetes 容器引擎。
  • 以下操作步骤,所有服务器执行。

1.下载安装。

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm 

2.修改配置文件,重新读取。

vim  /usr/lib/systemd/system/cri-docker.service
#找到这行,添加路径。
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7

systemctl daemon-reload

3.启动,并设置开机自启。

systemctl enable cri-docker && systemctl start cri-docker

2.3.4 安装kubeadm,kubelet和kubectl

  • 以下操作步骤,所有服务器执行。

1.安装三个工具,版本需要统一。

yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0

2.设置开机自启,暂时不要启动。

systemctl enable kubelet

2.3.5 master节点初始化

1.master节点初始化。

参数释义:

  1. –apiserver-advertise-address 集群通告地址
  2. –image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
  3. –kubernetes-version K8s版本,与上面安装的一致
  4. –service-cidr 集群内部虚拟网络,Pod统一访问入口
  5. –pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致。
  6. –cri-socket 指定 cri-dockerd 接口,如果是 containerd 则使用–cri-socketunix:///run/containerd/containerd.sock

注意事项:

  1. 初始化完成后,最后会输出一个 join 命令,复制下来,下面用。
kubeadm init \
  --apiserver-advertise-address=192.168.130.145 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.25.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///var/run/cri-dockerd.sock \
  --ignore-preflight-errors=all

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

2.修改kubectl使用的连接k8s认证文件到默认路径,不然会报错。

[root@k8s-master kubernetes]# mkdir -p $HOME/.kube
[root@k8s-master kubernetes]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master kubernetes]# chown $(id -u):$(id -g) $HOME/.kube/config

3.查看工作节点,此时就可以使用kubectl命令了。

[root@k8s-master yum.repos.d]# kubectl get nodes

在这里插入图片描述

2.3.6 加入node节点

注意事项:

  • 向集群添加新节点,将前面执行kubeadm init 命令时最后输出的kubeadm join 命令复制过来,并手动加上参数–cri-socket=unix:///var/run/cri-dockerd.sock,再在命令行执行。
  • 默认token有效期为24小时,过期后,此token就不可用。这时就需要重新创建token,可以直接使用命令快捷生成:kubeadm token create --print-join-command

1.依次在所有node节点上执行加入集群命令。

[root@k8s-node1 yum.repos.d]# kubeadm join 192.168.130.145:6443 --token dxc3x4.ggvxomofqelw1g0l --discovery-token-ca-cert-hash sha256:e5b0a56b7c5108800a15b94bbdbde8ea47dc4c2e7c04973d34bf2280d65e80f1 --cri-socket=unix:///var/run/cri-dockerd.sock

[root@k8s-node2 yum.repos.d]# kubeadm join 192.168.130.145:6443 --token dxc3x4.ggvxomofqelw1g0l --discovery-token-ca-cert-hash sha256:e5b0a56b7c5108800a15b94bbdbde8ea47dc4c2e7c04973d34bf2280d65e80f1 --cri-socket=unix:///var/run/cri-dockerd.sock

在这里插入图片描述
2.查看集群状态,显示有新加入的2个节点。
在这里插入图片描述

2.3.7 部署容器网络(CNI)

  • Calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案。
  • 若导入yaml文件后一直处于pending状态,大概率是网络较差,可以手动下载镜像,再apply -f。
  • 以下操作在master节点执行。

1.下载文件到本地。

[root@k8s-master ~]# wget https://github.com/projectcalico/calico/blob/release-v3.26/manifests/calico.yaml

2.修改Calico配置文件里的定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 --pod-network-cidr指定的一样。

[root@k8s-master ~]# vim calico.yaml
......
            - name: CALICO_IPV4POOL_CIDR
              value: "10.244.0.0/16"

在这里插入图片描述
3.将Calico文件部署到k8s集群中。

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

4.查看Calico容器网络状态,拉取镜像需要等两分钟,有点慢。

[root@k8s-master ~]# kubectl get pods -n kube-system

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

2.3.8 部署 Dashboard

  • Dashboard是官方提供的一个UI,可用于基本管理K8s资源。
  • 以下操作在master节点执行。

1.下载yaml文件。

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

2.修改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    ##添加此行。
  selector:
    k8s-app: kubernetes-dashboard
  type: NodePort   ##添加此行。
......

在这里插入图片描述
3.加载这个yaml文件,并查看容器运行状态。

[root@k8s-master ~]# kubectl apply -f recommended.yaml
[root@k8s-master ~]# kubectl get pods -n kubernetes-dashboard

在这里插入图片描述

2.3.9 访问Dashboard

1.访问k8s任意节点IP:30001,会发现被拦截了,这是因为chrome认为该网站不安全,不让访问,我们在当前页面随意处输入“thisisunsafe”回车即可解决,相当于了解了风险依然访问,之后就可以访问网页,但那之后再出问题也就没有责任了。
在这里插入图片描述

2.此时需要我们输入Token登录。

在这里插入图片描述
3.获取Token。创建service account并绑定默认cluster-admin管理员集群角色。

[root@k8s-master ~]# kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

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

[root@k8s-master ~]# kubectl create token dashboard-admin -n kubernetes-dashboard

在这里插入图片描述
4.粘贴Token,登录。
在这里插入图片描述
在这里插入图片描述

2.3.10 效果测试

2.3.10.1 创建pods

1.创建一个pods。
在这里插入图片描述
2.查看Pods。
在这里插入图片描述
3.也可以在终端上查看pods运行状态。
在这里插入图片描述

2.3.10.2 查看容器日志

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

2.3.10.3 查看yaml文件

在这里插入图片描述

在这里插入图片描述

2.3.10.4 进入容器终端

在这里插入图片描述

在这里插入图片描述

2.3.10.5 缩放资源

1.缩放。
在这里插入图片描述
2.查看Pods。
在这里插入图片描述
在这里插入图片描述

2.4 使用Containerd容器引擎

注意事项:

  1. containerd是一个主流的容器引擎,与Docker相兼容,相比Docker轻量很多,目前较为成熟。
  2. containerd是独立的运行时,一个集群可以有多个运行时,比如docker和containerd可以同时存在,但一般就是用一个,不建立交叉使用。
  3. 若是docker切换成containerd,则需要给一个集群所有节点都切换,以下操作只切换了master节点,只做示范。
  4. 不同运行时的镜像是通用的。

2.4.1 使用前提条件

1.启用两个内核模块。操作系统默认是有的,若没有,则执行代码框的内容进行添加启用。

cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

在这里插入图片描述

2.设置sysctl 参数。若是第一次直接使用containerd,则需要把下面几个参数都要添加进去;若是docker切换成containerd,按照前文的操作,前两个参数已经添加,只需要确定添加最后一个参数。

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

#重启生效。
sysctl --system

2.4.2 安装containerd

1.安装。若是直接使用containerd,需要执行此步骤进行安装;若是由docker更换成containerd,则直接进行第二步,因为在前文安装docker时,已经把contained安装了。

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io

在这里插入图片描述

2.创建配置文件目录。

#若是按照前文操作来的,已经生成该目录,且存在配置文件,不需在创建,只用执行第二个命令;若不是按照前文来操作的,需创建。
mkdir -p /etc/containerd  

在这里插入图片描述

2.4.3 修改containerd运行模式

1.修改containerd运行模式,以独立模式运行,也就是不需要安装docker就可以运行。

  • 修改前

在这里插入图片描述

  • 修改命令
containerd config default > /etc/containerd/config.toml
  • 修改后

在这里插入图片描述

2.4.4 修改containerd运行参数

修改containerd运行参数:

  • pause镜像设置过阿里云镜像仓库地址。
  • 拉取Docker Hub镜像配置加速地址设置为阿里云镜像仓库地址。

1.修改一

vi /etc/containerd/config.toml
......
    sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"  

在这里插入图片描述

2.修改二

vi /etc/containerd/config.toml
......
	[plugins."io.containerd.grpc.v1.cri".registry.mirrors]

#添加这两行。     
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = ["https://b9pmyelo.mirror.aliyuncs.com"]

在这里插入图片描述
3.重新读取。

systemctl restart containerd

2.4.5 配置kubelet使用containerd

1.查看文件路径。
在这里插入图片描述
2.修改配置文件里的路径,并重启服务。

[root@k8s-master containerd]# vim /var/lib/kubelet/kubeadm-flags.env

[root@k8s-master containerd]# systemctl  restart kubelet

在这里插入图片描述

2.4.6 验证

1.此时查看master节点已经采用containerd容器引擎。

[root@k8s-master containerd]# kubectl get node -o wide

在这里插入图片描述

2.此时关闭cri-docker和docker不影响containerd的运行使用。

在这里插入图片描述

2.4.7 容器管理工具

  • containerd提供了ctr命令行工具管理容器,但功能比较简单,所以一般会用crictl工具检查和调试容器。
  • 项目地址:https://github.com/kubernetes-sigs/cri-tools/

2.4.7.1 设置crictl连接containerd

1.不设置会报错。

在这里插入图片描述

2.指定使用containerd容器运行时的API接口。

[root@k8s-master containerd]# vim /etc/crictl.yaml

runtime-endpoint: unix:///run/containerd/containerd.sock  ##指定容器运行时的文件接口。
image-endpoint: unix:///run/containerd/containerd.sock    ##指定容器运行时管理镜像的接口。
timeout: 10   ##指定容器运行时的连接超时时间。
debug: false   ##是否输出debug信息。

2.4.7.2 验证

1.此时就可以正常使用crictl命令。
在这里插入图片描述

2.4.7.3 相关命令

镜像相关功能dockercontainerd(crictl)
显示本地镜像列表docker imagescrictl images
下载镜像docker pullcrictl pull
上传镜像docker push无,例如buildk
删除本地镜像docker rmicrictl rmi
查看镜像详情docker inspect IMAGE-IDcrictl inspecti IMAGE-ID
容器相关功能Dockercontainerd(crictl)
显示容器列表docker pscrictl ps
创建容器docker createcrictl create
启动容器docker startcrictl start
停止容器docker stopcrictl stop
删除容器docker rmcrictl rm
查看容器详情docker inspectcrictl inspect
附加容器docker attachcrictl attach
执行命令docker execcrictl exec
查看日志docker logscrictl logs
查看容器资源docker statscrictl stats
POD 相关功能Dockercontainerd(crictl)
显示 POD 列表crictl pods
查看 POD 详情crictl inspectp
运行 PODcrictl runp
停止 PODcrictl stopp

三、kubectl命令行管理工具

3.1 基础命令

命令描述
create通过文件名或标准输入创建资源
expose为Deployment,Pod创建Service
run在集群中运行一个特定的镜像
set在对象上设置特定的功能
explain文档参考资料
get显示一个或多个资源
edit使用系统编辑器编辑一个资源。
delete通过文件名、标准输入、资源名称或标签选择器来删除资源。

3.1.1 创建资源

1.通过create来创建以下资源。
在这里插入图片描述

3.2 部署命令

命令描述
rollout管理Deployment,Daemonset资源的发布(例如状态、发布记录、回滚等)
scale对Deployment、ReplicaSet、RC或Job资源扩容或缩容Pod数量
autoscale为Deploy, RS, RC配置自动伸缩规则(依赖metrics-server和hpa)

3.3 集群管理命令

命令描述
certificate修改证书资源
cluster-info显示集群信息
top查看资源利用率(依赖metrics-server)
cordon标记节点不可调度
uncordon标记节点可调度
drain驱逐节点上的应用,准备下线维护
taint修改节点taint标记

3.4 基础使用

3.4.1 命令行的补全

  • kubectl命令默认不支持补全功能,我们可以把补全相关的内容写入到bash中,这里就需要linux中的bash补全包,其他工具的补全命令都需要这个命令。

1.安装依赖包,linux的mini版本是没有装的。

[root@k8s-master ~]# yum install -y bash-completion

[root@k8s-master ~]# bash

2.在 bash 中设置当前 shell 的自动补全,随后命令就可以补全,但重启机器就会失效。

[root@k8s-master ~]# source <(kubectl completion bash)

3.开机自启,永久生效。

[root@k8s-master ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
[root@k8s-master ~]# source .bashrc 

3.4.2 查看版本

注意事项:

  1. 客户端版本和服务端版本不要差太多,一般差3个版本之内不影响使用。

1.使用参数–output=yaml查看版本。

[root@k8s-master ~]# kubectl version --output=yaml

在这里插入图片描述
2.可以显示客户端、服务端版本。

  • 客户端版本:命令行的kubectl的版本。
  • 服务端版本:API Server 组件版本。

在这里插入图片描述

四、报错处理

4.1 其他节点无法使用kubectl命令

  • 问题:其他工作节点无法使用kubectl命令。

在这里插入图片描述
1.现在node节点上的/root目录下创建.kube目录。

[root@k8s-node1 ~]# mkdir .kube
[root@k8s-node2 ~]# mkdir .kube

2.把master节点上的.kube/config文件复制到其他工作节点同目录下。

[root@k8s-master ~]#  scp .kube/config root@192.168.130.146:/root/.kube/
[root@k8s-master ~]#  scp .kube/config root@192.168.130.147:/root/.kube/

3.此时node节点就可以使用kubectl命令了。
在这里插入图片描述

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

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

相关文章

redhat 7.9 安装oracle 11g-11.2.0.4

redhat 7.9 安装oracle 11g-11.2.0.4 1、数据库下载和安装文档1.1、查看oracle 11g 适合安装的linux版本1.2、安装文档1.3、license种类解释&#xff08; XE版 标准本 个人版 企业版&#xff09;1.4、在安装完oracle后再创建数据库1.5、DBA的文档1.6、Automatic Storage Manage…

2.4 等比数列

学习步骤&#xff1a; 如果我要学习等比数列&#xff0c;我会按照以下步骤进行学习&#xff1a; 定义和性质&#xff1a;首先了解等比数列的定义和性质&#xff0c;包括公比、首项、通项公式、求和公式等。 例题练习&#xff1a;通过练习一些简单的例题来理解等比数列的概念和…

BMS的菊花链技术和AFE

文章目录 菊花链在BMS中的位置菊花链拓扑菊花链通信AFE&#xff08;Analog Front End&#xff09;AFE均衡电路菊花链应用示例MC33665AMC33665A SPI通信 MC33775AMC33775A 硬件资源 文章参考 菊花链在BMS中的位置 如下图&#xff0c;AFE在从板中&#xff0c;用来采集电池电压和…

ChatGPT在语音识别技术领域的应用

第一章&#xff1a;引言 近年来&#xff0c;随着深度学习技术的飞速发展&#xff0c;语音识别技术已经成为了人工智能领域中备受关注的重要领域之一。在语音识别技术的应用中&#xff0c;ChatGPT作为一款先进的语言模型&#xff0c;可以发挥其强大的文本生成和自然语言处理能力…

#详细介绍!!! 文件系统的一点相关知识

本文主要是介绍了一些计算机文件相关的基础知识&#xff0c;帮助读者更好的认识文件 目录 1.内存和外存 内存 特性1&#xff1a;读写速度快 特性2&#xff1a;内存中的数据不能永久存储 特性3&#xff1a;容量小&#xff0c;价格贵 外存 内存和外存对比总结 2.认识文件 …

Linux Ansible导入剧本、任务滚动执行、任务并行执行

目录 任务滚动更新 配置并行 包含和导入剧本 任务滚动更新 实现在多台被管理节点执行任务时&#xff0c;第一台的整个playbook执行完成后再在下一台主机执行任务&#xff1b;通过serial元素来实现 serial&#xff1a;1 表示一台一台执行playbook&#xff08;serial也可以指定…

【白嫖系列】教育邮箱申请最新专业绘图软件OriginPro(官方渠道)

&#x1f951; Welcome to Aedream同学 s blog! &#x1f951; 文章目录 预备简单介绍有效期与申请条件申请链接查看邮箱切换中文 预备 以edu结尾的邮箱&#xff0c;毕业也可使用校友邮箱等。 简单介绍 Origin是一款数据分析和绘图的软件&#xff0c;具备统计、峰值分析和曲线…

[oeasy]python0144_try的完全体_否则_else_最终_finally

try的完全体 回忆上次内容 上次细化了主控程序(main.py) 导入(get_fruits.py)处理(process.py)输出(output.py) 使用了 try 结构 tryexcept发现异常就报错 输入部分的错误 应该在 输入部分来报 具体怎么报呢&#xff1f;&#x1f914; 完善输入 输入的时候 应该包括 对于输…

新写了的 AOP 日志切面,方便以后直接使用。

前言 最近项目进入联调阶段&#xff0c;服务层的接口需要和协议层进行交互&#xff0c;协议层需要将入参[json字符串]组装成服务层所需的json字符串&#xff0c;组装的过程中很容易出错。入参出错导致接口调试失败问题在联调中出现很多次&#xff0c;因此就想写一个请求日志切…

AI 时代,知识工作者的生存指南

最近&#xff0c;大家可能已经见识过 AI 的威力了吧&#xff0c;以 ChatGPT 为代表的 人工智能&#xff08;AI&#xff09;展现出接近人一样的回答水准。 来自 Craft AI Assitant AI 就在那里&#xff0c;是房间里的大象&#xff0c;大家不能总装做对自己没有影响。要知道&…

Python使用CV2库捕获、播放和保存摄像头视频

Python使用CV2库捕获、播放和保存摄像头视频 特别提示&#xff1a;CV2指的是OpenCV2&#xff08;Open Source Computer Vision Library&#xff09;&#xff0c;安装的时候是 opencv_python&#xff0c;但在导入的时候采用 import cv2。 若想使用cv2库必须先安装&#xff0c;P…

2023年最新5A景区有多少个?Python可视化告诉你

2023年最新5A景区有多少个&#xff1f;Python可视化告诉你 五一小长假来了&#xff0c;很多人想抓住小长假的机会去旅游。 5A景区是大多数人的首选&#xff0c;全国最新有多少个5A景区呢&#xff0c;应该还有很多人不知道。本文用Python进行可视化&#xff0c;告诉你答案。 …

【五一创作】【Mycat】Mycat2 Bugs 及修改建议(V1.22_2022-10-13)

Bug 1 : wrapper.conf 数字类型参数配置有误&#xff0c;多了末尾的单位 M https://wrapper.tanukisoftware.com/doc/english/prop-java-initmemory.html wrapper.log 产生警告&#xff1a; WARN | wrapper | 2023/04/20 22:42:00 | Encountered an invalid numerical val…

【Git 入门教程】第八节、Git流程管理

Git是一个非常流行的分布式版本控制系统&#xff0c;它提供了许多强大的功能来帮助开发者管理和协调代码库。在团队协作中&#xff0c;如何使用Git来管理开发流程是非常重要的。本文将介绍一些Git流程管理的最佳实践&#xff0c;包括分支策略、代码审核等。 一、分支策略 在团…

【实战】jenkins api 接口

jenkins api 接口实战 一、Jenkins Api简介二、Jenkins Api 环境准备1、获取所有job接口2、获取所有job名字接口3、获取所有job名字和url接口 三、使用curl调用 获取所有构建队列四、使用curl调用 获取Job信息五、使用curl调用操作Job1、操作Job需要验证crumba、使用token发起接…

时序预测 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络时间序列预测

时序预测 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络时间序列预测 目录 时序预测 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 基于贝叶斯优化卷积双向长短期记忆网络…

GPT-3.5 也能直接联网了

ChatGPT 常令人诟病的一个问题&#xff0c;就是它的模型训练数据&#xff0c;迄今为止用的还是 2021 年的老数据。 对于当下这个信息大爆炸时代&#xff0c;相隔两小时&#xff0c;消息都有可能滞后&#xff0c;更别说相隔两年了。 目前正式开放了 Web Browsing 这款插件。 …

eLife:情绪学习对人脑记忆整合的回溯性促进机制

所谓“一朝被蛇咬&#xff0c;十年怕井绳”&#xff0c;带有强烈情绪色彩的事件不仅令人记忆深刻&#xff0c;还会影响与之相关的其他事件。我们的日常生活中充满了无数平凡琐碎的小事&#xff0c;这些事情并不会给我们留下深刻印象。但是&#xff0c;当一件微不足道的小事事后…

计算机网络中常见的数据传输方式(电路交换,报文交换,分组交换)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将详细介绍计算机网络中常见的数据传输方式&#xff0c;如电路交换&#xff0c;报文交换&#xff0c;分组交换。 如果文章有什么需要改进的地方还请大佬不吝赐教&…

Spring DI简介及依赖注入方式和依赖注入类型

目录 一、什么是依赖注入 二、依赖注入方式 1. Setter注入 2. 构造方法注入 3. 自动注入 三、依赖注入类型 1. 注入bean类型 2. 注入基本数据类型 3. 注入List集合 4. 注入Set集合 5. 注入Map集合 6. 注入Properties对象 往期专栏&文章相关导读 1. Maven系…