自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(57)
  • 资源 (10)
  • 收藏
  • 关注

原创 Claude Code 与 MCP 服务器使用指南

摘要:MCP(模型上下文协议)是Anthropic开发的技术标准,使ClaudeCode能通过统一接口连接外部工具和API。文章介绍了MCP的三种安装方式(Local/Project/User)及其优先级,并演示了PostgreSQL数据库连接、GitHub代码审查等实战案例。同时指出安全风险和输出限制(默认25,000token),建议谨慎使用第三方MCP服务器。

2026-01-23 15:06:59 435

原创 error getting ClusterInformation: connection is unauthorized: Unauthorized

Kubernetes集群中Pod卡在"ContainerCreating"状态的解决方案:当Calico-node的APIServer访问token过期时,会导致网络基础设施无法创建。通过重启calico-node DaemonSet(kubectl rollout restart ds -n kube-system calico-node)可生成新token解决问题。该token有效期为一年,过期后calico-node服务将无法正常请求Kube-apiserver。建议完善token

2026-01-22 15:15:13 260

原创 Squid部署

摘要:本文介绍使用Docker快速部署Squid代理服务器的方法。通过docker-compose配置Squid容器,包含端口映射、配置文件挂载等设置。重点讲解了Squid的基本认证配置,包括创建密码文件、设置访问控制规则(ACL)和禁用缓存功能。最后提供了Linux客户端的环境变量配置方法,使客户端能够通过Squid代理访问受限资源。Windows用户也可使用系统全局代理实现相同功能。该方法适用于需要通过代理服务器访问受限网络资源的场景。

2026-01-20 10:14:17 253

原创 k8s中部署rsyncd

摘要:本文介绍了一种优化私有化部署中地图数据上传效率的方案。通过在K8S集群中部署rsyncd服务,替代手动拷贝数据到PVC的低效方式。方案使用servercontainers/rsync镜像创建Pod,通过NodePort Service(30010端口)暴露服务。配置包含rsyncd.conf和凭据文件rsyncd.secrets,通过ConfigMap挂载到容器。部署文件定义了Service和Deployment资源,指定CPU/内存限制并挂载数据PVC。上传时使用rsync命令,支持交互式密码输入或

2026-01-16 16:51:44 300

原创 虚拟化网络的根基-网络命名空间

摘要:本文介绍了Docker网络中的关键技术——网络命名空间(Network Namespace)及其实现方式。通过创建虚拟网线(veth pair)和网桥(bridge),实现了容器间的网络隔离与通信。具体演示了在Ubuntu环境下创建两个命名空间(boy和girl),配置虚拟网卡对并分配IP地址,使其能够互相ping通。进一步展示了如何通过创建网桥设备(v-net-0)连接多个命名空间,模拟交换机功能,并配置路由和SNAT实现容器访问外部网络。这些技术构成了Docker网络的基础实现机制。

2026-01-08 18:00:13 932

原创 Jenkinsfile还可以这样玩!

本文提出了一种优化私有化项目镜像更新的方案。针对Kubernetes集群无法直接联网的情况,通过Jenkins流水线将镜像推送至华为云SWR,并在客户环境部署Python服务实现镜像下载和更新。方案采用三步骤:1)Jenkins构建镜像并推送至华为云;2)Python服务提供Web界面手动触发镜像下载和K8s部署更新;3)选择业务低峰期进行发布操作。该方案既避免了直接暴露内部Registry的安全风险,又解决了手动拷贝镜像的低效问题,同时通过分步操作实现了构建与发布的时段隔离。

2026-01-06 15:49:43 134

原创 如何排错运行在Kubernetes集群中的服务?

摘要:K8s中前端服务以Job方式运行时出现Nacos连接超时问题。排查时将Job改为Deployment,通过添加/bin/bash命令进入容器调试,发现Nacos连接地址缺少"http://"前缀。修正环境变量后问题解决。K8s调试Pod的关键在于利用kubectl工具链进行多维度排查,常用logs/exec等方法避免直接操作宿主机,同时需注意分布式环境和临时生命周期的特性。

2025-12-17 16:52:10 330

原创 CKA题目分享-第八篇-StatefulSets与Headless Services

摘要:Kubernetes StatefulSet配置示例,包含StatefulSet和Headless Service定义。StatefulSet配置了2个Nginx容器副本,通过volumeClaimTemplates为每个Pod自动创建1GB持久化存储,确保数据持久性。Headless Service(clusterIP:None)提供稳定的网络身份,使每个Pod获得唯一DNS记录。关键特性包括:Pod有序部署、持久化存储自动配置、稳定的网络标识,适用于需要稳定身份和持久存储的有状态应用。

2025-12-15 17:35:11 205

原创 CKA题目分享-第七篇-Gateway API与Pod Admission

摘要:Kubernetes Gateway API 是用于管理集群流量的新一代标准 API,替代了原有的 Ingress API。配置示例包括:1) Gateway 对象定义监听规则(如 HTTP 80 端口);2) HTTPRoute 对象设置路由规则(如路径前缀匹配和后端服务);3) LimitRange 对象限制容器资源(如默认 CPU 200m、内存 100Mi)。这些配置展示了 Gateway API 在流量管理和资源控制方面的应用。

2025-12-15 16:40:12 252

原创 CKA题目分享-第六篇-CoreDNS与Helm

本文摘要:介绍了Kubernetes中CoreDNS的配置方法,通过修改配置文件添加自定义域名解析(10.10.10.10→myapp.internal),并强调格式缩进的重要性。同时讲解了Traefik作为Ingress Controller的功能特性,包括服务发现、负载均衡等,并提供了通过Helm安装Traefik的具体命令步骤。最后提及了CKA认证考试中关于Pod安全、节点调度等核心知识点的系列文章分享。

2025-12-05 14:31:03 344

原创 CKA题目分享-第五篇-Pod Security与Taints Tolerations

摘要:本文介绍了使用Kubernetes的PodSecurityAdmission(PSA)实现安全策略的方法,包括为命名空间"restricted-ns"配置PSS restricted策略并指定v1.24版本标准。同时解释了Taints和Tolerations的调度机制,展示了如何给node-1节点添加污点,并配置Pod容忍该污点的示例。通过这些配置可以实现Pod安全限制和节点调度控制,确保工作负载运行在合适的节点上。

2025-12-03 16:24:25 236

原创 CKA题目分享-第四篇-Autoscaling与Node Affinity

Kubernetes提供HPA和VPA两种自动扩缩容机制:HPA通过增减Pod副本应对流量变化,VPA优化单个Pod资源分配。文章演示了创建HPA的YAML配置示例,以及如何为Pod设置节点亲和性(nodeAffinity),强制调度到特定标签(disktype=ssd)的节点。同时介绍了查看节点标签和添加新标签的kubectl命令,帮助实现精细化资源调度管理。

2025-12-02 16:14:07 250

原创 CKA题目分享-第三篇-存储

本文介绍了Kubernetes中静态持久卷(PV)和持久卷声明(PVC)的创建方法。通过YAML示例展示了如何定义200Mi容量的PV,并配置节点亲和性、访问模式和回收策略。同时演示了如何创建对应的PVC来绑定该PV。文中指出这种不使用Provisioner的静态配置方式虽简便,但不适合生产环境,可能影响Pod调度。最后提及了CKA认证考试的相关题目分享。

2025-12-02 15:25:20 134

原创 CKA题目分享-第二篇-存储

本文分享了CKA考试中存储相关的核心知识点,包括PVC创建、Pod挂载PVC以及StorageClass配置。主要内容:1)演示如何创建PVC并挂载到Pod;2)介绍StorageClass在生产环境中的应用,展示创建StorageClass的示例;3)讲解通过NodeAffinity手动指定PV创建节点的方法。文章提供了完整的YAML配置示例,涵盖PVC、Pod、StorageClass和PV的创建过程,重点突出了存储资源在Kubernetes中的管理和应用。

2025-12-01 14:46:42 186

原创 CKA题目分享-第一篇-易错题

CKA考试重点考察Kubernetes实战能力,包括集群管理和排错。典型易错点包括: Selector使用(集合/等值两种语法都能正确筛选资源) 资源定义中的apiVersion字段作用(指定API版本) Secrets安全机制(仅base64编码存储,未加密) 考试要求掌握这些核心概念的实际应用能力。

2025-11-26 09:54:57 211

原创 使用Alertmanager构建你的告警栈

摘要:Alertmanager是Prometheus生态中的告警管理组件,支持告警聚合、分组和抑制功能。文章详细介绍了通过docker-compose部署Alertmanager的方法,重点解析了其路由配置策略:基于标签(如developer、source)实现多级告警分发,配置了邮件和企业微信等多种通知渠道。文中提供了完整的配置示例,包括路由规则、告警模板(含中英文告警内容格式化)和接收器定义,并解释了告警生命周期管理参数(group_wait、repeat_interval等)。特别说明continue

2025-11-14 11:35:54 287

原创 使用acme.sh创建自己的第一个https证书

摘要:acme.sh是一款轻量级ACME协议客户端,支持多种验证方式和CA机构,适合服务器环境。文章介绍了使用acme.sh获取SSL证书的完整流程:1)获取域名;2)安装acme.sh并配置API Key(以GoDaddy为例);3)生成和更新证书(含DNS验证方法);4)证书存放位置说明。该工具支持自动调用云服务商API更新DNS记录,简化证书管理过程。

2025-10-24 18:05:01 407

原创 使用Grafana监控K8S中的异常Pod

本文介绍了一种利用Grafana监控多K8S集群异常Pod的方法。通过Python脚本(使用Ansible远程执行)采集各集群Pod异常信息,包括命名空间、状态、重启次数等,并以JSON格式通过HTTP接口暴露。使用Grafana-Infinity插件作为数据源,配置Table类型面板,实现单一面板监控多集群异常Pod状态。该方法解决了无法直连K8S服务器的问题,提供了直观的异常展示方案。

2025-10-16 16:36:25 364

原创 自动化运维利器:MCP Server + 阿里云

阿里云推出官方MCPServer工具alibaba-cloud-ops-mcp-server,实现AI与云服务的智能连接。该工具基于MCP协议,可将自然语言指令转换为阿里云OpenAPI调用,支持查询ECS实例、VPC等资源信息,并生成自动化运维报告。使用需配置阿里云AccessKey权限,建议采用只读账号并明确指定资源区域,以优化查询效率。实测显示,该工具能准确响应“查询深圳地区ECS实例”指令,但需注意分页设置和token消耗问题。

2025-09-26 14:31:45 579

原创 容器方式部署Zabbix 7.0

Zabbix7.0带来多项升级:增强Web监控功能,支持多因素认证,新增云服务模板。文章演示了在CentOS7上使用Docker容器部署Zabbix7.0的过程,包括PostgreSQL14数据库配置、数据初始化,以及通过docker-compose部署Zabbix Server和Web服务。部署完成后,默认登录凭据为Admin/zabbix。

2025-09-23 11:46:19 398

原创 zabbix-mcp-server:使用自然语言操作Zabbix

本文介绍了如何通过zabbix-mcp-server实现大语言模型与Zabbix监控系统的自然语言交互。该工具基于MCP协议开发,支持在Windows11系统上部署,通过配置环境变量连接Zabbix服务(要求6.0+版本)。测试使用DeepSeek-V3模型成功查询主机信息和内存使用情况,验证了该方案可替代传统监控操作方式。

2025-09-22 17:06:41 715

原创 如何配置WSL的网络

文章核心讲解了如何通过Hyper V配置桥接网络,以及如何使用WSL配置文件配置WSL的网络行为。旨在帮助用户解决常见WSL网络问题,高效利用 WSL2 进行开发。

2025-09-11 16:55:22 1231

原创 如何配置nginx的Systemd service unit文件

检查了一遍Unit文件的内容,Type指令的值配置为“forking”,没有问题,因为由ExecStart配置的Nginx主进程“/usr/local/nginx/sbin/nginx”启动时会创建子进程而自身会变成进程管理者(有些服务主进程会退出),这是一个相对路径,Pid文件的绝对路径为“/usr/local/nginx/logs/nginx.pid”,更新service unit配置文件中PIDFile的值,重新reload后,启动Nginx发现正常了。发现执行长时间卡着,没有返回。

2025-08-25 14:46:46 448

原创 Etcd,真的需要集群部署吗?

实话说,分布式系统真的是一个非常复杂的系统,部署三节点或五节点的etcd集群,但如果网络很脆弱,比如这些节点都接入一台交换机,那么一次不完美的网络维护就可能导致整个集群挂掉。如果我们的集群很小,本身网络没有冗余,服务器也没有双电源,那么单节点的etcd用起来会更省心,只要定期将快照异机备份就好,因为即使运行etcd节点的服务器出问题了,只要没有新的调度任务,整个集群中已经运行的Pod还是会正常运行的,而且你会发现etcd处理读写的速度明显比集群情况下更快。r,并向所有节点发送心跳,阻止其他节点发起新选举。

2025-08-06 15:52:17 1143

原创 “git pull”和“git fetch”的区别

这两个命令使用的频率还是挺高的,日常开发中,优先用git fetch获取远程状态,再用git diff或git log查看变化,确认无误后再执行git merge或git rebase。这种方式更安全,避免"一键pull"带来的意外冲突或覆盖。git pull 会运行带有指定参数的 git fetch,然后根据配置选项或命令行标志,调用 git rebase 或 git merge 来合并分叉的分支。git pull 会将本地分支更新到其远程版本的最新状态,同时也会更新你的其他远程跟踪分支。

2025-07-23 15:57:12 128

原创 CPython的全局解释器锁-GIL即将成为历史

帧对象也不是线程安全的。最近,Cython 的维护者添加了对无 GIL 构建的支持,但你仍然需要确保你的代码是线程安全的。一般来说,任何在 Python 中使用的线程(而不是在外部,如扩展模块中使用的线程)都应该在 Python 中创建。无 GIL 的 Python 最大的障碍之一是确保用 C(或具有 C 兼容接口的语言)编写的 CPython 扩展能够尊重新的无 GIL 设计。举个例子,如果你有一个任务需要写入大量文件,如果每个任务都单独运行在一个线程中,效率会较低,因为写入文件本身是一个。

2025-07-18 11:14:22 596

原创 “Argument list too long”,为什么?

使用find的“-print0”选项主要为了解决文件名包含空格的情况,加了这个选项,文件名与文件名之间就会直接连接起来,xargs使用选项“-0”,可以区分这些用“null”连接起来的文件名,这样就可以正常使用rm命令。其实是Linux内核限制导致,内核限制命令行参数长度不能超过128K,如何规避这个限制,以上面的“rm *”命令为例,改写如下,

2025-07-17 14:35:07 346

原创 如何通过公网IP访问部署在kubernetes中的服务?

有时候业主的域名没有申请下来,我们会配置临时的域名,测试同事配置主机hosts来完成功能验证,等功能验证完毕后,交给业主使用,业主配置hosts比较麻烦,这里通过配置Nginx直接使用公网IP访问服务。客户端访问服务时直接使用公网IP地址,请求到达Nginx时没有携带主机头“Host”,请求到达后端k8s集群返回是404状态码,技巧就是在Nginx将请求转发到后端k8s集群时,人为配置上“Host”主机头,这样请求就可以路由到正确的Pod,在k8s集群上配置了域名为“www.example.com”,

2025-07-11 16:25:24 433

原创 你真的了解Nginx的proxy_pass指令吗?

结论:location指令配置了“/abc”,proxy_pass指令后的链接有路径(即"/app/"),Nginx将客户端原始的“/abc”替换成“/app”,然后转交后端。结论:proxy_pass指令后的链接有路径(即"/app/"),Nginx将“/app”插入客户端原始的路径前,然后转交后端。结论:proxy_pass指令后的链接没有路径(仅一个"/"也是路径),Nginx原样将请求转发后端。浏览器---->Nginx---->Web后端服务(由Python Flask框架实现)

2025-07-09 10:41:52 359

原创 k8s面试题-Pod定义中的command与args

从上面的输出看,Dockerfile中ENTRYPOINT指定的命令echo没有被覆盖,运行时指定的命令“ip a”被当成echo命令的参数。ENTRYPOINT指定的命令当使用docker来运行镜像时,是不能被覆盖的,但是在k8s中,当pod定义中同时配置command和args时会被覆盖。pod中指定的command和args生效了,日志输出了pod的IP地址信息。在k8s的资源对象pod中,经常会使用command和args。docker运行镜像时,指定命令“ip a”,运行后,查看pod的日志,

2025-07-02 14:27:09 281

原创 配置Systemd的定时器-timer

如果一个服务“myapp.service”需要定期执行,只需要在目录“/etc/systemd/system”下创建一个同名但以“.timer”结尾的文件即可,这里要创建的定时器Unit文件就是“myapp.timer”,这样它们就可以自动绑定。要在麒麟V10中修改采样间隔,更新文件“/usr/lib/systemd/system/sysstat-collect.timer”,这里注意,服务的单元文件不需要“[Install]”部分,它的“[Install]”定义在定时器单元文件中。

2025-06-30 18:03:46 668

原创 Cgroup初探

在生产环境中,运行在服务器中的程序如果对系统资源(CPU、内存等)过量使用,可能导致服务器Hang住,影响其他程序的正常运行。这里使用了两个controller,cpuset和memory,cg1里面的进程仅能使用cpu1和cpu2,使用的内存不能超过1G,cg2类似。接着定义cgrules.conf文件,这个文件的作用是将选定进程和cgroup绑定。删除cgroup,执行命令cgdelete删除,语法如下:cgdelete subsystems:path,path是相对路径。使用下面命令使规则生效。

2025-06-30 15:53:33 498

原创 Minio的扩容

本文对minio的扩容做了简单介绍,生产环境需要规划好服务器的数量和每台服务器上硬盘的数量,每个池要留够硬盘用于存放校验数据(parity),防止设计不合理降低高可用性。加入新的服务池(server pool)后,集群容器翻倍,但是原有的数据不会自动从Pool 1移动到Pool 2,可以看到Pool 2的空间并没有使用,为了保证客户端访问minio的稳定性,使用Nginx作为前端负载均衡,Nginx的配置文件如下,,安装完成后不要启动,修改环境变量文件/etc/default/minio,

2025-06-27 15:06:24 1359

原创 Kubernetes中的容器生命周期回调

这里直接给出结论,因为redis使用的内存量超过1024M,进程被kubernetes杀死后又重启了,配置的密码失效,后端程序通过带凭据的方式访问redis,导致访问失败。有个私有化部署的项目需要跑一个redis用作缓存,因redis中的数据不需要持久化,选择在Kubernetes中通过deployment的方式部署,下面是deployment的代码片段,什么是回调,它是一种事件执行机制,将指定的函数注册到特定事件上,在事件发生前或发生后执行注册的函数。,此时运行的redis是没有配置访问密码的。

2025-06-26 10:00:47 429 1

原创 如何给Kubernetes的Dashboard创建合适的Token?

默认Dashboard在安装后,会创建一个服务账号“ dashboard-read-user”,该服务账号绑定集群角色“dashboard-read-clusterrole”,该角色可以只读访问整个集群。比如有一个命名空间为“rocket”,创建一个服务账号“manage-rocket”,该账号对“rocket”命名空间的pod资源有管理权限,对集群的其他资源有只读权限,服务账号“dashboard-read-user” 的权限不足,不能完成日常的维护任务,比如重启pod,增加pod的副本数等,

2025-06-25 16:31:27 818

原创 谷歌Agent2Agent项目迁移至Linux基金会

Linux 基金会表示,在 Linux 基金会的治理下,A2A 将保持中立,强调包容性贡献,并继续专注于协议的可扩展性、安全性和实际应用性。“通过加入 Linux 基金会,A2A 确保了长期的中立性、协作性和治理,这将释放出下一代由代理到代理驱动的生产力。”“通过与 Linux 基金会和领先的科技提供商合作,我们将在一个值得信赖、开放治理的框架下,实现更多创新和有价值的 AI 功能。该协议由谷歌开发,是一个开放协议,旨在实现代理 AI 之间的互操作性,并在不同系统和平台之间实现可信代理通信。

2025-06-25 14:00:33 249

原创 Kubernetes中探测容器的三种探针

如果三个探针同时存在,先执行 StartupProbe 探针,其他两个探针将会被暂时禁用,直到 pod 满足 StartupProbe 探针配置的条件。通过使用不同类型的探针,可以检测应用程序的各种状态,从而帮助自动化地管理容器集群,并提高应用程序的可靠性和可用性。探针的类型和检测方式可以根据应用程序的需求进行配置。Kubernetes 探针(Probe)是用于检测容器内部状态的机制,有以下三种探针,分别是Liveness、Readiness、Startup,前两种使用的比较多。用于确定容器是否仍在运行。

2025-06-24 13:55:40 420

原创 在Ingress NGINX Controller中如何配置gzip压缩

Ingress-nginx修改全局作用域的配置,大都会使用ConfigMap实现,对于"server"作用域的修改可以使用"annotations",比如要修改的域名为"app.example.com",找到包含这个域名的Ingress,增加下面配置即可,Nginx使用ngx_http_gzip_module模块来压缩返回给浏览器的数据,Ingress-nginx默认是启用这个模块的,所以,开启压缩只需要修改配置即可,不需要再考虑模块ngx_http_gzip_module的集成,

2025-06-24 13:52:11 466

原创 如何配置Minio桶复制

在单向复制中,源Minio中的对象写入与删除会同步到目的Minio,但是目的Minio上的对象写入及删除操作不会同步到源Minio中,双向复制的话,就可以。这里有一点需要注意,Minio的桶复制可以对目的Minio执行正常的写入和删除操作,这和MySQL的主从复制不一样,在MySQL的主从复制中,是不能对备库做写入操作的。在对象存储中,文件都是放在一个个的桶中,桶是对象存储里面的一个概念,可以想象成文件系统的一个目录,客户端上传的文件会被存放到预先选择的桶中。连接Minio A执行复制操作,其中。

2025-06-23 14:42:55 607

原创 Kubernetes中Dashboard部署

您可以使用Dashboard将容器化应用程序部署到 Kubernetes 集群中,排查容器化应用程序的问题,并管理集群资源。为了保护您的集群数据,Dashboard默认使用最小的 RBAC 配置进行部署。上面的方法临时使用可以,长期使用的话,可以使用nginx ingress controller创建一个“ingress”对象。目前 Kubernetes Dashboard 仅支持基于 Helm 的安装,因为它更快,并且能让我们更好地控制 Dashboard 运行所需的所有依赖项。

2025-06-20 17:09:43 336

PPP协议应用,LCP,NCP

对ppp协议进行详尽的介绍,分数据链路层和网络层

2011-04-17

MANET中ZRP路由协议详细介绍

MANET中ZRP路由协议介绍,一种混合的路由协议,有表驱动和按需路由协议的双重优点!(移动Ad+Hoc网络中的ZRP 论文)

2011-11-25

MANET中AODV路由协议详细介绍

对MANET常用的AODV路由协议详细阐述,方便使用者理解AODV协议编程!

2011-11-25

flask web编程

python环境下,方便易用的web编程框架--flask。功能全面,值得学习。

2016-09-21

radius介绍

全面介绍radius,读完文档后,将对radius的AAA有全面认识

2016-12-22

nginx web server

讲解强大的web和反向代理服务器nginx,值得拥有!

2014-02-10

得到主机的ip地址 vc++

vc++,通过此文件可以得到主机的ip地址信息

2010-11-15

linux安全相关

文档对linux系统的安全方面做出介绍

2016-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除