自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 网络、API 连接和 pod 启动的问题

和服务的网络连通性差,出现了如等错误。你尝试访问相关服务时,出现了或错误。证书相关错误或 K8S 服务间的连接无法建立,导致应用无法启动和运行。:Calico 没有正确设置或接口未启用,导致 Pod 网络无法正常工作。特别是tunl0或vxlan等接口的状态为UNKNOWN,并且没有正确的路由设置。:如ip_forward和rp_filter设置不正确,影响到网络转发和封装。:防火墙设置或路由规则可能限制了 Pod 和节点之间的通信。:由于无法连接到集群的,导致 ArgoCD 无法拉取目标状态。

2025-12-10 23:26:06 423

原创 devOps项目问题总结

helm是k8s的包管理器,类似 Linux 的 yum/apt,用 Charts 打包、安装、升级应用。下载 kube-prometheus-stack Chart(可离线下载后上传 GitHub)CI:持续集成(构建、测试、打包,例如 GitHub Actions / Jenkins)GitOps → 配置即代码,Git 仓库为单一真相源,Kubernetes 自动同步。3.Ansible:安装和使用非内置内容集合(collections)4. Argo CD 自动同步到集群(或手动同步)

2025-12-09 23:24:56 411

原创 CRD客户资源定义

CRD (Custom Resource Definition) 是 Kubernetes 中用于扩展 API 的机制,允许用户创建自己的资源 类型,就像内置的Pod、Deployment、Service等资源一样。3. Controller:通常与 CRD配合使用,负责处理CR的创建、更新和删除等操作。1. CRD定义:CRD是一个Kubernetes对象,用于定义自定义资源的类型和结构。2. 领域特定抽象:为特定领域(如网站托管、数据库等)创建高级抽象。4、自定义中间件管理;5、特定领域应用管理。

2025-12-04 23:27:43 191

原创 100台服务器怎么管理

采用自动化+标准化+监控告警的铁三角策略。具体是:使用Kubernetes进行容器编排实现自动化,通过IaC(基础设施即代码)保证标准化,搭建完善的监控告警体系确保可靠性。

2025-12-03 23:23:03 306

原创 如何对节点进行关机维护

drain 会把节点上的可迁移Pod安全地迁移到其他节点,--ignore-daemonsets :忽略DaemonSet管理的Pod(这些Pod不能迁移)。--delete-emptydir-data :删除节点上的临时存储(EmptyDir)数据,如果你确认可以丢弃。在Kubernetes集群中对节点进⾏关机维护,需要保证Pod不会被突然中断,尤其是⽣产环境中。cordon 会把节点标记为不可调度,新的Pod不会调度到该节点上。关键点:先阻⽌调度,再安全迁移Pod,最后关机,保证集群稳定性。

2025-12-02 23:30:33 141

原创 Kubernetes Deployment 到 Pod 创建流程

用户提交 Deployment → 控制器创建 ReplicaSet → ReplicaSet 创建 Pod → Scheduler 调度 Pod → Kubelet 运行容器。1. Deployment Controller 监听到新 Deployment,创建对应的 ReplicaSet。3. 绑定:将 Pod 绑定到最优节点,更新 Pod 的 nodeName。1. 过滤:排除不满足条件的节点。1. 监听到分配给自己的 Pod。3. 通过容器运行时创建容器。2. 打分:对剩余节点评分。

2025-12-01 23:57:51 150

原创 TIME_WAIT和四次挥手

在第四次挥手时,主动关闭连接的一方(上面例子中的客户端 A)在发送完最后一个 ACK 后,不会直接进入CLOSED 状态,而是会进入一个名为 TIME_WAIT 的状态。· 同时,B 并不知道 A 已经不想收数据了,它可能还在向 A 发送数据,但这些数据都会被 A 丢弃(因为 A 已经认为自己发出了关闭请求)。· 如果 A 没有 TIME_WAIT 状态而直接关闭,当 B 重传 FIN 时,A 会回复一个 RST 包,这会让 B 认为发生了错误,而不是正常关闭。· A 发出 FIN 后,收不到任何确认。

2025-11-30 22:59:21 253

原创 部署k8s集群的步骤

2. kubectl get pods -n kube-system:检查核心系统Pod(如DNS、网络插件)是否全部 Running。· 安装三大核心工具:kubeadm(集群引导)、kubelet(节点代理)、kubectl(集群管理)。· 关键点:关闭Swap是为了保证kubelet的调度和资源管理不受磁盘交换影响,这是硬性要求。· --pod-network-cidr 必须与后续选择的网络插件匹配,这是Pod间通信的基础。· 原因:初始化的集群缺少Pod网络,节点状态为NotReady。

2025-11-28 01:18:51 213

原创 容器的命名空间能隔离时间⽚吗

CPU时间⽚分配是由Linux内核调度器控制的,如果要限制容器使⽤的CPU资源,需要⽤cgroup(控制组),通过CPU配额或权重来间接影响时间⽚。总结:命名空间不隔离时间⽚,cgroup才能控制CPU使⽤。这些命名空间只是逻辑上的隔离,它们不会控制CPU时间⽚。• Netnamespace→隔离⽹络接⼝和IP。• UTSnamespace→隔离主机名和域名。• Usernamespace→隔离⽤⼾和权限。• IPCnamespace→隔离进程间通信。• PIDnamespace→隔离进程号。

2025-11-27 00:31:38 341

原创 github连接和认证问题

git remote set-url origin https://github.com/用户名/sre-agent-gitops.git。git remote set-url origin https://github.com/用户名/sre-agent-gitops.git。· 原因: 试图使用GitHub账户密码而非Personal Access Token进行认证。· 访问: https://github.com/settings/tokens。# 方案B: 使用HTTPS + Token(备选)

2025-11-26 00:39:02 259

原创 configmap和secret的区别

当你更新ConfigMap时,Kubernetes会异步地将更新后的文件投射到所有挂载了该卷的Pod中。一旦Pod运行起来,这些值就是静态的,ConfigMap的后续更新不会反映到已经运行的Pod中。· 解决方案:必须重启或重新创建Pod才能使新的配置生效。· 注意事项:应用程序需要能够监听文件变化(例如,使用inotify)或定期重新加载配置文件,否则即使文件内容变了,应用程序也可能还在使用旧的内存缓存。· 最终一致性:Kubernetes保证最终所有Pod都会看到更新后的内容,但不保证强一致性。

2025-11-25 01:04:39 121

原创 Cgroups内部的工作原理是怎么控制CPU能被限制住?

④ CFS会根据这些限制,控制该cgroup的进程在每个调度周期内只能使用指定量的CPU时间。③ 内核的Cgroup子系统会读取这些配置,应用到对应的进程组。通过Linux内核的调度器(CFS)与cgroup机制联动。② 这些参数会被写入到cgroup的虚拟文件系统中。① 首先用户/容器运行时设置cgroup参数。

2025-11-24 00:40:08 76

原创 Kubernetes + ArgoCD + Prometheus 部署问题总结及解决方案

Pod 卡在 ContainerCreating。SSH 连接 GitHub 失败。同步状态 Degraded。健康状态 Degraded。

2025-11-20 13:42:02 200

原创 Linux启动过程(简)

4. Systemd 阶段:内核启动 PID 为 1 的 systemd 进程,它并行拉起所有系统服务。3. 内核阶段:内核初始化硬件,借助 initramfs 加载必要驱动,并挂载真正的根文件系统。Linux 的启动过程是一个从硬件到软件、从底层到上层的连贯过程。2. 引导阶段:GRUB 等引导程序加载内核和 initramfs 到内存。1. 固件阶段:BIOS/UEFI 进行硬件自检,并加载引导程序。5. 登录阶段:启动登录管理器或 getty,等待用户登录。

2025-11-19 00:14:45 299

原创 du和df结果区别原因

1. 首先,也是最常见的原因,是存在‘文件已被删除但进程仍占用’的情况。df 的结果包含了 inode、日志等系统开销以及为 root 预留的空间,而 du 只计算用户文件的实际数据量。排查思路是:优先用 lsof 检查已删除文件 -> 检查文件系统预留空间 -> 考虑元数据开销 -> 结合环境(如容器)进行排查。4. 最后,稀疏文件也会造成两者显示不一致,但这种情况通常不会造成如此巨大的容量差异。3. 在容器化环境中,也需要检查是否有容器内的进程导致了同样的问题。

2025-11-18 00:18:40 116

原创 ingress⽀持按照哪些规则转发流量

虽然不是严格的路由规则,但是ingress可以根据host来使用不同的证书进行tls终端。按请求头的host来进行匹配,实现不同域名请求可以转到不同的service。实现更为精确的匹配转发,host如果不匹配流量不会进入该规则。prefix(前缀匹配)exact(精准匹配)1.域名(host)

2025-11-17 00:04:56 88

原创 http协议

http是一个无状态的、请求-回应式的应用层协议,是web通信的基石。请求头(Host、cookie、user-agent、authorization等)http在发送内容之前需要tcp的三次握手机制来构建一个可靠安全的连接。请求体(post提交的表单等可能包括账号密码等敏感信息)响应头(set-cookie、content-type)状态行(状态码(404、500等)+状态信息)响应体(服务器返回的HTML页面等实际内容)每次请求都是独立的,服务器不记忆之前的状态。请求行(指令+URL+http版本)

2025-11-15 00:06:53 195

原创 网络协议及其作用

比如,你的电脑要访问同一网络下的打印机,就需要通过ARP广播来问:“谁的IP是192.168.1.10?· 作用: 是互联网的基石。· 作用: HTTP 是万维网的数据通信基础,用于浏览器和服务器之间的通信。· 作用: 动态主机配置协议,自动为网络中的设备分配IP地址、子网掩码、网关等参数,实现“即插即用”。· 应用场景: 视频流媒体、实时游戏、DNS查询、VoIP等对速度敏感、允许少量数据丢失的场景。· 作用: 提供面向连接的、可靠的、基于字节流的传输服务。· 作用: 提供无连接的、不可靠的数据报服务。

2025-11-14 00:14:42 436

原创 Linux中top基本命令

表示过去 1分钟、5分钟、15分钟的系统平均负载。对于多核CPU,负载值除以核心数即为利用率(例如,4核CPU负载为4.00表示满负荷)。它提供了一个动态更新的、全面的系统状态视图,包括 CPU 使用率、内存使用、进程信息等。:进程使用的、未被换出的物理内存大小(单位通常是 KiB 或 MiB)。:进程自上次更新后使用的 CPU 时间百分比。这是找高 CPU 进程的关键列。:被虚拟化程序(如 VMware、KVM)“偷走”的时间百分比。进程总数及其状态(运行中、睡眠、停止、僵尸进程)。

2025-11-13 00:13:14 566

原创 liveness probe和startup probe的区别

简而言之,您可以将 Startup Probe 理解为容器启动阶段的“守门员”,它确保应用完全启动起来后再交给后续的检查机制。对于启动缓慢的应用,结合使用 Startup Probe 和 Liveness Probe 是一种最佳实践,它既能保障应用有充足的启动时间,又能确保其在运行期间的持续健康。在 Startup Probe 成功之后(如果配置了 Startup Probe),或者经过初始延迟之后(如果没有配置 Startup Probe),Liveness Probe 便开始工作。

2025-11-11 23:59:59 160

原创 关于linux的基本命令

可以将一个命令的输出作为另一个命令的输入,这是 Linux 命令行的精髓。:以长格式列出,并以人类可读的单位(K, M, G)显示文件大小。修改文件或目录的读(r=4)、写(w=2)、执行(x=1)权限。:以长格式列出详细信息(权限、所有者、大小、修改时间)。:以人类可读的格式(如 G, M)显示。:递归删除目录及其内部所有内容。:显示所有用户的详细进程信息。:切换到绝对路径指定的目录。:切换到当前用户的家目录。:切换回上一个所在的目录。:以人类可读的格式汇总(:以人类可读的格式显示。:强制删除,不询问。

2025-11-10 23:49:01 296

原创 http和https的区别

http传输为明文传输,不安全,信息容易被泄露和窃取,而https传输明文前进行加密,使用SSL/TLS协议进行加密,传输过程安全,信息不易被窃取或偷听。1.客户端向服务器发起https连接,服务器将其SSL证书(包含公钥)发送给客户端,客户端验证证书的合法性。双方都安全的获得了会话密钥,后面的通信都使用这个会话密钥来进行加密解密,即进入了对称加密状态。3.客户端利用公钥来加密这个会话密钥,并将其发送给服务器。2.客户端随机生成一个会话密钥用于后面的加密解密。4.服务器使用自己的私钥来解密,获得会话密钥。

2025-11-10 00:20:30 782

原创 http的几种方法

patch 部分更新资源,不安全也不幂等(通常),常用于更新数据中的某些字段。options 查询支持的方法,安全且幂等,常用于cors预检请求。put 整体更新资源,不安全但幂等,常用于整体替换数据。head 获取响应头,安全且幂等,常用于检查链接有效性。delete 删除资源,不安全但幂等,常用于删除数据。post 创建资源,不安全且不幂等,常用于创建新项。get 获取资源,安全且幂等,常用于读取数据。

2025-11-07 23:30:26 97

原创 pod的创建过程

scheduler检测到未绑定的pod,执行调度决策,将绑定信息写回到APIserver。节点上的kubelet检测到pod,通过容器进行时创建容器,更新状态并上报。API server进行初始处理,将数据信息写入etcd。APIserver将最终状态写入到etcd。用户向API server提交pod请求。APIserver将绑定信息写入etcd。

2025-11-06 23:44:16 252

原创 什么是StatefulSet?它的主要作用是什么?

与Deployment相同的是,管理容器中基于相同规约的一组Pod。不同的是,StatefulSet为每个pod维护了一个有粘性的ID,也就是说,这些pod基于相同的规约来创建,但是不能相互替换,无论怎样调度,pod的唯一ID不变。比如说希望使用存储卷为工作负载提供持久性的支撑,就可以使用StatefulSet。在这种环境下,StatefulSet中的某个pod出现故障,则立马启动新的pod替换失败的pod,持久的pod标识符使新pod与持久卷匹配更加容易。

2025-11-06 00:16:47 137

原创 Deployment的作用及经典用法

一个Deployment可以为Pod和ReplicaSet提供声明式更新能力,管理员描述Deployment的状态,Deployment控制器可以通过可控的速度更改RS来使RS的实际状态变成预期状态。2.通过更新Deployment的PodTemplateSpec来声明Pod的更新。1.创建Deployment来上线ReplicaSet。4.扩大Deployment规模来承担更多负载。3.回滚到较早版本的Deployment。

2025-11-05 00:39:48 236

原创 构建k8s集群的步骤

3.关闭每个节点上的swap分区,加载br_netfilter来允许桥接流量,安装kuberadm kubectrl kubulete软件包,集成CRI-Docker。2.给每个节点安装docker-ce docker-ce-cil containerd.io docker-compose-plugin,部署CRI-Docker。4.使用yaml文件在master节点上部署集群,创建集群(kubeadm init),将节点加入(kubeadm join)5.部署calico网络插件,检验k8s集群状态。

2025-11-04 00:23:09 193

原创 云原生概念

是什么:容器化是云原生的基础。它将应用程序及其所有依赖项(库、环境变量、配置文件等)打包成一个标准化的、轻量级的、可移植的“容器镜像”。· 是什么:云原生鼓励开发(Dev)和运维(Ops)团队的紧密协作,通过高度自动化的工具链(CI/CD),实现代码的频繁、可靠、低风险的发布。· 好比:建立了一条高度自动化的汽车生产线,从零件(代码)到整车(可部署的应用)的整个过程都是流水线作业,快速且质量可控。总而言之,云原生是一套完整的、以云计算为基础的应用设计、开发、部署和运维的“最佳实践”体系。

2025-11-02 23:25:17 324

原创 c语言迷宫

define HZ 100//刷新率(HZ毫秒每次)int dx[]={0,1,0,-1};printf("找不到路径!#define N 10//迷宫宽。#define M 10//迷宫长。

2025-08-21 15:07:03 420

空空如也

空空如也

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

TA关注的人

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