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

news2024/9/26 5:12:46

文章目录

  • 一、部署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.2 部署命令
    • 3.3 集群管理命令
    • 3.4 调试命令
    • 3.5 高级命令
    • 3.6 设置命令
    • 3.6 其他命令
  • 四、异常处理
    • 4.1 其他节点无法使用kubectl命令
    • 4.2 命令行的补全

一、部署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内存、50G硬盘2核CPU、4G内存、20G硬盘8核CPU、16G内存、100G硬盘
node2核CPU、2G内存、50G硬盘4核CPU、8G内存、20G硬盘16核CPU、64G内存、500G硬盘
软件环境版本备注
操作系统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:containerd最开始是在docker里面的,后面将docker进行解耦把containerd单独做成一个标准的CRI运行时,再往后就捐赠给了CNCF基金会交其维护,但docker一致是与containerd相兼容的。
    • cri-o、podman:都属于红帽(RedHat)项目,目前红帽主推podman。
  • 以下操作步骤,所有服务器执行。

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

为什么要安装cri-dockerd插件?

  1. K8s在刚开源时没有自己的容器引擎,而当时docker非常火爆是容器的代表,所以就在kubelet的代码里集成了对接docker的代码——docker shim,所以1.24版本之前是默认使用docker,不需要安装cri-dockerd。
  2. K8s 1.24版本移除 docker-shim的代码,而 Docker Engine 默认又不支持CRI标准,因此二者默认无法再直接集成。为此,Mirantis 和 Docker 为了Docker Engine 提供一个能够支持到CRI规范的桥梁,就联合创建了cri-dockerd,从而能够让 Docker 作为K8s 容器引擎。
    在这里插入图片描述
    在这里插入图片描述

为什么要移除docker shim?

  • K8s核心代码优化。
  • Docker内部调用链比较复杂,多层封装和调用,导致性能降低、提升故障率、不易排查。
  • Docker还会在宿主机创建网络规则、存储卷,也带来了安全隐患

注意事项:

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

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认证文件到默认路径,不然会报错。

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
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)

不同docker主机容器访问存在的问题 :

  1. 存在两容器分配的ip相同问题,因为docker主机有各自对立的网络管理机制。
  2. 存在容器发送的数据包不知道要发送到那个节点问题。即使两个容器ip手动设置成不同,那容器1和容器2的网络也是不通的,是因为容器1发送的数据包不知道要送往哪个节点。
  3. 存在docker主机之间的通信问题。即使容器1知道要送往哪个节点,也只能通过手动方式去实现,比如路由表、iptables转发等等。
  4. 以上三个问题都是很耗时耗力的,所以需要引入网络组件来解决这些问题。

部署网络组件的原因?

  • 为打通Pod到Pod之间网络、Node与Pod之间网络,从而集群中数据包可以任意传输,形成了一个扁平化网络。

主流网络组件:

  1. Flannel
  2. Calico

注意事项:

  • 若导入yaml文件后一直处于pending状态,大概率是网络较差,可以手动下载镜像,再apply -f。
  • 以下操作在master节点执行。

1.下载文件到本地,文件下载地址。

[root@k8s-master ~]# curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.1/manifests/calico.yaml -O

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.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 调试命令

命令释义
describe显示资源详细信息
logs查看Pod内容器日志,如果Pod有多个容器,-c参数指定容器名称
attach附加到Pod内的一个容器
exec在容器内执行命令
port-forward为Pod创建本地端口映射
proxy为Kubernetes API server创建代理
cp拷贝文件或目录到容器中,或者从容器内向外拷贝
auth检查授权
debug创建调试会话,用于排查工作负载和工作节点故障

3.5 高级命令

命令释义
diff将在线配置与指定的文件对比
apply从文件名或标准输入对资源创建/更新
patch使用补丁方式修改、更新资源的某些字段
replace从文件名或标准输入替换一个资源
kustomize从目录或者URL构建kustomization目标

3.6 设置命令

命令释义
label给资源设置、更新标签
annotate给资源设置、更新注解
completion kubectl自动补全
1、安装依赖包bash-completion。
2、设置在bash中自动补全:source <(kubectl completion bash)

3.6 其他命令

命令释义
api-resources查看所有资源
api-versions打印受支持的API版本
config修改kubeconfig文件(用于访问API,比如配置认证信息)
version查看kubectl和k8s版本

四、异常处理

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命令了。
在这里插入图片描述

4.2 命令行的补全

  • 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 

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

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

相关文章

《花雕学AI》29:5秒钟就能为你的想法想出新点子?ChatGPT新点子指令模型告诉你怎么做

引言 你有没有遇到过这样的情况&#xff0c;你想出了一个想法&#xff0c;但是不知道怎么扩展或改进它&#xff1f;你有没有想过有一个工具&#xff0c;可以帮你在短时间内为你的想法生成各种新的点子&#xff1f;如果你有这样的需求&#xff0c;那么你一定要了解ChatGPT。 C…

Verilog 锁相环参数动态自动生成,Xilinx MMCM 和 PLL 动态配置频率

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 本文链接&#xff1a;https://blog.csdn.net/qq_46621272/article/details/130484100 Verilog 锁相环参数动态自动生成&#xff0c;Xilinx MMCM 和…

服务器中了勒索病毒,升级后的Malox勒索病毒特征,勒索病毒解密数据恢复

Mallox勒索病毒是网络上较为流行的勒索病毒&#xff0c;但是随着黑客加密技术的不断升级&#xff0c;Mallox勒索病毒的新升级版本Malox勒索病毒已经开始出现。Malox勒索病毒是一种最近在网络上广泛传播的恶意软件&#xff0c;其感染方式多种多样&#xff0c;主要以加密受害人的…

【五一创作】版本控制-从零开始学Git-02 Git中的基本概念与工作流程

前言 前面学习了版本控制系统和分布式版本控制系统-Git的相关入门知识【五一创作】版本控制-从零开始学Git-01什么是Git 一、Git中的最基本概念 注意:.git目录是一个隐藏文件夹&#xff0c;默认不可见,需要设置后才能显示出来。 二、Git状态与结构关系 2.1 三种状态 modif…

Zigbee 无线串口通信模块( DL-22 )

文章目录 一、DL-22简介二、模块配置三、串口通信(透明传输) 一、DL-22简介 DL-22无线串口模块为串口转2.4G无线模块&#xff0c;可以通过无线将两个或者多个串口连接起来。串口发入模块的数据会被模块使用无线发出&#xff0c;收到无线数据的模块会将这个数据使用串口发出&am…

大数据分析案例-基于XGBoost算法构建居民收入分类预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

互联网明厨亮灶智慧监管算法 yolov7

互联网明厨亮灶智慧监管系统基于pythoyolov7网络模型AI视觉图像分析技术&#xff0c;互联网明厨亮灶智慧监管算法模型可以识别人员行为及穿戴是否合规&#xff0c;不穿厨师服、不按要求穿戴厨师帽或者佩戴口罩和手套、行为如违规在后厨抽烟、出现老鼠等情景。近几年来&#xff…

数字化转型导师坚鹏:数字化时代企业管理变革与创新营销

数字化时代企业管理变革与创新营销 课程背景&#xff1a; 很多饮水机企业存在以下问题&#xff1a; 不清楚数字化时代企业面临的机遇与挑战&#xff1f; 不知道如何利用大数据发现问题与机会&#xff1f; 不清楚如何进行精准的数字化营销&#xff1f; 不知道如何进行…

【ChatGPT】ChatGPT+MindShow三分钟生成PPT

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 第一步&#xff1a;获取PPT内容大概&#xff1a; 1.打开ChatGPT镜像 2.向他提问&#xff0c;提问格式如下&#xff0c;主题替换成你想获得的信息。比如某本书的拆解&#xff0c;…

数据可视化第二版-拓展-网约车分析案例

文章目录 数据可视化第二版-拓展-网约车分析案例竞赛介绍 1等奖作品-虾虾蟹蟹哈哈的作品引言&#xff1a;背景度量指标 & 结论过程数据与思考一、数据处理二、大盘存量数据一览1. 分城市关键指标变化情况2. 各项指标相关性分析 三、数量维度分析1. 城市间比较1.1 工作日 vs…

HTML和CSS

1、概述 超文本标记语言&#xff08;HyperText Markup Language&#xff09;简称&#xff1a;HTML&#xff1b;是一种用于创建网页的标准标记语言。HTML 不是一种编程语言&#xff0c;而是一种标记语言&#xff1b;HTML文档也叫做 web 页面。 运行后的浏览器页面 我的第一个标…

鲁大师4月安卓新机性能/流畅榜:ROG游戏手机7摘得性能桂冠 vivo登顶流畅榜

性能榜&#xff1a;ROG 游戏手机7众望所归&#xff0c;摘得性能桂冠 2023年4月的手机市场也是异常火爆&#xff0c;各大厂商纷纷推出自己的旗舰手机。骁龙8 Gen2仍然是厂商们的首选芯片&#xff0c;不论是“小米照相机”、vivo折叠机还是ROG 游戏机&#xff0c;他们都纷纷搭载了…

你不能不知道的string类的基础知识

文章目录 前言string类1. 为什么要学习string类1.1 C语言中的字符串不够好用 2. 标准库中的string类2.1 string类(了解)2.2 string类的常用接口说明2.3 string类对象的容量操作2.4string类对象的访问及遍历操作2.5 string类对象的修改操作2.6 string类非成员函数2.7 vs和g下str…

《花雕学AI》大揭秘:ChatGPT 如何让你的聊天机器人更智能、更有趣、更有用

你是否想过有一个可以和你聊天、陪你玩耍、帮你学习、给你创意的机器人&#xff1f;如果你的答案是肯定的&#xff0c;那么你一定会喜欢 ChatGPT。 ChatGPT 是一个基于 GPT-3 或者 GPT-4 技术的聊天机器人&#xff0c;可以与人类进行自然和流畅的对话。GPT-4 是目前最先进的自…

[Gitops--8]微服务前置中间件部署

微服务前置中间件部署 1. MySQL主从 1.1 创建持久化存储 使用project-admin账号 进入sangomall项目 [存储],[存储卷],sangomall-mysql-master-pvc storageclass创建详见K8s集群中部署KubeSphere 2.1章节 在k8s环境下可以看到这个sc rootks-master:~/yaml# kubectl get sc NA…

Cadence Allegro(1):手动PCB封装制作(以TYPE-C 16Pin为例)

Cadence Allegro 16.6&#xff08;1&#xff09;&#xff1a;手动PCB封装制作&#xff08;以TYPE-C 16Pin为例&#xff09; 前提摘要&#xff1a; PCB设计软件版本&#xff1a; 焊盘设计 &#xff1a;Pad Designer 16.6PCB设计 &#xff1a;PCB Editor 16.6 个人说明&#xf…

【HarmonyOS】自定义组件之ArkUI实现通用标题栏组件

【关键字】 标题栏、常用内置组件整合、ArkUI、自定义组件 1、写在前面 在上一篇文章中我们通过Java语言实现了一个通用的标题栏组件&#xff0c;有需要的可以看下&#xff0c;文章地址&#xff1a; 华为开发者论坛 现在很多朋友都已经转战ArkTS语言了&#xff0c;那么今天…

项目集的定义及管理

一、什么是项目集 项目集是相互关联且被协调管理的项目、子项目集和项目集活动&#xff0c;以便获得分别管理所无法获 得的效益。 以项目集的形式管理项目、子项目集及项目集活动能确保项目集组件的战略和工作计划根据各组 件的成果做出相应调整&#xff0c;或者按照发起组织的…

PWM控制舵机

文章目录 运行环境&#xff1a;1.1 原理1)A板原理图2)PA8引脚配置3)定时器Timers配置 2.1代码解释1)定时器1初始化函数2)启动定时器中断3)启动PWM/设置占空比4)launch设置5) 编译调试 3.1实验效果 运行环境&#xff1a; ubuntu18.04.melodic 宏基暗影骑士笔记本 stm32f427IIH6…

JAVA常用的工具类

文章目录 1 集合工具类1.1 java.util.Collections1.1.1 基本操作1.1.2 转换线程安全集合 1.2 org.springframework.util.CollectionUtils1.3 org.apache.commons.collections.CollectionUtils1.4 org.apache.commons.lang.ArrayUtils1.5 org.apache.commons.lang3.ArrayUtils1.…