- 博客(221)
- 收藏
- 关注
原创 【Kubernetes】污点(Taints)与容忍(Tolerations):节点调度的“门禁系统”
污点是添加在节点上的“排斥规则”,用于阻止 Pod 被调度到该节点。如果一个节点被添加了污点,默认情况下,所有 Pod 都会被这个节点“排斥”,无法调度到该节点上。污点的核心作用是保护节点,让节点只接受“被允许”的 Pod。给_master 节点添加污点,避免普通 Pod 占用 master 资源;给带有特殊硬件(如 GPU)的节点添加污点,只允许需要 GPU 的 Pod 调度过来。
2025-08-06 09:26:10
102
原创 【Kubernetes】亲和力(Affinity):Pod 主动选择节点的“导航系统”,节点亲和性,Pod亲和性
亲和力是 Pod 上定义的“偏好或要求”,用于指导调度器将 Pod 调度到“符合条件”的节点(或与其他 Pod 靠近/远离)。它的核心作用是让 Pod 主动选择节点,而不是被动接受调度。与 Kubernetes 早期的支持更复杂的条件判断(如ANDOR逻辑);可以设置“偏好”(preferred)而非“强制要求”(required);不仅能基于节点标签选择,还能基于其他 Pod 的标签选择(如“与某类 Pod 部署在同一节点”)。要点知识。
2025-08-06 09:25:10
281
原创 【Kubernetes】使用Init Container进行高级调度,与Pod 中的 preStop 钩子 对比
kind: Podmetadata:spec:# 定义两个 Init Container- name: wait-for-mysql # 第一个:等待 mysql-service 就绪sleep 2;done"]- name: prepare-nginx-config # 第二个:处理配置文件env:value: "example.com" # 要替换的占位符值mountPath: /tmp # 挂载 ConfigMap 到 /tmp 目录。
2025-08-05 10:06:31
319
1
原创 【Kubernetes】使用CronJob进行高级调度,定时任务的应用
核心部分说明示例或默认值时间规则决定任务执行时间,采用 cron 格式,由分钟、小时、日、月、星期组成0 3 * * *(每天凌晨 3 点)任务模板定义任务具体内容,包括容器镜像、命令等容器使用 busybox 镜像,执行 echo 命令历史记录限制保留已完成和失败的 Job 数量成功 3 个,失败 1 个(默认)并发策略处理任务并发执行的策略Allow(默认)、Forbid、Replace工作流程监控时间→触发任务→执行任务→记录历史→循环执行要点知识。
2025-08-05 10:06:14
768
原创 【Kubernetes】配置与存储,在ConfigMap和Secret配置中使用subPath进行更精确的挂载
subPath是 Kubernetes 中容器挂载配置的一个可选参数,用于指定从 Secret 或 ConfigMap 中只挂载部分内容(单个文件),而不是将整个 Secret/ConfigMap 作为目录挂载。简单说,subPath只取需要的配置文件放到指定位置不影响容器中已有的其他文件多配置源挂载到同一目录当需要从多个 ConfigMap 或 Secret 挂载文件到同一个目录时保护容器原有文件当挂载路径下已有重要文件,不想被覆盖时只需要部分配置项。
2025-08-04 09:42:44
392
原创 【Kubernetes】使用PV和PVC进行的配置与存储,创建PV、PVC和关联Pod,分析存储卷和PV的联系,多场景 PV、PVC 和 Pod 配置
解耦存储供给与使用:管理员负责维护PV(存储资源),用户只需通过PVC声明需求,无需关心底层存储细节;提高应用可移植性:应用通过PVC使用存储,迁移时只需确保目标集群有匹配的PV即可,无需修改应用配置;灵活的存储管理:支持多种存储类型(NFS、Ceph、云存储等),适应不同环境需求;安全的数据持久化:即使Pod或节点故障,数据依然保存在PV对应的存储设备中。
2025-08-04 09:41:31
1007
原创 【Kubernetes】Secret配置管理,安全管理敏感配置
Secret是Kubernetes中用于存储敏感配置数据的资源类型,与ConfigMap类似,但专门用于处理密码、令牌、密钥等需要保密的信息。数据会被Base64编码存储(注意:这只是简单编码,并非加密,真正的加密需结合RBAC权限控制或第三方密钥管理系统)可以被Pod挂载为文件或注入为环境变量与ConfigMap一样支持“配置与代码分离”,但更侧重敏感信息的安全管理简单说,Secret就像一个“加密的配置文件仓库”,专门存放需要保密的信息。
2025-08-02 16:25:38
540
原创 【Kubernetes】ConfigMap配置管理:存储配置参数,创建到容器挂载
ConfigMap是Kubernetes中用于存储非加密配置数据的资源类型,它可以存储键值对、配置文件等内容,然后被Pod中的容器引用。实现配置与应用程序代码分离方便不同环境(开发、测试、生产)使用不同配置避免配置硬编码到镜像或Pod定义中简单说,ConfigMap就像一个"配置文件仓库",Pod可以按需获取其中的配置。创建kind: Podmetadata:spec:sleep 3600"] # 输出环境变量后休眠env:# 引用ConfigMap中的key作为环境变量。
2025-08-02 16:25:23
852
原创 【Kubernetes】使用ingress的实践,理解流量路由
用户发起请求:如Ingress接收请求检查域名是否匹配Ingress规则检查路径/api是否匹配path: /api根据规则转发到Service处理请求找到Endpoints中的Pod(10.244.1.74和10.244.2.75)通过负载均衡将请求转发到其中一个PodPod响应请求Nginx容器处理请求并返回结果。
2025-08-01 12:13:55
803
原创 【Kubernetes】Ingress的理解,netstat命令使用,对比理解service和ingress
对于Kubernetes(k8s)初学者来说,网络相关的概念往往是入门的难点。Service、Ingress、端口映射等术语容易让人混淆,而netstat这类命令的输出也可能看得一头雾水。本文结合实际操作场景,从基础概念到命令使用,帮你理清Ingress、Service的核心作用及它们之间的关系。
2025-08-01 12:13:21
550
原创 【Kubernetes】Ingress-NGINX 部署与问题排查:从配置到运行
核心配置回顾通过限制控制器运行节点,确保资源合理分配;适合裸金属环境,简化外部端口访问;国内环境需配置阿里云等镜像源,避免镜像拉取失败。后续实践部署一个测试服务(如 Nginx),创建 Ingress 规则,验证通过节点IP:80能否访问;尝试配置 HTTPS,通过 Ingress 控制器实现 SSL 终止;观察控制器日志(),理解请求路由过程。
2025-07-31 09:21:13
547
原创 【Kubernetes】基础k8s服务内部访问,与DNS解析,手动配置Endpoint,与Service协作对接外部资源,ExternalName实现的CNAME转发
服务访问基础:Service 通过CLUSTER-IP提供集群内访问,NodePort提供外部访问;Endpoints动态关联后端 Pod,实现流量转发。DNS 解析逻辑:集群 DNS(如kube-dns)遵循 服务名.命名空间.svc.cluster.local规则解析域名,Pod 内可通过短域名(自动补充规则 )或完整域名访问服务,让应用间通信无需硬编码 IP,更灵活可靠。实践验证:通过dns-testPod 内的wget。
2025-07-31 09:20:57
1304
原创 【Kubernetes】使用HPA进行的自动扩缩容,模拟负载,触发自动扩/缩容,以及注意事项,自动扩缩容控制器和工作负载控制器划分
自动扩容:当 Pod 资源使用率(如 CPU)超过设定阈值时,增加 Pod 数量自动缩容:当资源使用率低于阈值且持续一段时间后,减少 Pod 数量边界控制:可设置最小()和最大()Pod 数量,避免过度扩缩容概念含义访问范围作用ClusterIPService 的虚拟 IP(集群内唯一)仅集群内(节点/Pod)集群内访问 Pod 的固定入口NodePort节点暴露的端口(30000-32767 范围内)集群内/外(需节点 IP)集群外访问 Pod 的入口Pod IP。
2025-07-30 09:29:39
632
原创 【Kubernetes】使用DaemonSet进行的资源调度,日志收集案例
DaemonSet 是 Kubernetes 提供的一种控制器,用于在集群的所有节点(或符合条件的节点)上运行且仅运行一个 Pod 实例。自动部署:新节点加入集群时,DaemonSet 会自动在该节点上创建对应的 Pod自动清理:节点从集群移除后,DaemonSet 会自动删除该节点上的 Pod节点选择:可通过标签选择器指定仅在特定节点上部署 Pod无副本数配置:无需手动设置replicas,Pod 数量由集群节点数决定(受节点选择限制)最典型的应用场景就是日志收集。
2025-07-29 12:35:05
886
原创 【Kubernetes】使用StatefulSet进行的资源调度,级联删除与非级联删除
StatefulSet 本身:定义应用的期望状态(如副本数、镜像等)关联的 Pod:由 StatefulSet 管理的实际运行实例级联删除(默认):删除 StatefulSet 时,自动删除其管理的所有 Pod非级联删除(孤儿模式):仅删除 StatefulSet 本身,保留其管理的 Pod(Pod 变为“孤儿”,不再受控制器管理)级联删除(默认):删除 StatefulSet 时自动清理所有关联 Pod,适合彻底移除应用非级联删除(–cascade=orphan)
2025-07-29 12:34:50
636
原创 【Kubernetes】使用StatefulSet进行的资源调度,删除更新策略
StatefulSet 的更新策略用于定义当 StatefulSet 配置(如镜像版本、资源限制等)发生变化时,如何更新其管理的 Pod。RollingUpdate(滚动更新):默认策略,会按顺序自动更新 Pod(从编号最大的开始),旧 Pod 终止后才创建新 Pod,保证服务连续性。OnDelete(删除触发更新):手动触发策略,配置修改后不会自动更新 Pod,只有当用户手动删除 Pod 时,StatefulSet 才会创建新的 Pod 应用新配置。演示了 StatefulSet 的OnDelete。
2025-07-28 16:14:43
877
原创 【Kubernetes】使用StatefulSet进行的资源调度,有状态应用更新发布时,必须遵循的版本灰度:金丝雀发布,StatefulSet重建步骤
通过配置Partition参数,控制只有部分Pod更新到新版本,其余仍保持旧版本。验证新版本没问题后,再调整Partition扩大更新范围,直到全量完成。为什么必须用Partition?StatefulSet的Pod有严格序号(如web-0到web-4),而Partition序号 ≥ Partition的Pod:会被更新到新版本序号 < Partition的Pod:保持旧版本不变这种按序号控制的方式,特别适合有状态应用(比如让序号大的从节点先更新,验证没问题再更新主节点)。操作目的命令说明。
2025-07-28 15:34:15
1180
原创 【Kubernetes】使用StatefulSet进行的资源调度,扩缩容,更改配置到版本回滚,三种配置更新方式
操作命令说明查看版本历史kubectl rollout history sts <名称>列出所有修订版本查看指定版本详情kubectl rollout history sts <名称> --revision=<编号>查看某版本的配置(如镜像)回滚到上一版本kubectl rollout undo sts <名称>无需指定编号,回滚到最近一次更新前回滚到指定版本kubectl rollout undo sts <名称> --to-revision=<编号>精确回滚到目标版本查看更新/回滚状态。
2025-07-26 09:40:03
678
原创 【Kubernetes】使用StatefulSet进行资源调度,实现有状态服务定义
比如数据库(MySQL主从集群):主库和从库身份不能混淆,数据不能丢失比如分布式系统(ZooKeeper):节点有编号(server1、server2),重启后身份不变这些应用如果用Deployment部署会出问题——Deployment的Pod名称是随机的(如),重建后名称改变,无法维持稳定身份。
2025-07-26 09:39:28
664
原创 【Kubernetes】使用Deployment进行的资源调度,资源清理,伸缩与更新管控
场景推荐操作优势清理闲置资源kubectl delete rs <闲置RS>保持集群资源列表简洁,避免资源冗余动态调整副本数kubectl scale deploy <名称> --replicas=<数量>一键伸缩,比手动编辑更高效安全更新配置pause→ 修改 →resume分步验证配置,降低更新风险版本管理与回滚追踪更新记录,支持快速回滚到稳定版本。
2025-07-25 10:02:37
841
原创 【Kubernetes】使用Deployment进行的资源调度,滚动更新与版本回滚
命令作用场景更新 Deployment 的镜像正常升级查看 Deployment 状态检查更新进度查看 ReplicaSet 状态判断新旧版本 Pod 数量kubectl describe po <Pod名>查看 Pod 事件排查更新失败原因。
2025-07-25 10:02:12
1014
原创 【Kubernetes】通过 YAML 创建 nginx Pod 并验证,流程总结
命令作用初学者记忆点编写 Pod 配置文件YAML 是“定义期望状态”的载体根据 YAML 创建 Pod“-f”表示“从文件读取配置”查看 Pod 状态快速确认 Pod 是否运行(关注 STATUS 列)查看 Pod 详细信息(含 IP、节点)获取 Pod 的 IP 用于访问服务查看 Pod 详细日志和配置排查问题的核心命令(重点看 Events)验证服务是否正常确认应用在 Pod 内正常运行。
2025-07-24 14:42:49
752
原创 【Kubernetes】使用nginx展示,Deployment 扩容与资源清理,核心组件讲解
通过命令可以快速调整 Deployment 的副本数量,这里我们将nginx用于动态调整控制器(如 Deployment、StatefulSet)的副本数量。这里通过指定目标副本数为 3,K8s 会自动创建新的 Pod 以满足需求。
2025-07-24 09:53:56
1047
原创 【Kubernetes】集群启动nginx,观察端口映射,work节点使用kubectl配置
31570拷贝admin.conf使用scp将admin.conf从 master 节点拷贝到工作节点的目录。这样可以让工作节点上的kubectl使用这个配置文件访问集群。配置环境变量设置KUBECONFIG环境变量,指定kubectl使用的配置文件路径。通过使环境变量生效。
2025-07-23 17:52:35
1493
1
原创 【计算机网络】正/反向代理服务器,有状态/无状态应用
就像一个“记性好”的服务员。它会记住用户的历史交互信息(如登录状态、购物车内容),并且依赖这些信息来处理后续请求。如果服务器崩溃或重启,用户可能需要重新登录或恢复之前的操作。如同一个“只看当前菜单”的服务员。每个请求都是独立的,不依赖之前的会话信息。服务器不会存储用户的历史状态,每次请求都需要携带所有必要信息。应用:每个请求自带所有必要信息(如 Token、参数),不依赖服务器本地历史数据,应用:处理请求时依赖服务器本地存储的历史会话数据(如内存中的用户登录状态),:银行网银系统、在线购物车。
2025-07-23 15:16:39
968
原创 【Java】面向初学者的,简单Spring项目结构,各模块功能理解
可以理解为Spring 的“启动说明书”,Spring 容器会从这个类开始加载配置。负责整合 MyBatis(ORM 框架):就是做数据库数据与java结构体的映射。Spring 容器就像一个工厂,配置类是它的启动按钮和操作手册。总而言之,就是给spring提供数据源的配置转换方法,由。然后按照手册开始造零件(注册 Bean)最后把所有零件组装起来(完成依赖注入)工厂开始读手册(读取配置类注解)负责配置数据源(底层资源)按下启动按钮(加载配置类)转到,java能看懂的类。
2025-07-21 11:22:06
589
原创 【Java】Spring的依赖注入理解,@Autowired用法
依赖注入(Dependency Injection)由 Spring 容器来管理对象之间的依赖关系,并自动将依赖对象注入到目标对象中。问题回答什么是依赖注入?Spring 自动帮你把需要的对象注入进来怎么使用?构造器、Setter、字段注入(@Autowired@Autowired是干嘛的?注入引用类型(Bean)@Value是干嘛的?注入简单类型(字符串、数字等)为什么@Bean方法里可以直接加形参?Spring 会根据类型自动装配@Autowired这里不能用吗?在@Bean。
2025-07-21 10:19:15
654
原创 【Java】Java-CREMB项目结构理解
模块名职责是否有接口是否有业务逻辑是否被依赖admin后台管理系统接口✅❌(调用 service)✅(依赖 service)common公共类、常量、工具类、枚举、异常等❌❌✅(被所有模块依赖)front用户侧接口(小程序、H5、APP)✅❌(调用 service)✅(依赖 service)generate代码生成器❌✅(生成代码)❌service核心业务逻辑(支付、订单、用户、积分等)❌✅❌(被其他模块依赖)admin和front是"接口层",service。
2025-07-19 12:03:23
933
原创 【计网】为什么允许跨域能方便前端开发?设置AllowCredentials必须要限制AllowOrigin
跨域配置是后端为前端提供的“通行证”,它让前端可以在本地开发、多环境调试、小程序调用等场景下,直接访问后端接口,极大地提高了开发效率和部署灵活性。当设置时,必须指定具体的域名,不能是"*",这是浏览器安全机制的要求,防止跨站请求伪造攻击。
2025-07-19 11:55:50
1050
原创 【软件工程】tob和toc含义理解
关注技术实现细节、性能和稳定性,通常涉及底层技术选型、接口调用、容错处理等。:关注业务逻辑的设计合理性、数据一致性、用户体验等。:满足业务需求,同时保证。
2025-07-09 18:54:11
659
原创 【Kafka】登录日志处理的三次阶梯式优化实践:从同步写入到Kafka多分区批处理
分区策略是关键:根据业务特点选择分区策略,我们按用户类型分区实现了并行处理批处理参数需要调优:避免小请求风暴:平衡延迟和吞吐BatchSize:根据数据库写入能力调整客户端复用很重要// 使用sync.Once确保单例// 初始化客户端})监控不可少// 监控批处理指标// ...处理逻辑...// 记录指标错误处理策略网络错误:重试机制数据处理错误:死信队列数据库错误:降级写入本地文件。
2025-07-09 18:52:37
1013
原创 【Linux】面向小白,全流程无脑,VMware Workstation Pro + Ubuntu20.04虚拟机安装+Docker+MySQL+Redis+PgSQL+K8s+sh自动化脚本配置环境
想要↓选密码来偷懒时,是无法选中的,因为你点击聚焦到当前会话,浮窗就消失了),而且多个会话窗口如果重叠,密码选中会卡住,所以。这里也可以选22、24版本的ubuntu,只是后续apt配置可能不同,默认软件版本不同。可以预装软件,不推荐在这里勾选,版本可能比较旧,后续都可以根据需要单独下。这里要关闭当前终端,重新打开,才会发现主机名发生变化 (⊙o⊙)不用再输密码),输入一次密码,避免等会命令批量执行被打断输密码。后面对应的主机名变更一下,方便区分,这里把。,出现跳转,就可以用WindTerm连接了。
2025-07-07 18:47:28
452
1
原创 【Kubernetes】创建第一个应用指南及核心组件解析
操作命令示例说明创建资源仅创建(资源不存在时,区别于apply,资源存在时再次create会报错)更新资源创建或更新(推荐使用)查看Pod列表查看当前Namespace的Pod查看所有Namespace的Pod查看集群所有Pod查看Service查看Service列表。
2025-07-07 18:43:56
419
原创 【go】初学者入门环境配置,GOPATH,GOROOT,GOCACHE,以及GoLand使用配置注意
环境变量环境变量Win + Rsysdm.cplGOROOTGOPATHGOPATHsrcGOCACHEGOCACHE可以不配置,默认会存在这里,我的c盘紧缺,用到后面会占很多地方,所以配置到E盘go buildgo rungo versionfmt。
2025-06-28 19:18:49
1103
原创 【Elasticsearch】es初识,在项目架构中的用途,与mysql和kafka的配合使用,
阶段系统作用1MySQL业务主库,负责存储真实、结构化的数据2Kafka消息中间件,做异步解耦、缓冲和流式处理3专用于搜索,支持全文检索、相关度评分等搜索功能4前端直接查 ES,提升搜索速度、支持搜索功能增强。
2025-06-25 18:52:07
430
原创 【JavaScript】Iterable可迭代对象,for..in和for..of操作区别,自定义可迭代对象实现
在 JavaScript 中,Iterable(可迭代对象)是指实现了方法的对象,这意味着它们可以被迭代(遍历)。数组(Array)字符串(String)MapSet函数的 arguments 对象NodeList(DOM 集合)特性for…infor…of遍历内容对象的可枚举属性(键名可迭代对象的值适用对象普通对象可迭代对象(数组、字符串等)原型链属性会遍历不会遍历顺序保证不保证保证能否用于普通对象可以不可以(除非实现迭代器。
2025-06-22 10:53:24
645
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人