K8s操作命令

生命周期管理
1. 创建
1. 创建资源
-
kubectl run
-
- 创建并运行一个或多个容器镜像。
- *创建一个deployment或job来管理容器*。
语法:kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command] – [COMMAND] [args…]
kubectl run nginx --replicas=3 --labels="app-nginx-example" --image=nginx:1.10 --port=80
- kubectl create
kubectl create deployment nginx --image=nginx
# 根据yaml配置文件创建资源对象
kubectl create -f zookeeper.yaml
# 根据yaml配置文件一次创建Service和RC
kubectl create -f my-service.yaml -f my-rc.yaml
# 创建名称空间
kubectl create namespace bigdata
- kubectl apply
kubectl apply deployment nginx --image=nginx
# 使用yaml文件创建资源
kubectl apply -f zookeeper.yaml
2. 标签操作
- 查询标签
kubectl get nodes --show-labels
- 添加****标签
# 为指定节点添加标签
kubectl label nodes nodeName labelName=value
# 为指定Pod添加标签
kubectl label pod podName -n nsName labelName=value
- 修改****标签
# 修改节点标签值
kubectl label nodes nodeName
# 修改Pod标签值(需要overwrite参数)
kubectl label pod podName -n nsName labelName=value --overwrite
- 删除****标签
# 为指定节点删除标签
kubectl label nodes nodeName labelName-
# 删除Pod标签
kubectl label pod podName -n nsName labelName-
2. 查看
# 查看集群状态
kubectl get cs# 查看Pod
kubectl get pods
kubectl get pod
kubectl get po# 查看指定名称Pod
kubectl get pod mynginx
kubectl get pod/mynginx# 同时查看多个资源
kubectl get deploy,pods# 查看Pod端口信息
kubectl get pod,svc# 特定命名空间资源查看
kubectl get pods -n bigdata# 查看所有命名空间下的pod信息
kubectl get pod --all-namespaces
kubectl get pods --A# 获取Pod运行在哪个节点上的信息
kubectl get pod -o wide# 显示Pod标签信息
kubectl get pods --show-labels# 查看特定标签的Pod
kubectl get pods -l app=example# 以JSON格式显示Pod的详细信息
kubectl get pod podName -o json# 查看RS
kubectl get replicasets -o wide# 查看Deployments
kubectl get deployments -o wide# 查看ip和端口,也叫端点
kubectl get ep# 查看事件
kubectl get ev
- yaml方式
# 以yaml格式显示Pod的详细信息
kubectl get pod podName -o yaml
kubectl get pod -f pod.yaml
kubectl get pod -f pod1.yaml -f pod2.yaml# 用get生成yaml文件
kubectl get deploy/nginx --export -o yaml > my-deploy2.yaml# 查看资源子节点详情
kubectl explain pods.spec.containers# 用run命令生成yaml文件,dry-run尝试运行,但不会生成,可用于检查语法错误
kubectl run nginx --image=nginx:latest --port=80 --replicas=3 --dry-run
# 尝试运行,并生成yaml文件
kubectl run nginx --image=nginx:latest --port=80 --replicas=3 --dry-run -o yaml > my-deploy.yaml
3. 发布
# 暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl expose deployment nginx --port=80 --type=NodePort --target-port=80 --name=nginx-service# 输出为yaml文件(推荐)
kubectl expose deployment nginx --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml > web1.yaml
kubectl expose deployment nginx -n bigdata --port=80 --type=NodePort
4. 故障排查
1. 资源详情排查
# 显示Node的详细信息
kubectl describe nodes nodeNamePrefix
# 显示Pod的详细信息
kubectl describe pods podNamePrefix
# 显示由RC管理的Pod的信息
kubectl describe pods rcNamePrefix
2. 资源日志排查
# 容器日志查看
kubectl logs zk-0
kubectl logs zk-0 -n bigdata
# 跟踪查看容器的日志,相当于tail -f命令的结果
kubectl logs -f <pod-name> -c <container-name>
3. 进入资源容器
# 进入容器
kubectl exec -it podName -n nsName /bin/sh
kubectl exec -it podName -n nsName /bin/bash
5. 更新
1. 版本更新
kubectl set image deployment/nginx nginx=nginx:1.15
# 记录更新操作命令以便后续查看变更历史
kubectl set image deployment/nginx nginx=nginx:1.15 --record
2. 编辑更新
kubectl edit deployment/nginx
3. 滚动更新
kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2
kubectl rolling-update frontend --image=image:v2
kubectl rolling-update frontend-v1 frontend-v2 --rollback
4. 替换更新
kubectl replace -f zookersts.yaml
5. 扩缩容
kubectl scale deployment nginx --replicas=10
6. 回滚
# 查看更新过程
kubectl rollout status deployment/nginx --namespace=nsName
# 如果更新成功, 返回值为0
kubectl rollout status deployment nginx-deployment --watch=false | grep -ic waiting# 查看变更历史版本信息
kubectl rollout history deployment/nginx
kubectl rollout history deployment/nginx --revision=3 --namespace=nsName# 终止升级
kubectl rollout pause deployment/nginx --namespace=nsName# 继续升级
kubectl rollout resume deployment/review-demo --namespace=nsName# 回滚版本
kubectl rollout undo deployment/nginx --namespace=nsName
kubectl rollout undo deployment/nginx --to-revision=3 --namespace=nsName
7. 清理
# 删除资源
kubectl delete deploy/nginx
kubectl delete svc/nginx-service# 删除所有Pod
kubectl delete pods --all# 删除所有包含某个label的Pod和Service
kubectl delete pod,service -l name=labelName# 基于yaml定义的名称删除
kubectl delete -f pod.yaml# 删除指定命名空间
kubectl delete ns nsName# 删除指定命名空间的资源
kubectl delete pod zk-0 -n bigdata
kubectl delete pod --all -n bigdata# 删除计时(观察删除总耗时)
time -p kubectl delete pod podName# 强制删除(默认:30s)
# 指定删除延迟时间:0s,整体删除时间会明显降低
kubectl delete pod podName -n nsName --grace-period=0 --force
# 以下两行命令功能相同(grace-period=1,等价于now,立即执行)
kubectl delete pod podName -n nsName --grace-period=1
kubectl delete pod podName -n nsName --now
# 删除所有Pods
kubectl delete pods --all --force --grace-period=0
常用操作命令
| 类型 | 命令 | 描述 |
|---|---|---|
| 基础命令 | create | 通过文件名或标准输入创建资源 |
| expose | 将一个资源公开为一个新的Service | |
| run | 在集群中运行一个特定的镜像 | |
| set | 在对象上设置特定的功能 | |
| get | 显示一个或多个资源 | |
| explain | 文档参考资料 | |
| edit | 使用默认的编辑器编辑资源 | |
| delete | 通过文件名、标准输入、资源名称或标签选择器来删除资源 | |
| 部署命令 | rollout | 管理资源的发布 |
| rolling-update | 对给定的复制控制器滚动更新 | |
| scale | 扩容或缩容Pod、Deployment、ReplicaSet、RC或Job | |
| autoscale | 创建一个自动选择扩容或缩容并设置Pod数量 | |
| 集群管理命令 | certificate | 修改证书资源 |
| cluster-info | 显示集群信息 | |
| top | 显示资源(CPU、Memory、Storage)使用。需要Heapster运行 | |
| cordon | 标记节点不可调度 | |
| uncordon | 标记节点可调度 | |
| drain | 维护期间排除节点(驱除节点上的应用,准备下线维护) | |
| taint | 设置污点属性 | |
| 故障诊断和调试命令 | describe | 显示特定资源或资源组的详细信息 |
| logs | 在一个Pod中打印一个容器日志。如果Pod只有一个容器,容器名称是可选的 | |
| attach | 附加到一个运行的容器 | |
| exec | 执行命令到容器 | |
| port-forward | 转发一个或多个本地端口到一个Pod | |
| proxy | 运行一个proxy到Kubernetes API Server | |
| cp | 拷贝文件或目录到容器 | |
| auth | 检查授权 | |
| 高级命令 | apply | 通过文件名或标准输入对资源应用配置 |
| patch | 使用补丁修改、更新资源的字段 | |
| replace | 通过文件名或标准输入替换一个资源 | |
| convert | 不同的API版本之间转换配置文件 | |
| 设置命令 | label | 更新资源上的标签 |
| annotate | 更新资源上的注释 | |
| completion | 用于实现kubectl工具自动补全 | |
| 其他命令 | api-versions | 打印支持的API版本 |
| config | 修改kubeconfig文件(用于访问API,比如配置认证信息) | |
| help | 所有命令帮助 | |
| plugin | 运行一个命令行插件 | |
| version | 打印客户端和服务版本信息 |
1. 获取帮助
# 检查kubectl是否安装
rpm -qa | grep kubectl
# 获取kubectl及其子命令帮助方法
kubectl --help
kubectl create --help
1. Worker上执行kubectl
# Worker节点上执行
mkdir -p ~/.kube
scp master1:/root/.kube/config ~/.kube/
# 验证(查看K8s集群节点列表)
kubectl get nodes
2. api相关操作命令
# 查看api版本信息
kubectl api-versions
# 查看api资源列表
kubectl api-resources
3. K8s相关进程操作命令
netstat -lntp | grep kube-proxy
netstat -tnlp | grep kubelet
4. 节点操作命令
- 加入新节点
# 加入新节点,在master节点上执行,将输出再到新节点上执行
kubeadm token create --print-join-command
- 驱逐节点
# 驱逐节点的Pod
kubectl drain nodeName
- 节点下线
# 将节点标记为不可调度,不影响现有Pod(注意daemonSet不受影响)
kubectl cordon nodeName
- 节点上线
# 维护结束,节点重新投入使用
kubectl uncordon nodeName
- 污点设置
# 设置污点
kubectl taint nodes nodeName key1=value1:NoSchedule
kubectl taint nodes nodeName key1=value1:NoExecute
kubectl taint nodes nodeName key2=value2:NoSchedule
# 删除污点
kubectl taint nodes nodeName key1:NoSchedule-
kubectl taint nodes nodeName key1:NoExecute-
kubectl taint nodes nodeName key2:NoSchedule-
# 查看污点详情
kubectl describe nodes nodeName
资源创建实例
Namespace
命令行方式
kubectl create namespace bigdata
yaml方式
vi ns-test.yaml
编排文件如下:
apiVersion: v1
kind: Namespace
metadata:name: bigdata
执行yaml文件:
kubectl apply -f ns-test.yaml
验证:
kubectl get namespaces
kubectl get namespace
kubectl get ns
清除:
kubectl delete -f ns-test.yaml
kubectl delete ns bigdata
Pod
命令行方式
未提供直接创建Pod的命令,命令行方式一般通过创建Deployment、RC、RS等资源间接创建Pod。
yaml方式
vi pod-test.yaml
编排文件如下:
apiVersion: v1
kind: Pod
metadata:name: pod1
spec:containers:- name: nginx-containersimage: nginx:latest
执行yaml文件:
kubectl apply -f pod-test.yaml
验证:
kubectl get pods
kubectl get pod
kubectl get po
kubectl describe pod pod1
kubectl get pods -o wide
curl http://172.16.189.68
清除:
kubectl delete -f pod-test.yaml
kubectl delete pod pod1
Service
命令行方式
kubectl run nginx-app --image=nginx:latest --image-pull-policy=IfNotPresent --replicas=2
kubectl expose deployment.apps nginx-app --type=ClusterIP --target-port=80 --port=83
参数说明:
-
expose:创建service。
-
deployment.apps:控制器类型。
-
nginx-app:应用名称,也是service名称。
-
**–type=**ClusterIP:指定service类型。
-
–target-port=80:指定Pod中容器端口。
-
–port=80:指定service端口。
验证:
kubectl get service
kubectl get svc
kubectl get endpoints
kubectl get ep
curl http://10.104.173.230:83
kubectl get all
清除:
kubectl delete service nginx-app
kubectl delete svc nginx-app
yaml方式
vi nginx-service.yaml
编排文件如下:
---
apiVersion: apps/v1
kind: Deployment
metadata: name: nginx-applabels:app: nginx
spec: replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginxappimage: nginx:latestimagePullPolicy: IfNotPresentports:- containerPort: 80---
apiVersion: v1
kind: Service
metadata:name: nginx-app-svclabels:name: nginx-app-svc
spec:type: ClusterIPports: - protocol: TCPport: 83targetPort: 80selector:app: nginx---
apiVersion: v1
kind: Service
metadata:name: nginx-app-svc2labels:name: nginx-app-svc2
spec:type: NodePortports: - protocol: TCPport: 83targetPort: 80nodePort: 30083selector:app: nginx
执行yaml文件:
kubectl apply -f nginx-service.yaml
验证:
kubectl describe deployment nginx-app
kubectl describe svc nginx-app-svc
kubectl get service
kubectl get svc
kubectl get endpoints
kubectl get ep
# nginx-app-svc
curl http://10.107.141.109:83
# nginx-app-svc2
curl http://192.168.216.100:30083
# 查看k8s集群指定端口的侦听状态
ss -anput | grep ":30083"
kubectl get all
清除:
kubectl delete -f nginx-service.yaml
kubectl delete service nginx-app-svc
kubectl delete svc nginx-app-svc
常用控制器
1. Deployment
命令行方式
kubectl run nginx-app --image=nginx:latest --image-pull-policy=IfNotPresent --replicas=2
参数说明:
-
nginx-app:Deployment控制器类型的应用名称。
-
–image=nginx**😗*latest:应用运行的Pod中的Container所使用的镜像。
-
IfNotPresent:Container容器镜像下载策略,如果本地有镜像,使用本地,如果本地没有镜像,下载镜像。
-
**–replicas=**2:是指应用运行的Pod共计2个副本,这是用户的期望值,Deployment控制器中的ReplicaSet控制器会一直监控此应用运行的Pod副本状态,如果数量达不到用户期望,就会重新拉起一个新的Pod,会让Pod数量一直维持在用户期望值数量。
验证:
kubectl get deployment.apps
kubectl get deployment
kubectl get deploy
kubectl get replicaset
kubectl get rs
kubectl get all
清除:
kubectl delete deployment nginx-app
yaml方式
vi nginx-deployment.yaml
编排文件如下:
apiVersion: apps/v1
kind: Deployment
metadata: name: nginx-applabels:app: nginx
spec: replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginxappimage: nginx:latestimagePullPolicy: IfNotPresentports:- containerPort: 80
执行yaml文件:
kubectl apply -f nginx-deployment.yaml
验证:
kubectl get deployment.apps
kubectl get deployment
kubectl get deploy
kubectl get replicaset
kubectl get rs
kubectl get all
kubectl describe deployment nginx-app
kubectl get pods -o wide
curl http://172.16.189.77
curl http://172.16.235.138
清除:
kubectl delete -f nginx-deployment.yaml
kubectl delete deployment nginx-app
2. ReplicaSet
命令行方式
yaml方式
3. StatefulSet
命令行方式
yaml方式
4. DaemonSet
命令行方式
yaml方式
5. Job
命令行方式
yaml方式
6. CronJob
命令行方式
yaml方式
操作命令补充说明
1. create和apply的异同点
- create
先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的。
- apply
根据配置文件里面列出来的内容,升级现有的。所以yaml文件的内容可以只写需要升级的属性。apply命令将配置应用于资源。 如果资源不在那里,那么它将被创建。

从执行的角度来看,如上所示,在kubectl create和kubectl apply之间第一次创建资源时没有区别。 但是,第二次kubectl create会抛出错误。简单来说,如果在单个文件上运行操作以创建资源,则create和apply基本相同。 但是, apply允许您在目录下的多个文件上同时创建和修补。
相关文章:
K8s操作命令
生命周期管理 1. 创建 1. 创建资源 kubectl run 创建并运行一个或多个容器镜像。*创建一个deployment或job来管理容器*。 语法:kubectl run NAME --imageimage [–env“keyvalue”] [–portport] [–replicasreplicas] [–dry-runbool] [–overridesinline-jso…...
【MySQL】 MySQL数据库基础
文章目录 🐱👓数据库的操作📌显示当前的数据库📌创建数据库🎈语法:🎈语法说明🎈示例: 🌴使用数据库🎋删除数据库🐱🏍语…...
vscode 下载安装
vscode 下载安装常用插件 vscode 官网: https://code.visualstudio.com/ 点击右上角 Download 进入下载选择页面 选择自己使用操作对应 CPU 架构 下载 本文使用 x86 架构 64位 windows 系统为例 跳转下载页面 自动 开始下载 下载不开始?试试这个直…...
springboot对接postgres
安装postgres 注意:下述链接方式会自动创建数据库steven_russell,若需要创建其他数据库,可以手动执行命令创建数据库 docker run --name postgres \ -p 5432:5432 \ -e POSTGRES_USERsteven_russell \ -e POSTGRES_PASSWORD123456 \ -itd --privilegedtrue postgre…...
[python 刷题] 242 Valid Anagram
[python 刷题] 242 Valid Anagram 题目: Given two strings s and t, return true if t is an anagram of s, and false otherwise. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the o…...
算法通过村第七关-树(递归/二叉树遍历)青铜笔记|手撕递归
文章目录 前言1. 递归的特征2. 如何写出好的递归3. 怎么看懂递归的代码总结 前言 提示:我们生活在24小时不眠不休的社会里但是没有24小时不眠不休的身体有些东西必须舍弃 -- 马特海格 这一关,我看要谈论的是递归问题,说到它就牵扯到很多问题了…...
#循循渐进学51单片机#点亮你的LED#not.2
1、深刻理解电容的意义,并且在今后的电路学习过程中要多多注意参考别人电路中去耦电路的处理方法,积累经验。 1)电容缓冲电压,抗电磁干扰; 2)低频率电容,一般用的最多的是钽电容,电…...
基于Java+SpringBoot+Vue+uniapp点餐小程序(亮点:协同过滤算法、会员系统,购物车结算、在线聊天)
校园点餐小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序(小蔡coding)2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 系统功能结构设计4.2 主要功能描述 五…...
深度学习-全连接神经网络-详解梯度下降从BGD到ADAM - [北邮鲁鹏]
文章目录 参考文章及视频导言梯度下降的原理、过程一、什么是梯度下降?二、梯度下降的运行过程 批量梯度下降法(BGD)随机梯度下降法(SGD)小批量梯度下降法(MBGD)梯度算法的改进梯度下降算法存在的问题动量法(Momentum)目标改进思想为什么有效动量法还有什么效果&…...
数据结构--二叉排序树
目录 二叉排序树的定义 二叉排序树的查找 二叉排序树的插入 二叉排序树的构造 二叉排序树的删除 查找效率分析 回顾 二叉排序树的定义 二叉排序树的查找 查找成功的情况 查找失败的情况 二叉排序树的插入 注意 (1)二叉排序树不允许出现重复的值…...
Python | 根据子列表中的第二个元素对列表进行排序
在本文中,我们将学习如何根据主列表中存在的子列表的第二个元素对任何列表进行排序。 比如 Input : [[‘rishav’, 10], [‘akash’, 5], [‘ram’, 20], [‘gaurav’, 15]] Output : [[‘akash’, 5], [‘rishav’, 10], [‘gaurav’, 15], [‘ram’, 20]] Input …...
qsort函数详细讲解以及利用冒泡排序模拟实现qsort函数
个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.qsort函数 1.1qsort函数的参数 …...
C++QT day6
1> 将之前定义的栈类和队列类都实现成模板类 栈: #include <iostream> #define MAX 128 using namespace std; template<typename T> class Stack_s { private:T *pnew T[MAX];//栈的数组int top;//记录栈顶的变量 public://构造函数Stack_s(int t…...
List与ArrayList
目录 一、List及其使用 1.1 List的概念 1.2 常见接口的介绍 1.3 List的使用 二、线性表和顺序表 2.1 线性表 2.2 顺序表 三、ArrayList介绍 四、ArrayList的使用 4.1 ArrayList构造 4.2 ArrayList的常用方法 4.3 ArrayList的遍历 4.4 ArrayList的扩容机制 五、ArrayList的具…...
【C++】特殊类的设计
文章目录 1. 设计一个类, 不能被拷贝2. 设计一个类, 不能被继承3. 设计一个类, 只能在堆上创建对象3. 设计一个类, 只能在栈上创建对象4. 创建一个类, 只能创建一个对象(单例模式)饿汉模式懒汉模式 1. 设计一个类, 不能被拷贝 💕 C98方式: 在C11之前&a…...
机器学习:PCA(Principal Component Analysis主成分)降维
参考:PCA降维原理 操作步骤与优缺点_TranSad的博客-CSDN博客 PCA降维算法_偶尔努力翻身的咸鱼的博客-CSDN博客 需要提前了解的数学知识: 一、PCA的主要思想 PCA,即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想…...
linux服务器slab缓存回收方案设计
背景 自己写的回收slab内存ko,insmod报错“shrink_slab:unknown symbol _x86_indirect_thunk_rax(err 0)””; 分析 1.名词解释 在 x86 架构中,函数调用通常使用 call 指令来直接跳转到目标函数的地址。但是,当需要通过函数指针或动态链接调用函数时,就需要使用__x86_…...
Apache Spark 的基本概念
Apache Spark 是一种快速、可扩展、通用的数据处理引擎。它是一种基于内存的计算框架,支持分布式数据处理、机器学习、图形计算等多种计算任务。与传统的 Hadoop MapReduce 相比,Spark 具有更高的性能和更广泛的应用场景。 Spark 中的基本概念包括&…...
通讯协议介绍CoAP 协议解析
目录 1 通讯协议 2 TCP/IP 网络模型 2.1 TCP协议 2.1.1 TCP 连接过程 2.1.2 TCP 断开连接 2.1.3 TCP协议特点 2.2 UDP协议 2.2.1 UDP 协议特点 3 应用层协议简介 3.1 HTTP 协议 3.2 CoAP 协议 3.3 MQTT 协议 4 CoAP 协议详解 4.1 REST 风格 4.2 CoAP 首部分析 4…...
React 开发一个移动端项目(2)
配置基础路由 目标:配置登录页面的路由并显示在页面中 步骤: 安装路由: yarn add react-router-dom5.3.0 5 和 6 两个版本对组件类型的兼容性和函数组件支持有所改变,在这里使用的是 5。 和路由的类型声明文件 yarn add types…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
Pydantic + Function Calling的结合
1、Pydantic Pydantic 是一个 Python 库,用于数据验证和设置管理,通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发(如 FastAPI)、配置管理和数据解析,核心功能包括: 数据验证:通过…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
