Kubernetes Pod入门
在 Kubernetes 中,一个重要的概念就是 Pod(豆英),Kubernetes 并不是直接管理容器的,他的最小管理单元叫做 Pod。
一、什么是 Pod。
Pod 是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及运行规范。在 Pod中,所有容器都被统一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod 是它们的逻辑主机,Pod 包含业务相关的多个应用容器。所以,Pod 是一组具有共享命名空间、IP 地址和端口的容器的集合。
备注:
共享上下文是一种基于线程的内存位置
1:从使用的角度来看
在实际的使用时,单个容器是无法单独来支撑我们的应用的,往往需要很多微服务才能组成一个系统,并且还会存在A服务依赖B服务,B服务需要和C服务共用某个目录。另外,在使用裸容器时,很难实现对容器内进行健康检査以及横向扩容等操作,而 Pod 可以轻松解决这些问题。
2:从 Kubernetes 的角度来看
Docker 只是容器 Runtime(运行时)的一种们还有很多容器 Runtime,比如 Rkt、CRI-0等,而 Kubernetes 作为目前最流行的容器编排工具,需要支持各个 Runtime 并且不依赖于底层Runtime 的实现技术,于是就抽象出了 Pod 这个概念,用于管理多个紧密相连的符合 CRI 标准的容器。
Pod 可以简单的理解为一组、一个或多个容器,每个 Pod 还包含一个 Pause 容器,Pause 容器是 Pod 的父容器,主要负责僵尸进程的回收管理。同时,通过 Pause 容器可以使同一个 Pod里面的不同容器共享存储、网络、PID、IPC 等,容器之间可以使用 Localhost:Port 的方式相瓦访问,可以使用 volume 实现数据共享。根据 Docker 的构造,Pod 可以被创建为一组具有共享命名空卷、IP 地址和端口的容器。
Pod 有两个必须知道的特点:
网络:每一个 Pod 都会被指派一个唯一的 Ip 地址,在 Pod 中的每一个容器共享网络命名空间,包括 Ip 地址和网络端口。在同一个 Pod 中的容器可以同 1ocahost 进行互相通信。当 Pod中的容器需要与 Pod 外的实体进行通信时,则需要通过端口等共享的网络资源。
存储:Pod 能够被指定共享存储卷的集合,在Pod中所有的容器能够访问共享存储卷,允许这些容器共享数据。存储卷也允许在一个 Pod 持久化数据,以防止其中的容器需要被重启。
3:Pod 的状态
(1)kubectl 命令创建 pod
kubectl run nginx--image=nginx:1.7.9 --labels="app=nginx"
(2)查看 pod
kubectlget pods -n defaultNAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 78s
(3)显示 Pod的更多信息
kubectl get pod nginx -o wideNAME READY STATUS RESTARTS AGE Ip NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 54s 10.244.58.195 k8s-node02 <none> <none>
(4)查看 pod日志
curl 10.244.58.195kubectl logs nginx
(5)以yaml格式显示 Pod 详细信息
kubectl get pod nginx -o yaml
(6)显示资源的详细描述信息
kubectl describe pod nginx
备注:
kubectl get:常用于査看同一资源类型的一个或多个资源对象,可以使用-0 参数自定义输出格式。
kubectl describe:侧重于描述指定资源的各方面的详细信息,不仅会返回节点信息,还会返回在其上运行的 Pod 的摘要、节点事件等信息。
(7)在 Pod 的容器中执行命令
kubectl exec nginxc nginx-- date
备注:
-c:指定 Pod 中容器的名字
(8)登录到 Pod 中的容器中
kubectl exec -it nginx-c nginx -- bash
备注:
kubectl exec -it nginx --bash
如果登录的时候不指定容器,就登录到 Pod 中的第一个容器中。
(9)在线编辑运行中的资源对象
kubectl edit pod nginx
(10)将 pod 的端口映射到宿主机
kubectl port-forward --address 0.0.0.0 pod/nginx 8080:80Forwarding from 0.0.0.0:8080->80
其他主机访问测试:
curl 192.168.10.101:8080
注意:
此命令会在前台运行,此时就可以在其他客户端用该 k8s 主机的 IP 地址和 8080 的端口号进行访问了,Ctr1+c停止,但停止后就没有这个映射了。
(11)在宿主机和 Pod 的容器之间拷贝文件
kubectl cp nginx:etc/fstab /opt/aaa.txtkubectl cp /opt/aaa.txt nginx:etc/bbb.txt
(12)Pod 的状态
kubectl get pods -n defaultNAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 29m
可以看到此时的 Pod 的状态是 Running,Pod 的状态不仅仅只有 Running,常见的其他状态如表所示:
状态
说明
Pending(挂起)
Pod 已经被 Kubernetes 系统接收,但是仍有一个或多个容器未被创建,可以通过 kubectl describe 查看处于Pending 状态的原因。
Running(运行中)
Pod 已经被绑定到一个节点上,并且所有的容器都已经被创建,而且至少有一个是运行的状态、正在启动或者重启,可以通过 kubectl logs 查看 Pod 的日志。
Succeeded
所有容器执行成功,并终止,并且不会再次重启,可以通过kubectl logs 査看 Pod 的日志
Failed(失败)
所有容器都已终止,并且至少一个容器以失败的方式终止,也就是说这个容器要么以非零状态退出,要么被系统终止,可以通过 logs 和 describe 査看 Pod 的日志和状态
Unknown(未知)
通常是由于通信问题造成的无法获得 Pod 的状态
ImagePullBackOff
ErrImagePull
镜像拉取失败,一般是由于镜像不存在、网络不通或者需要登录认证引起的,可以使用 describe 命令查看具体的原因
CrashLoopBackoff
容器启动失败,可以通过 logs 命令查看具体的原因,一般为启动命令不正确、健康检査不通过等原因
OOMKilled
容器内存溢出,一般是容器的内存 Limit 设置的过小,或者程序本身有内存溢出,可以通过 logs 查看程序的启动日志
Terminating
Pod 正在被删除,可以通过 describe 查看状态
SysctlForbiden
Pod 自定义了内核配置,但 kubect1 没有添加内核配置或配置的内核参数不支持,可以通过 describe 查看具体原因
Completed
容器内部主进程退出,一般计划任务执行结束会显示该该状态,此时可以通过 logs 查看容器日志
ContainerCreating
Pod 正在创建,一般正在下载镜像,或者有配置不当的地方可以通过 describe 查看具体原因
(13)删除 Pod
kubectl delete pod nginx
二、Pod 探针
在生产环境中,进程正常启动并不代表应用能正常处理请求,所以合理的设计应用的健康检查尤其重要。在使用裸机或裸容器部署时,一般很难对应用做很完善的健康检査,而 Pod 提供的探针可以很方便的用来检测容器的应用是否正常。目前探针有3种检测方式,可以根据不同的场景选择合适的健康检查方式。检查方式如表所示:
上述的检查方式可以被周期性的执行,每次检查容器后可能得到的容器状态如表所示:
Pod 探针有三类,分别是:livenessProbe(存活探针)、readinessProbe(就绪探针)、startupProbe(启动探针)。
livenessProbe (存活探针):判断容器是否正常运行,如果失败则杀掉容器(不是 pod),再根据重启策略决定是否重启容器
readinessProbe(就绪探针):判断容器是否能够进入ready 状态,探针失败则进入noready 状态,并从service 的endpoints 中剔除此容器
startupProbe(启动探针): 判断容器内的应用是否启动成功,在 success 状态前,其它探针都处于无效状态
三、Pod 镜像拉取策略和重启策略
在发布应用或者更改控制器配置时,会触发Pod 的滚动更新,此时针对容器的镜像有不同的拉取方式。如表所示:
指定拉取策略:
kubectl run nginx --image=nginx:1.7.9 --labels="app=nginx" --image-pull-policy=Never
Pod 进行部署或者运行时,难免会出现故障,对于故障。,Pod也有不同的处理方式,如表所示:
指定重启策略:
kubectl delete pod nginx
kubectl run nginx --image=nginx:1.7.9 --labels="app=nginx" --restart=OnFailure
四、创建一个简单的 Pod
1:编写一个简单的 Pod
vim nginx-pod.yamlapiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
2:编写 Pod 配置文件 frontend-localredis-pod.yaml
cat <<E0F>frontend-localredis-pod.yam1apiVersion: v1
kind: Pod
metadata:
name: redis-php
labels:
name: redis-php
spec:
containers:
- name: frontend
image: kubeguide/guestbook-php-frontend:localredis
imagePullPolicy: IfNotPresent
livenessProbe:
tcpSocket:
port: 80
initialDelaySeconds: 1
periodSeconds: 3
timeoutSeconds: 1
ports:
- containerPort: 80
- name: redis
image: kubeguide/redis-master
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
restartPolicy: OnFailure
EOF
备注:
##必选,版本号apiVersion:v1
kind: Pod##必选,资源类型
metadata:##必选,元数据
name: redis-php##必选,Pod 名称
labels :##自定义的 pod 标签列表
##标签值name:redis-php
##必选,Pod 中容器的详细信息spec:
##必选,Pod 中的容器列表containers:
##必选,自定义的容器名称- name:frontend
image:kubeguide/guestbook-php-frontend:localredis##必选,容器的镜像名称
imagePullPolicy:IfNotPresent##镜像拉取策略
设置存活探针livenessProbe:
tcpsocket:##测试某端口是否可以连接
##指定要测试的端口port:80
initialDelaySeconds:1 #指定 kubelet 在执行第一次探测前应该等待1秒,即第一次探测是在容器启动后的第2秒才开始执行。默认是0秒,最小值是0
periodseconds:3#指定了 kubelet 应该每 3 秒执行一次存活探测。默认是 10 秒。最小值是 1
timeoutSeconds:1##当探测失败时,Kubernetes 将在放弃之前重试的次数。存活探测情况下的放弃就意味着重新启动容器。就绪探测情况下的放弃Pod 会被打上未就绪的标签。默认值是 3。最小值是 1
##需要暴露的端口号列表ports:
##容器需要监听的端口号-containerPort:80
name:redis##另一个容器的名字
image:kubeguide/redis-master##另一个容器的镜像
##需要暴露的另一个容器的端口列表ports:
containerPort:6379##容器需要监听的端口号
##重启策略restartPolicy:onFailure
3:Pod 文件语法
(1)Pod 文件的一级属性
一级属性主要包含5部分:
apiVersion<string>版本,由 kubernetes 内部定义,版本号必须可以用 kubectlapi-versions 查询到
kind<string>类型,由 kubernetes 内部定义,版本号必须可以用 kubect1api-resources 查询到
metadata<Object>元数据,主要是资源标识和说明,常用的有 name、namespace、labels
spec<Object>描述,这是配置中最重要的一部分,里面是对各种资源配置的详细述
status<Object>状态信息,里面的内容不需要定义,由kubernetes 自动生成
(2)spec(规格)属性
在一级属性中,spec是研究的重点,它的常见子属性有:
containers<[]Object>容器列表,用于定义容器的详细信息
nodeName<String>根据 nodeName 的值将 pod 调度到指定的 Node 节点上
nodeselector <map[]>根据 Nodeselector 中定义的信息选择将该 Pod 调度到包含这些label的Node 上
hostNetwork<boolean〉是否使用主机网络模式,默认为 false,如果设置为 true,表示使用宿主机网络
volumes<[]0bject>存储卷,用于定义 Pod 上面挂在的存储信息
restartPolicy<string>重启策略,表示 Pod 在遇到故障的时候的处理策略
(3)通过 kubectl explain 命令来查看每种资源的可配置项
kubectl explain podkubectl explain deployment
kubectl explain service
kubectl explain pod.metadata
kubectl explain pod.spec.containers
备注:
查看某种资源可以配置的一级属性
# kubectl explain 资源类型
查看属性的子属性
# kubectl explain 资源类型,属性
4:运行 kubectl create 命令创建此 Pod
kubectl create -f frontend-localredis-pod.yaml
5:查看已经创建的 Pod
kubectl get pods
NAME READY STATUS RESTARTS AGE
redis-php 2/2 Running 0 119s
6:查看 pod 详细创建信息
kubectl describe pod redis-php
7:删除 pod
kubectl delete -f frontend-localredis-pod.yaml
五、Pod 的基本用法
1:编写 pod 文件,将两个容器放在同一个 pod 中
cat <<EOF>nginx-php.yamlapiVersion: v1
kind: Pod
metadata:
name: nginx-php
labels:
name: nginx-php
spec:
containers:
- name: nginx-app
image: nginx:1.7.9
ports:
- containerPort: 80
- name: php-app
image: bitnami/php-fpm
imagePullPolicy: Never
ports:
- containerPort: 9000
EOF
2:部署 nginx的 pod 文件
kubectl apply -f nginx-php.yamlkubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-php 2/2 Running 0 28s
备注:
此时可以看到 pod 中有两个容器处于 running 状态中
3:查看 pod 的详细信息
kubectl describe pod nginx-php
4:暴露端口
kubectl expose pod nginx-php --port=8080 --target-port=80 --type=NodePort --name=nginx-php
5:查看端口映射
kubectl get pod,svc nginx-php -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
pod/nginx-php 2/2 Running 0 2m35s 172.25.244.199 k8s-master01 <none> <none> service/nginx-php NodePort 10.99.26.98
<none> 8080:32598/TcP 2m24s name=nginx-php
6:测试访问
用外部主机,访问master 的ip 地址:映射的端口
http://192.168.10.101:32598/
7:删除 pod
kubectl delete -f nginx-php.yaml
六、静态 pod
静态 Pod 是由 kubelet 进行管理的仅存在于各个 Node 上的 Pod。他们不能通过 API Server进行管理,无法于 Replicationcontroller、Deployment 或者 Daemonset 进行关联,并且kubelet 无法对他们进行健康检査。静态 Pod 总是由 kubelet 创建的,并且总在 kubelet 所在的 Node 上运行。
1:编写 yamal 文件
cat<<E0F>/etc/kubernetes/manifests/nginx-pod.yamlapiVersion:v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
EOF
2:不需执行部署命令,过一会,查看 pod
kubectl get podNAME READY STATUS RESTARTS AGE
nginx-php 2/2 Running 4(18m ago)20m
static-web-k8s-master01 1/1 Running 0 20s
3:删除静态 pod 的方法
rm -rf /etc/kubernetes/manifests/nginx-pod.yaml
备注:
不能用如下语句删除
kubectl delete pod static-web-k8s-master01
这样删除,会让 pod 处于 pending 状态,但无法删除
七、Pod 启动阶段(相位 phase)
Pod 创建完之后,一直到持久运行起来,中间有很多步骤,也就有很多出错的可能,因此会有很多不同的状态
1:pod 的启动过程包含的步骤
调度到某台 node 上。kubernetes 根据一定的优先级算法选择一台 node 节点将其作为Pod 运行的 node
拉取镜像
挂载存储配置等
运行起来。如果有健康检查,会根据检查的结果来设置其状态
2:phase 的可能状态
Pending:表示 APIServer 创建了 Pod 资源对象并已经存入了 etcd 中,但是它并未被调度完成(比如还没有调度到某台 node 上),或者仍然处于从仓库下载镜像的过程中
Running:Pod 已经被调度到某节点之上,并且 Pod 中所有容器都已经被 kubelet 创建至少有一个容器正在运行,或者正处于启动或者重启状态(也就是说 Running 状态下的 Pod 不一定能被正常访问)
Succeeded:有些 pod 不是长久运行的,比如 job、cronjob,一段时间后 Pod 中的所有容器都被成功终止,并且不会再重启。需要反馈任务执行的结果
Failed:Pod 中的所有容器都已终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止,比如command 写的有问题
Unknown:表示无法读取 Pod 状态,通常是 kube-controller-manager 无法与 Pod 通信
八、故障排除步骤
査看 Pod 事件
kubectl describe TYPE NAME PREFIX
査看 Pod 日志(Failed 状态下)
kubectl logs <POD NAME>[-c Container NAME]
进入 Pod(状态为running,但是服务没有提供)
kubectl exec it <POD NAME> bash
查看集群信息
kubectl get nodes
发现集群状态正常
kubectl cluster-info
査看 kubelet 日志发现
journalctl -xefu kubelet
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
Kubernetes Pod入门
在 Kubernetes 中,一个重要的概念就是 Pod(豆英),Kubernetes 并不是直接管理容器的,他的最小管理单元叫做 Pod。 一、什么是 Pod。 Pod 是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及运行规范。在 Pod中&…...
![](https://www.ngui.cc/images/no-images.jpg)
opencv批量修改图片大小
文章已删除,访问可以 在点击这里查找. 在点击这里查找. 在点击这里查找. 在点击这里查找. 在点击这里查找. 在点击这里查找. 在点击这里查找. ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~...
![](https://i-blog.csdnimg.cn/direct/dbc175ecf98d4add9f5df2c444bb8527.png)
【RTT-Studio】详细使用教程十二:UART的分析和使用
文章目录 一、简介1.串口发送模式2.串口接收模式 二、串口配置三、串口发送四、串口接收 一、简介 本文主要阐述STM32串口的几种工作中使用的工作模式和编程思路。串口通常情况下使用的是:1个起始位,8个数据位,无奇偶校验,1位停止…...
![](https://img-blog.csdnimg.cn/direct/00d4fdeb7b0d4dbb99e88f325ef249d8.gif#)
【AI绘画】Midjourney前置指令/settings设置详解
文章目录 💯Midjourney前置指令/settings设置详解💯Use the default model(AI绘画所使用的大模型)Midjourney Model(Midjourney 模型)Niji Model(Niji模型) 💯Midjourney…...
![](https://i-blog.csdnimg.cn/direct/a4489d7e07a0423d95949157f1b2576d.png)
【NI国产替代】PXIe‑4330国产替代24位,8通道PXI应变/桥输入模块
25 kS/s,24位,8通道PXI应变/桥输入模块 PXIe‑4330是一款同步输入模块,为基于桥接的传感器提供集成数据采集和信号调理。 PXIe‑4330具有更高的准确性、高数据吞吐量和同步特性,使其成为高密度测量系统的理想选择。\n\n为了消除噪…...
![](https://img-blog.csdnimg.cn/img_convert/1cdaae1c3f4e4d68881d9e4ef7e2a249.png)
哪里可以免费上传招生简章
随着招生季的临近,各高校和培训机构纷纷摩拳擦掌,准备迎接新一代学子们的到来。在这个信息化的时代,如何让招生简章发挥最大的效用,成为吸引优质生源的关键。 那么如何制作招生简章? 1. 注册账号:访问FLBO…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
Midjourney中文版教程:参数详解
1.长宽比 可以设置图片的纵横比。按照需求可以选择不同的尺寸,也可以自定义。 注意:--ar必须使用整数。使用139:100代替1.39:1。 长宽比会影响生成图像的形状和构图。 在放大时,某些长宽比可能会稍微改变。 较旧的…...
![](https://i-blog.csdnimg.cn/direct/bd5fedf0a5aa46b3927d959caf3ac09b.jpeg)
误闯机器学习(第一关-概念和流程)
以下内容,皆为原创,实属不易,请各位帅锅,镁铝点点赞赞和关注吧! 好戏开场了。 一.什么是机器学习 机器学习就是从数据中自动分析获取模型(总结出的数据),并训练模型,去预…...
![](https://i-blog.csdnimg.cn/direct/951985a90c0b4b15a8084611ef167886.png)
Tensorflow 2.16.0+在PyCharm中找不到keras的报错解决
在PyCharm(2024.2版本)中,直接使用from tensorflow import keras会提示“Cannot find reference ‘keras’ in ‘init.py’ ”,找不到keras,如下图所示。 查阅相关资料,可以发现在tf2.16之后,默认的keras后端升级为了…...
![](https://www.ngui.cc/images/no-images.jpg)
【Python】高效的Web自动化测试利器—Python+Playwright快速上手自动化实战指南(限时开放)
文章目录 前言一.playwright是什么二.python引入playwright1.安装2.playwright命令行参数3.playwright codegen自动生成代码4.Chrome和Chromium有什么关系?三.基本概念1. 无头浏览器(Headless Browser)2.同步和异步模式操作playwright2.1.同步(Sync)模式同步方式代码模板2…...
![](https://img-blog.csdnimg.cn/img_convert/0bb9e994ad9a991fccc9ec75ff3ae400.png)
CentOS上安装和配置Docker与Docker Compose的详细指南
引言 大家好,我是小阳,在这篇文章中,我将带大家一步步完成在CentOS系统上安装和配置Docker与Docker Compose的过程。通过这篇详细的指南,你将能够轻松配置Docker环境,并在日常开发和部署中享受其带来的便利。 原文阅…...
![](https://www.ngui.cc/images/no-images.jpg)
Vim多文件操作
Vim多文件编辑的实际意义在于它极大地提高了开发者在处理多个相关文件时的效率和便利性。在软件开发、文本编辑、代码审查、配置管理等场景中,经常需要同时打开和操作多个文件。Vim的多文件编辑功能使得这些任务变得更加直观和高效。 提高编码效率:在开发…...
![](https://img-blog.csdnimg.cn/img_convert/c0164698f8db911c254840c8f3191fec.jpeg)
【ARM+Codesys 客户案例 】 基于RK3568/A40i/STM32+CODESYS在智能制造中的应用案例:全自动切片机器人
蔬菜是人们日常生活必不可缺的食品,并且食用方法多种多样。自步入小康社会以来,人们的生活节奏越来越快,很多传统服务已不能满足人们的物质需求和生活节奏。日常生活中通过手工快速切菜严重地威胁着人身安全,切菜时间过长或切菜不…...
![](https://i-blog.csdnimg.cn/direct/ed03aa0a680342bbaec05e6eb92b8401.png)
NSI程序打包脚本文件编写教程
引言 NSIS (Nullsoft Scriptable Install System) 是一个专业开源的制作 windows 安装程序的工具。我们通过HM NSIEDIT编写好脚本、编译即可生成exe安装包。安装过程中可以配置其安装包图标、名称、出版人、网站等。此外,还可以设置程序开机自启动、管理员权限运行…...
![](https://i-blog.csdnimg.cn/direct/58851bf7e4464385aa1fe861c455313a.png)
[LitCTF 2023]1zjs
很有意思的一道题,打开题目环境之后F12可以看到 点击那个蓝色下划线的就能看到: 然后访问: /fk3f1ag.php就可以看到: 然后将这些复制到控制台然后回车就能得到flag。...
![](https://i-blog.csdnimg.cn/direct/7e5fa2637cf7489ab17075fbcf978843.png)
MCU复位RAM会保持吗,如何实现复位时变量数据保持
在使用MCU时,通常大家默认MCU复位时RAM会被复位清零,那实际MCU复位时RAM是什么状态?如何让mcu复位时RAM保持不变呢? MCU复位有电源复位、Standby复位、内核复位、看门狗复位、引脚复位等。 其中内部会有掉电动作的复位有电源复位…...
![](https://i-blog.csdnimg.cn/direct/46797d4dbe854c0eb7bb65e918561956.png)
解决window 端口的占用问题
netstat -nao | findstr "5554" taskkill -pid 5076 -f 本文资料来自 https://cloud.tencent.com/developer/article/1703982...
![](https://i-blog.csdnimg.cn/direct/0dd2ae1a8bc7456f9c13a0f318d77dc6.png)
【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署
【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署 什么是RAG: 我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗?Kimi学了这些资料以后,根据这里面的信息综…...
![](https://www.ngui.cc/images/no-images.jpg)
PyTorch 基础学习(10)- Transformer
系列文章: 《PyTorch 基础学习》文章索引 介绍 Transformer模型是近年来在自然语言处理(NLP)领域中非常流行的一种模型架构,尤其是在机器翻译任务中表现出了优异的性能。与传统的循环神经网络(RNN)不同&a…...
![](https://i-blog.csdnimg.cn/direct/2696fdb5b4b1400f8c8c6f74f6867a65.jpeg)
mybatis-plus使用
目录 1. 快速开始 1. 创建user表 2. 插入几条数据 3. 创建一个新的springboot项目 4. 导入mybatis-plus依赖 5. 在配置文件中进行配置 6. 编写实体类 7. 编写Mapper 接口类 8. 添加 MapperScan 注解 9. 测试 编辑2. CRUD 1. 插入一条语句 2. 根据主键id删除一条记录 3. 根据…...
![](https://www.ngui.cc/images/no-images.jpg)
ant-design-vue快速上手指南及排坑攻略
前言 ant-design-vue是Ant Design的Vue实现,旨在为Vue用户提供一套企业级的UI设计语言。本文将带你快速上手ant-design-vue,并在实践中分享一些常见的坑及解决方法。遵循本文档,让你轻松搭建优雅的Vue应用。 一、环境准备 在开始之前&…...
![](https://i-blog.csdnimg.cn/direct/8e64fab0f076420088b63f2695369151.png)
【GitLab】使用 Docker 安装 3:gitlab-ce:17.3.0-ce.0 配置
参考阿里云的教程docker的重启 sudo systemctl daemon-reload sudo systemctl restart docker配置 –publish 8443:443 --publish 8084:80 --publish 22:22 sudo docker ps -a 當容器狀態為healthy時,說明GitLab容器已經正常啟動。 root@k8s-master-pfsrv:~...
![](https://i-blog.csdnimg.cn/direct/8a9292840ec94feb9b6f43d820ffd410.png)
多线程(4)——单例模式、阻塞队列、线程池、定时器
1. 多线程案例 1.1 单例模式 单例模式能保证某个类在程序中只存在唯一一份实例,不会创建出多个实例(这一点在很多场景上都需要,比如 JDBC 中的 DataSource 实例就只需要一个 tip:设计模式就是编写代码过程中的 “软性约束”&am…...
![](https://img-blog.csdnimg.cn/img_convert/a3fef49d7bc86b6dee724494717e4e7f.png)
告别电量焦虑,高性能65W PD快充芯片HUSB380A打造梦中情【头】
市面上的充电器越来越卷,让人眼花缭乱。压力同样也给到了快充芯片行业,要在激烈的市场竞争中脱颖而出,快充芯片必须集高功率、高性价比与广泛的兼容性等于一身。 基于此,慧能泰推出了新一代高性能PD Source产品——HUSB380A。 图…...
![](https://i-blog.csdnimg.cn/direct/5dc54937dd734ec29f7ab057052192a1.png)
vulnhub靶场 — NARAK
下载地址:https://download.vulnhub.com/ha/narak.ova Description:Narak is the Hindu equivalent of Hell. You are in the pit with the Lord of Hell himself. Can you use your hacking skills to get out of the Narak? Burning walls and demons are around every cor…...
![](https://i-blog.csdnimg.cn/direct/66672baa8b144f4295eb207a4b0d5b84.png)
RabbitMQ如何保证消息不丢失
RabbitMQ消息丢失的三种情况 第一种:生产者弄丢了数据。生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 第二种:RabbitMQ 弄丢了数据。MQ还没有持久化自己挂了。 第三种…...
![](https://i-blog.csdnimg.cn/direct/abe98c388596471990a0e98719fc9f81.png)
(亲测有效)SpringBoot项目集成腾讯云COS对象存储(1)
目录 一、腾讯云对象存储使用 1、创建Bucket 2、使用web控制台上传和浏览文件 3、创建API秘钥 二、代码对接腾讯云COS(以Java为例) 1、初始化客户端 2、填写配置文件 3、通用能力类 文件上传 测试 一、腾讯云对象存储使用 1、创建Bucket &am…...
![](https://i-blog.csdnimg.cn/direct/a7960e672f25463da6ab3981fb8b4cc6.jpeg)
无人机之故障排除篇
一、识别故障 掌握基本的无人机系统知识,遵循“先易后难、先外后内、先软件后硬件”的原则进行故障识别。一旦发现故障,立即停止飞行,避免进一步损坏。 二、机械部件维修 对于机身裂痕、螺旋桨损坏等情况,根据损坏程度更换相应部…...
![](https://www.ngui.cc/images/no-images.jpg)
深入理解Python常见数据类型处理
目录 概述数字类型 整数(int)浮点数(float)复数(complex) 字符串(str) 字符串基本操作字符串方法 列表(list) 列表基本操作列表方法列表推导式 元组…...
![](https://img-blog.csdnimg.cn/img_convert/38b0187afe4489bcbaf5cd6bdedac97c.png)
最佳实践:CI/CD交付模式下的运维展望丨IDCF
李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员 一、DevOps现状 据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度…...
网站建设那个公司好/做竞价推广大概多少钱
在开发项目的过程中,有个需求是这样的,点击按钮,弹出一个modal框,要求modal框里的input自动获取焦点。 input输入框单纯的自动获取焦点是很简单的,只需要一个属性autofocus"autofocus"就够了。然而…...
![](/images/no-images.jpg)
网站开发产生的材料/杭州互联网公司排名榜
php采集文章中的图片获取替换到本地实例导语:PHP中如何把图片替换到本地中,你知道这样的程序要怎么写吗?以下的是对php采集文章中的图片获取替换到本地的实现代码进行了详细的.分析介绍,有需要的朋友可以参考一下。代码如下:/*** …...
![](https://img-blog.csdnimg.cn/img_convert/18746caa979331eaf684ec742fcc2e4d.png)
微信公众号被收费299/惠州百度seo在哪
题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:安全员-A证考试内容考前必练!安全生产模拟考试一点通每个月更新安全员-A证考试资料题目及答案!多做几遍,其实通过安全员-A证复审模拟考试很简单…...
![](https://img-blog.csdnimg.cn/img_convert/2aa59f8569934defe1f4dce5275047c7.png)
网站开发任务/外链代发平台
SwipeRefreshLayout的功能就是可以让我们的界面在不动的情况下,下拉直接刷新废话不多说,效果图奉上:activity_listview布局文件android:id"id/sr1"android:layout_width"match_parent"android:layout_height"match_parent">android:id"i…...
![](https://img-blog.csdnimg.cn/img_convert/081e31fb6e30ec514cf736fbee7a6619.png)
lnmp和wordpress/免费搭建网站的软件
原标题:小米同时发力四款机型,但第一时间使用安卓11还需接受几点问题!系统想让手机产品流畅使用,肯定离不开系统优化,只有出色的系统优化才能让手机用户获得更加出色的使用体验,相反,如果手机系…...
![](/images/no-images.jpg)
网站开发编程语言/网络推广宣传方式
FP6280XR-G1 SOP-8L(EP)PWM提升转换器 资料介绍 一般说明 FP6280是一种用于广泛工作电压应用的升压拓扑开关调节器。其内置的20 mΩ功率MOSFET使该调节器的功率高效。内部补偿网络使外部组件计数最小化,并且误差放大器的非反相输入连接到一个0.6V的精度参考电压。…...