自动化的运维管理:探究Kubernetes工作机制的奥秘

1 云计算时代的操作系统

Kubernetes 是一个生产级别的 容器编排平台集群管理系统 ,能够 创建调度容器监控管理服务器

  • 容器是什么?容器是软件,是应用,是进程。
  • 服务器是什么?服务器是硬件,是 CPU、内存、硬盘、网卡等。

那么,既可以管理软件,也可以管理硬件,就是一个操作系统(Operating System)。

  • 从某种角度来看,Kubernetes 可以说是一个集群级别的操作系统。
  • 主要功能就是资源管理作业调度
  • Kubernetes 不是运行在单机上管理单台计算资源和进程,而是运行在多台服务器上管理几百几千台的计算资源,以及在这些资源上运行的上万上百万的进程,规模要大得多。

由于云原生的兴起,开发人员从一开始就必须考虑后续的部署运维工作,而运维人员也需要在早期介入开发,才能做好应用的运维监控工作。

2 搭建小巧完备的Kubernetes环境

快速搭建 Kubernetes 环境的工具:

  • kind
  • minikube

https://kubernetes.io/zh/docs/tasks/tools/

我们选择minikube来学习Kubernetes。

实验环境:2c4g
https://minikube.sigs.k8s.io/docs/

2.1 安装docker

sudo apt install -y docker.io #安装Docker Engine


sudo service docker start         #启动docker服务
sudo usermod -aG docker ${USER}   #当前用户加入docker组,需要重新登录生效

docker info

2.2 安装minikube

# Intel x86_64
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# Apple arm64
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64

sudo install minikube /usr/local/bin/

安装完成后,查看minikube版本:

lianhaifeng@lianhaifeng-virtual-machine:~$ minikube version
minikube version: v1.30.1
commit: 08896fd1dc362c097c925146c4a0d0dac715ace0

2.3 安装kubectl

要操作 Kubernetes,还需要另一个专门的客户端工具“kubectl”:

minikube kubectl

~/.bashrc追加命令(如果没有的话),简化kubectl命令:

...
alias kubectl="minikube kubectl --"

source <(kubectl completion bash)

2.4 部署Kubernetes

minikube start --kubernetes-version=v1.23.3

如果对自己的网速不自信的话,可以更换镜像地址

minikube stop

minikube delete --all
minikube start --kubernetes-version=v1.23.9 --image-mirror-country='cn' --registry-mirror=https://twm4fpgj.mirror.aliyuncs.com

查看Kubernetes集群状态:

lianhaifeng@lianhaifeng-virtual-machine:~$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

查看节点:

lianhaifeng@lianhaifeng-virtual-machine:~$ minikube node list
minikube        192.168.58.2

运行一个Nginx应用:

kubectl run ngx --image=nginx:alpine
lianhaifeng@lianhaifeng-virtual-machine:~$ kubectl get pods
NAME   READY   STATUS    RESTARTS   AGE
ngx    1/1     Running   0          47h

至此,我们已经安装了一个小而美的Kubernetes环境,接下来让我们探索下Kubernets工作机制的奥秘。

3 Kubernetes 的基本架构

操作系统的一个重要功能就是抽象,从繁琐的底层事务中抽象出一些简洁的概念,然后基于这些概念去管理系统资源。

Kubernetes 的管理目标是大规模的集群和应用,必须要能够把系统抽象到足够高的层次,分解出一些松耦合的对象,才能简化系统模型,减轻用户的心智负担。

k8s架构图

  • 采用了现今流行的“控制面 / 数据面”(Control Plane / Data Plane)架构。
  • 集群里的计算机被称为“节点”(Node),可以是实机也可以是虚机。
  • 少量的节点用作控制面来执行集群的管理维护工作。
    • 控制面的节点叫做 Master Node,一般简称为 Master。
    • 是整个集群里最重要的部分,可以说是 Kubernetes 的大脑和心脏。
  • 其它的大部分节点都被划归数据面,用来跑业务应用。
    • 数据面的节点叫做 Worker Node,一般就简称为 Worker 或者 Node。
    • 相当于 Kubernetes 的手和脚,在 Master 的指挥下干活。
    • Node 的数量非常多,构成了一个资源池,Kubernetes 就在这个池里分配资源,调度应用。
    • 因为资源被“池化”了,所以管理也就变得比较简单,可以在集群中任意添加或者删除节点。
  • kubectl,是 Kubernetes 的客户端工具,用来操作 Kubernetes,但它位于集群之外,理论上不属于集群。

查看 Kubernetes 的节点状态:

lianhaifeng@lianhaifeng-virtual-machine:~$ kubectl get node
NAME       STATUS   ROLES                  AGE    VERSION
minikube   Ready    control-plane,master   7d4h   v1.23.3

可以看到当前的 minikube 集群里只有一个 Master,那 Node 呢?

是因为 Master 和 Node 的划分不是绝对的。当集群的规模较小,工作负载较少的时候,Master 也可以承担 Node 的工作,就像我们搭建的 minikube 环境,它就只有一个节点,这个节点既是 Master 又是 Node。

3.1 节点内部的结构

Kubernetes 的节点内部也具有复杂的结构,是由很多的模块构成的,这些模块又可以分成组件(Component)插件(Addon)两类:

  • 组件 实现了 Kubernetes 的核心功能特性,没有这些组件 Kubernetes 就无法启动。
  • 插件 则是 Kubernetes 的一些附加功能,不安装也不会影响 Kubernetes 的正常运行。

3.2 Master 里的组件

3.2 Master 里的组件

  • apiserver
    • 是 Master 节点,同时也是整个 Kubernetes 系统的唯一入口
    • 对外公开了一系列的 RESTful API,并且加上了验证、授权等功能。
    • 所有其它组件都只能和它直接通信,可以说是 Kubernetes 里的联络员。
  • etcd
    • 是一个高可用的分布式 Key-Value 数据库,用来持久化存储系统里的各种资源对象和状态。
    • 相当于 Kubernetes 里的配置管理员。
    • 它只与 apiserver 有直接联系,也就是说任何其它组件想要读写 etcd 里的数据都必须经过 apiserver。
  • scheduler
    • 负责容器的编排工作,检查节点的资源状态。
    • 把 Pod 调度到最适合的节点上运行,相当于部署人员。
    • 因为节点状态和 Pod 信息都存储在 etcd 里,所以 scheduler 必须通过 apiserver 才能获得。
  • controller-manager
    • 负责维护容器和节点等资源的状态。
    • 实现故障检测、服务迁移、应用伸缩等功能,相当于监控运维人员。
    • 它也必须通过 apiserver 获得存储在 etcd 里的信息,才能够实现对资源的各种操作。

这 4 个组件也都被容器化了,运行在集群的 Pod 里,我们可以用 kubectl 来查看它们的状态:

lianhaifeng@lianhaifeng-virtual-machine:~$ kubectl get pod -n kube-system
NAME                               READY   STATUS             RESTARTS      AGE
coredns-64897985d-d5zbd            1/1     Running            1 (45h ago)   7d4h
etcd-minikube                      1/1     Running            1 (45h ago)   7d4h
kube-apiserver-minikube            1/1     Running            3             7d4h
kube-controller-manager-minikube   1/1     Running            4 (45h ago)   7d4h
kube-proxy-zlztd                   1/1     Running            1 (45h ago)   7d4h
kube-scheduler-minikube            1/1     Running            1 (45h ago)   7d4h
storage-provisioner                0/1     ImagePullBackOff   0             7d4h

-n kube-system 参数,表示检查“kube-system”名字空间里的 Pod。

3.3 Node 里的组件

  • kubelet(非容器化)
    • 是 Node 的代理,负责管理 Node 相关的绝大部分操作。
    • Node 上只有它能够与 apiserver 通信。
    • 实现状态报告、命令下发、启停容器等功能,相当于是 Node 上的一个“小管家”。
  • kube-proxy
    • 是 Node 的网络代理,只负责管理容器的网络通信,简单来说就是为 Pod 转发 TCP/UDP 数据包,相当于是专职的“小邮差”。
  • container-runtime
    • 是容器和镜像的实际使用者。
    • 在 kubelet 的指挥下创建容器,管理 Pod 的生命周期,是真正干活的“苦力”。

Kubernetes 的定位是容器编排平台,所以它没有限定 container-runtime 必须是 Docker,完全可以替换成任何符合标准的其他容器运行时,例如 containerd、CRI-O 等等,只不过在这里我们使用的是Docker。

这 3 个组件中只有 kube-proxy 被容器化了,而 kubelet 因为必须要管理整个节点,容器化会限制它的能力,所以它必须在 container-runtime 之外运行。

使用 minikube ssh 命令登录到节点后,可以用 docker ps 看到 kube-proxy:

lianhaifeng@lianhaifeng-virtual-machine:~$ minikube ssh
Last login: Sun May 21 11:53:08 2023 from 192.168.58.1
docker@minikube:~$ docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED        STATUS        PORTS     NAMES
cafb3f8e014e   nginx                  "/docker-entrypoint.…"   46 hours ago   Up 46 hours             k8s_ngx_ngx_default_066a844b-d429-4057-aca1-536c04d38f70_0
6f488ea5ca69   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_ngx_default_066a844b-d429-4057-aca1-536c04d38f70_0
5b77694e7e89   a4ca41631cc7           "/coredns -conf /etc…"   46 hours ago   Up 46 hours             k8s_coredns_coredns-64897985d-d5zbd_kube-system_99c6f163-5738-41d8-ab8f-9a42dc3c6331_1
74d32f36a523   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_storage-provisioner_kube-system_7fa7c71e-cc6a-4408-8b70-8b15534a10c8_1
0a2443c55984   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_coredns-64897985d-d5zbd_kube-system_99c6f163-5738-41d8-ab8f-9a42dc3c6331_1
048758be7002   9b7cc9982109           "/usr/local/bin/kube…"   46 hours ago   Up 46 hours             k8s_kube-proxy_kube-proxy-zlztd_kube-system_b294b472-367b-44ca-8781-fab810428037_1
1148430b4e0f   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_kube-proxy-zlztd_kube-system_b294b472-367b-44ca-8781-fab810428037_1
5d164c717143   25f8c7f3da61           "etcd --advertise-cl…"   46 hours ago   Up 46 hours             k8s_etcd_etcd-minikube_kube-system_482305b50d4b0d3dbab5b9f1be9b0b18_1
78b7581b6659   b07520cd7ab7           "kube-controller-man…"   46 hours ago   Up 46 hours             k8s_kube-controller-manager_kube-controller-manager-minikube_kube-system_b965983ec05322d0973594a01d5e8245_4
3b81da17d618   f40be0088a83           "kube-apiserver --ad…"   46 hours ago   Up 46 hours             k8s_kube-apiserver_kube-apiserver-minikube_kube-system_b7b1a80caec341a470c95988d72c0626_3
431f68d5dec6   99a3486be4f2           "kube-scheduler --au…"   46 hours ago   Up 46 hours             k8s_kube-scheduler_kube-scheduler-minikube_kube-system_be132fe5c6572cb34d93f5e05ce2a540_1
315d15480c7d   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_kube-controller-manager-minikube_kube-system_b965983ec05322d0973594a01d5e8245_1
799bfc75e1af   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_kube-apiserver-minikube_kube-system_b7b1a80caec341a470c95988d72c0626_1
3a67d5e7cebb   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_etcd-minikube_kube-system_482305b50d4b0d3dbab5b9f1be9b0b18_1
729db09d17a6   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_kube-scheduler-minikube_kube-system_be132fe5c6572cb34d93f5e05ce2a540_1
docker@minikube:~$ docker ps |grep kube-proxy
048758be7002   9b7cc9982109           "/usr/local/bin/kube…"   46 hours ago   Up 46 hours             k8s_kube-proxy_kube-proxy-zlztd_kube-system_b294b472-367b-44ca-8781-fab810428037_1
1148430b4e0f   k8s.gcr.io/pause:3.6   "/pause"                 46 hours ago   Up 46 hours             k8s_POD_kube-proxy-zlztd_kube-system_b294b472-367b-44ca-8781-fab810428037_1

退出(exit),查看 kubelet:

lianhaifeng@lianhaifeng-virtual-machine:~$ ps -ef|grep kubelet
root        4547    3077  6 04:21 ?        01:03:42 /var/lib/minikube/binaries/v1.23.3/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --config=/var/lib/kubelet/config.yaml --container-runtime=docker --hostname-override=minikube --kubeconfig=/etc/kubernetes/kubele .conf --node-ip=192.168.58.2
root        5147    5060  8 04:21 ?        01:20:09 kube-apiserver --advertise-address=192.168.58.2 --allow-privileged=true --authorization-mode=Node,RBAC --client-ca-file=/var/lib/minikube/certs/ca.crt --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota --enable-bootstrap-token-auth=true --etcd-cafile=/var/lib/minikube/certs/etcd/ca.crt --etcd-certfile=/var/lib/minikube/certs/apiserver-etcd-client.crt --etcd-keyfile=/var/lib/minikube/certs/apiserver-etcd-client.key --etcd-servers=https://127.0.0.1:2379 --kubelet-client-certificate=/var/lib/minikube/certs/apiserver-kubelet-client.crt --kubelet-client-key=/var/lib/minikube/certs/apiserver-kubelet-client.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --proxy-client-cert-file=/var/lib/minikube/certs/front-proxy-client.crt --proxy-client-key-file=/var/lib/minikube/certs/front-proxy-client.key --requestheader-allowed-names=front-proxy-client --requestheader-client-ca-file=/var/lib/minikube/certs/front-proxy-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=8443 --service-account-issuer=https://kubernetes.default.svc.cluster.local --service-account-key-file=/var/lib/minikube/certs/sa.pub --service-account-signing-key-file=/var/lib/minikube/certs/sa.key --service-cluster-ip-range=10.96.0.0/12 --tls-cert-file=/var/lib/minikube/certs/apiserver.crt --tls-private-key-file=/var/lib/minikube/certs/apiserver.key

3.4 组件总结

Kubernetes的大致工作流程

  • 每个 Node 上的 kubelet 会定期向 apiserver 上报节点状态,apiserver 再存到 etcd 里。
  • 每个 Node 上的 kube-proxy 实现了 TCP/UDP 反向代理,让容器对外提供稳定的服务。
  • scheduler 通过 apiserver 得到当前的节点状态,调度 Pod,然后 apiserver 下发命令给某个 Node 的 kubelet,kubelet 调用 container-runtime 启动容器。
  • controller-manager 也通过 apiserver 得到实时的节点状态,监控可能的异常情况,再使用相应的手段去调节恢复。

3.4 插件

minikube 也支持很多的插件,使用命令minikube addons list就可以查看插件列表:

lianhaifeng@lianhaifeng-virtual-machine:~$ minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | Google                         |
| cloud-spanner               | minikube | disabled     | Google                         |
| csi-hostpath-driver         | minikube | disabled     | Kubernetes                     |
| dashboard                   | minikube | disabled     | Kubernetes                     |
| default-storageclass        | minikube | enabled ✅   | Kubernetes                     |
| efk                         | minikube | disabled     | 3rd party (Elastic)            |
| freshpod                    | minikube | disabled     | Google                         |
| gcp-auth                    | minikube | disabled     | Google                         |
| gvisor                      | minikube | disabled     | Google                         |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [info@inaccel.com])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | Google                         |
| istio                       | minikube | disabled     | 3rd party (Istio)              |
| istio-provisioner           | minikube | disabled     | 3rd party (Istio)              |
| kong                        | minikube | disabled     | 3rd party (Kong HQ)            |
| kubevirt                    | minikube | disabled     | 3rd party (KubeVirt)           |
| logviewer                   | minikube | disabled     | 3rd party (unknown)            |
| metallb                     | minikube | disabled     | 3rd party (MetalLB)            |
| metrics-server              | minikube | disabled     | Kubernetes                     |
| nvidia-driver-installer     | minikube | disabled     | Google                         |
| nvidia-gpu-device-plugin    | minikube | disabled     | 3rd party (Nvidia)             |
| olm                         | minikube | disabled     | 3rd party (Operator Framework) |
| pod-security-policy         | minikube | disabled     | 3rd party (unknown)            |
| portainer                   | minikube | disabled     | 3rd party (Portainer.io)       |
| registry                    | minikube | disabled     | Google                         |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ✅   | Google                         |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

比较重要的有两个:DNS Dashboard

  • DNS
    • 在 Kubernetes 集群里实现了域名解析服务,能够让我们以域名而不是 IP 地址的方式来互相通信。
    • 是服务发现和负载均衡的基础。
    • 由于它对微服务、服务网格等架构至关重要,所以基本上是 Kubernetes 的必备插件。
  • Dashboard
    • 仪表盘,为 Kubernetes 提供了一个图形化的操作界面,非常直观友好。
    • 虽然大多数 Kubernetes 工作都是使用命令行 kubectl,但有的时候在 Dashboard 上查看信息也是挺方便的。

只要在 minikube 环境里执行一条简单的命令,就可以自动用浏览器打开 Dashboard 页面,而且还支持中文:

lianhaifeng@lianhaifeng-virtual-machine:~/桌面$ minikube dashboard

🤔  正在验证 dashboard 运行情况 ...
🚀  Launching proxy ...
🤔  正在验证 proxy 运行状况 ...
🎉  Opening http://127.0.0.1:36667/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
Gtk-Message: 20:12:44.459: Not loading module "atk-bridge": The functionality is provided by GTK natively. Please try to not load it.

宿主机本地访问:

4 总结

Kubernetes功能非常完善,实现了大部分常见的运维管理工作,而且是全自动化的,能够节约大量的人力成本。

  1. Kubernetes 能够在集群级别管理应用和服务器,可以认为是一种集群操作系统。它使用“控制面 / 数据面”的基本架构,Master 节点实现管理控制功能,Worker 节点运行具体业务。
  2. Kubernetes 由很多模块组成,可分为核心的组件和选配的插件两类。Master 里有 4 个组件,分别是 apiserver、etcd、scheduler、controller-manager。
  3. Node 里有 3 个组件,分别是 kubelet、kube-proxy、container-runtime。
  4. 通常必备的插件有 DNS 和 Dashboard。

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

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

相关文章

CMake入门教程【高级篇】管理MSVC编译器警告

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1.什么是MSVC?2.常用的屏蔽警告3.MSVC所有警告4.target_compile_options用法5.如何在CMake中消除MSVC的警告?6.屏蔽警告编写技巧

一台Linux服务jdk1.6 与 jdk1.8 并存,tomcat6+tomcat8 并存

Linux jdk1.6,1.8 tomcat6 tomcat8 并存 需求场景&#xff1a; 有一个项目 原来是 jdk1.6tomcat6 部署的&#xff0c;现在需要进行项目架构升级 项目需要适配jdk1.8 然后用 jdk.8 tomcat 8进行部署&#xff0c;然后下架 jdk1.6 的linux服务 现在有一台 jdk.8 tomcat 8的linu…

100V耐压 LED恒流驱动芯片 SL2516D兼容替换LN2516车灯照明芯片

SL2516D LED恒流驱动芯片是一款专为LED照明设计的高效、高精度恒流驱动芯片。与LN2516车灯照明芯片兼容&#xff0c;可直接替换LN2516芯片&#xff0c;为LED车灯照明提供稳定、可靠的电源解决方案。 一、SL2516D LED恒流驱动芯片的特点 1. 高效率&#xff1a;SL2516D采用先进的…

C#,字符串匹配(模式搜索)KMP算法的源代码与数据可视化

D.E.Knuth J.H.Morris 一、KMP算法 KMP 算法&#xff08;Knuth-Morris-Pratt 算法&#xff09;是其中一个著名的、传统的字符串匹配算法&#xff0c;效率比较高。 KMP算法由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt在 Brute-Force算法的基础上提出的模式匹配的改进算法。…

C# 使用Fleck创建WebSocket服务器

目录 写在前面 代码实现 服务端代码 客户端代码 调用示例 写在前面 Fleck 是 C# 实现的 WebSocket 服务器&#xff0c;通过 WebSocket API&#xff0c;浏览器和服务器只需要做一个握手的动作&#xff0c;然后浏览器和服务器之间就形成了一条快速通道&#xff1b;两者之间…

ubuntu 18.04网络问题

ubuntu 18.04网络问题汇总 准备工作一、有线网卡不可用二、无法访问外网 准备工作 安装好系统之后&#xff0c;检查gcc和make是否已经安装 $ which gcc /usr/bin/gcc $ which make /usr/bin/make如果未安装&#xff0c;则安装gcc和make $ apt install gcc $ apt install mak…

内网渗透实战攻略

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 介绍 什么是内网&#xff1f; 什么是内网渗透&#xff1f; 内网渗透的目的&#xff1a; 内网…

STS里的java 工程项目名称修改和目录设置成源代码

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

实现导航栏吸顶操作

一、使用VueUse插件 // 安装 npm i vueuse/core二、点击搜索useScroll 2.1搜索结果如图 三、使用 // 这是示例代码 import { useScroll } from vueuse/core const el ref<HTMLElement | null>(null) const { x, y, isScrolling, arrivedState, directions } useSc…

探索生成式AI:自动化、问题解决与创新力

目录 自动化和效率&#xff1a;生成式AI的颠覆力量 解谜大师生成式AI&#xff1a;如何理解和解决问题 创新与创造力的启迪&#xff1a;生成式AI的无限潜能 自动化和效率&#xff1a;生成式AI的颠覆力量 1. 神奇的代码生成器&#xff1a;生成式AI可以帮助开发人员像魔术一样快…

使用PAI-DSW搭建基于LangChain的检索知识库问答机器人

教程简述 在本教程中&#xff0c;您将学习如何在阿里云交互式建模&#xff08;PAI-DSW&#xff09;中&#xff0c;基于LangChain的检索知识库实现知识问答。旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。 LangChain是一个开源的框架&#xff0c…

模型参数访问

文章目录 前言某一层的参数目标参数一次性访问所有参数嵌套块收集参数 前言 在选择了架构并设置了超参数后&#xff0c;进入训练阶段。此时&#xff0c;我们的目标就是找到使损失函数最小化的模型参数。有时&#xff0c;我们希望提取参数&#xff0c;以便在其他环境中复用。 …

《华夏教师》是什么级别的期刊?是正规期刊吗?能评职称吗?

《华夏教师》杂志对象主要面向中小学校长和各级教育界管理者&#xff0c;旨在为教育工作者和管理者提供国内外最新、最前沿的教育动态&#xff0c;剖析教育教学热点问题&#xff0c;展现学校教师风采而服务。 收录情况&#xff1a;知网万方维普收录 投稿方式&#xff1a;教育类…

彭博评选2024年50家企业,比亚迪、联发科上榜 | 百能云芯

彭博资讯于9日发布2024年全球50家值得关注的企业名单&#xff0c;该名单由彭博分析师团队从金融到食品等领域追踪了约2,000家企业中挑选出的&#xff0c;根据「观点聚焦」清单&#xff0c;选出50家值得关注的公司&#xff0c;重点考虑了其独特观点、领导层变化、资产出售或并购…

评估LLM在细胞数据上的实用性(1)-基本概述

基于LLM的基础模型在工业和科学领域都取得了重大进展。本报告通过八个与单细胞数据相关的下游任务的综合实验&#xff0c;评估了LLM在单细胞测序数据分析中的性能。通过将七种不同的单细胞LLM与特定任务下的baselines进行比较&#xff0c;结果发现单细胞LLMs在所有任务中可能并…

Istio 实战:WasmPlugin(Proxy-Wasm 插件)开发(实现限流和修改请求和响应的 header)

WasmPlugin 的典型应用 限流&#xff1a;当前 envoy 提供的限流能力虽然比较强大&#xff0c;但主要提供了一些 api&#xff0c;在使用上对用户不够友好&#xff0c;且全局限流对每个请求都调用一次限流服务&#xff0c;性能损耗较大。因此&#xff0c;可以通过开发限流过滤器…

linux 压力测试 AB ApacheBench

ab的简介 ab是apachebench命令的缩写。 ab是apache自带的压力测试工具。ab非常实用&#xff0c;它不仅可以对apache服务器进行网站访问压力测试&#xff0c;也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等 ab的原理 ab的原理&#xff1a;ab命令会创建多…

order by之后的injection(sqllabs第四十六关)

order by相关注入知识 这一关的sql语句是利用的order by 根据输入的id不同数据排序不一样可以确定就是order by order by后面无法使用ubion注入&#xff08;靠找不到&#xff09; 可以利用后面的参数进行攻击 1&#xff09;数字 没作用考虑布尔类型 rand和select ***都可以 …

xss-labs(10-16)

level10:欢迎来到level10 尝试注入 <script>alert(欢迎来钓鱼)</script> 寻找注入点 让表单显示出来 随便输入一个字符康康 url出现了变化</

中国大学生计算机设计大赛—人工智能实践赛赛道—赛后感想

1.比赛介绍 中国大学生计算机设计大赛是我国高校面向本科生最早的赛事之一&#xff0c;是全国普通高校大学生竞赛排行榜榜单赛事之一。自2008年开赛至2019年&#xff0c;一直由教育部高校与计算机相关教指委等或独立或联合主办。大赛的目的是以赛促学、以赛促教、以赛促创&…