- 博客(1825)
- 收藏
- 关注
原创 Kubernetes CoreDNS策略配置和域名解析说明
本文介绍了在Kubernetes集群中配置Pod DNS策略的方法,主要包含四种场景:1) 使用ClusterFirst策略默认采用集群CoreDNS解析域名;2) 通过None策略自定义Pod的DNS配置;3) 使用Default策略继承节点ECS的DNS配置;4) 在HostNetwork模式下采用ClusterFirstWithHostNet策略访问集群服务。文章详细说明了每种策略的适用场景、示例配置和关键参数,并提供了集群DNS服务的基本查询方法,帮助用户根据实际需求选择合适的DNS解析方案。
2025-06-09 09:56:31
833
原创 Kubernetes CoreDNS 概述
Kubernetes集群中的DNS解析机制主要依靠CoreDNS和NodeLocalDNSCache组件实现。CoreDNS负责解析集群内服务域名(格式为<servicename>.<namespace>.svc.<ClusterDomain>)和外部域名,作为集群默认DNS服务器运行。NodeLocalDNSCache则在每个节点部署DNS缓存,减轻CoreDNS负载并提升解析效率。集群DNS配置包含三个层面:全局的ClusterDomain设置(默认cluster.l
2025-06-06 10:40:59
747
原创 etcd 性能 FIO测试
etcd作为一个分布式键值存储系统,其性能主要由延迟和吞吐量两个因素决定。延迟指完成操作所需时间,而吞吐量则是在特定时间内完成的操作数量。在并发客户端请求下,etcd的平均延迟会随吞吐量增加而增加。在标准云环境中,三成员etcd集群在轻负载下可实现低于1毫秒的请求完成时间,重负载下每秒可处理超过30000个请求。etcd使用Raft算法确保数据一致性和复制,其性能受网络和磁盘IO延迟限制。为提高吞吐量,etcd采用批量处理策略。此外,etcd的性能还受到MVCC存储引擎、快照、压缩和gRPC系统的影响。通过
2025-05-23 09:50:47
953
原创 云原生|kubernetes|kubernetes的etcd集群备份策略
总结:etcd恢复还是比较快的,脚本做了一些工作,比如,停服务,因此,恢复完要先启动etcd,然后在其它节点启动etcd,最后启动kube-apiserver服务,顺序不要搞错了哦。可将备份脚本放入计划任务,实现自动备份哈,这里我就不演示啦,然后恢复的时候根据需要恢复任意天的etcd。再次强调,集群恢复是所有节点都恢复,不能只恢复一个节点,那样会劈叉的,根据每个节点的etcd配置文件修改脚本。
2025-05-13 15:04:03
2319
原创 ETCD 集群的常见问题处理(2)
本文介绍了ETCD集群在日常运维中常见问题的处理方法。ETCD是一个高可用的分布式Key/Value存储系统,使用Raft算法保持集群一致性。文章详细描述了三种常见问题的解决步骤:1)单个节点宕机的恢复,包括查看状态、摘除异常节点、重新部署和加入集群;2)超过半数节点宕机的恢复,涉及备份数据恢复、启动服务和检查状态;3)数据库空间超限的恢复,包括备份数据、获取reversion、compact、defrag和删除报警。文章还建议定时备份和压缩数据,并增加集群监控以确保服务稳定运行。
2025-05-12 10:34:09
1740
原创 Etcd 数据存储文件 配置建议和管理
etcd集群在正常服务时,成员分为Leader和Follower两种状态,确保数据强一致性。所有数据从Leader流向Follower,Follower数据必须与Leader一致,否则会被覆盖。Leader处理所有写操作,并需等待超过半数的成员确认写操作成功,而Follower可直接响应读操作。etcd采用预写式日志(WAL)记录所有数据库事务,确保数据持久化。此外,etcd定期生成数据库快照(snapshot),记录某一时间点的数据状态,以减少日志体积并辅助数据恢复。快照与WAL日志结合,可快速同步故障实
2025-05-09 17:20:32
1189
原创 Vue 生命周期详解
vue的生命周期,是vue中比较重要的知识点,在面试中也经常会被问到,所以就打算写一篇关于vue生命周期的文章。世间万物都有自己生命周期⏱,vue也有这一特点,vue的生命周期可以简单分为四个阶段:创建阶段,挂载阶段,运行阶段,销毁阶段。每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。❝在这个过程中会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会❞每个阶段都有两个。
2025-05-09 11:19:58
1815
原创 Kubernetes etcd 故障恢复(1)
本文介绍了处理ETCD集群故障的步骤,包括查看集群状态、剔除故障节点、重新添加故障节点以及备份恢复集群的方法。首先,通过etcdctl命令查看集群状态,识别主节点和故障节点。接着,使用member remove命令剔除故障节点,并通过member list验证剔除是否成功。随后,详细说明了重新添加故障节点的步骤,包括清空旧数据、修改配置文件、拷贝证书以及执行member add命令。最后,文章还提供了备份恢复集群的流程,强调停止相关服务、恢复数据后重启服务的操作顺序。通过这些步骤,可以有效维护ETCD集群的
2025-05-09 11:04:05
1987
原创 Etcd 压缩整理
内存中的存储除了顺序化的记录下所有用户对节点数据变更的记录外,还会对用户数据进行索引、建堆等方便查询的操作。历史版本越多,存储空间越大,性能越差,直到etcd到达空间配额限制的时候,etcd的写入将会被禁止变为只读,影响线上服务,因此这些历史版本需要进行压缩。由于ETCD数据存储多版本数据,随着写入的主键增加历史版本需要定时清理,默认的历史数据是不会清理的,数据达到2G就不能写入,只是对给定版本之前的历史版本进行清理,清理后数据的历史版本将不能访问,但不会影响现有最新数据的访问。
2025-04-17 11:10:44
2600
原创 etcdctl工具 管理操作etcd集群 存储调整
etcd就是个分布式非关系型数据库,3 个节点组成的集群,可以容忍 1 个节点故障。生产环境中,不推荐使用单个节点的 etcd 集群。etcd 支持存储多个版本的数据,允许查询指定 key 历史版本的数据。etcd 为了控制数据总空间,会周期性的清理数据的历史版本。etcd 不支持修改旧版本的数据。etcd 中,数据以二进制的方式存储在磁盘中。#/bin/bash。
2025-04-16 10:34:12
2640
原创 Vue 局部布局 K8s项目 header部分 下拉选择框 [el-select]
整体布局写完了,那么就可以写main这部分的局部布局了,一般在做后台系统的时候,大部分时候,在做一些数据展示的时候基本上都会使用table的方式去做应该数据的展示,以及各种操作。按钮也可以放在table里面去,头部会给一些搜索的逻辑,基于什么样的条件去做一个搜索。在开发之前,先开发header,最后开发table。(也就是main里面的header)搜索之后数据就会慢慢展示出来了,然后对每条数据进行什么样的操作。
2025-04-14 09:16:46
1906
原创 Vue Kubernetes项目 局部布局面包屑 el-breadcrumb
这种一项一项手写面包屑的方法带来了很多重复性工作,比如每个页面中都需要写一遍“首页”的面包屑,所有“活动管理”下的所有页面,也都需要写一遍“活动管理”。这时如果路由需要调整,那么所有页面的面包屑都要进行修改,非常繁琐。因此如果可以自动生成面包屑,就能够减轻很多重复性工作,也方便代码维护。
2025-03-29 14:17:07
3063
转载 Kubernetes Pod OOM 和 CPU 限制
中看到的,当我们想要限制进程的资源消耗时,设置限制或请求非常重要。不过,请注意不要将总请求设置为大于实际 CPU 大小,因为这意味着每个容器都应该有一定数量的 CPU。实际上,如果所有容器使用的内存多于请求的内存,则可能会耗尽节点中的内存。通过设置不切实际的限制或过度使用,您可能不会意识到您的进程受到限制,并且性能受到影响。限制是设置节点中资源最大上限的一种方法,但需要谨慎处理,因为最终可能会导致进程被限制或终止。云应用程序中的 CPU 和内存要求变得越来越重要,因为它们与您的云成本直接相关。
2024-12-10 10:55:32
5698
原创 如何导出和导入Grafana仪表盘
您可以使用导出导入Grafana仪表盘功能对Grafana仪表盘进行备份,或将仪表盘从一个Grafana实例迁移到另一个实例中。本文介绍如何导出和导入Grafana仪表盘。
2024-12-04 15:48:39
8141
原创 CoreDNS Plugins ---> hosts 添加hosts解析记录
虽然格式"172.30.200.21 172.30.200.22 172.30.200.23 kubenode1"可以正常下发configmap资源,但只有第一个ip生效。通过coredns的hosts插件配置kubernetes集群的dns服务,使集群内部可通过hostname/域名访问外部服务。kubernetes集群外部有少量服务,kubernetes集群内部pod需要通过服务所在的主机的hostname访问服务。# 省略了”FILE“,"ZONES"等字段。# ping外部hostname。
2024-10-08 16:40:33
7019
原创 Alertmanager 路由匹配
2、第二种方式则基于正则表达式,通过设置match_re验证当前告警标签的值是否满足正则表达式的内容。当前告警中是否存在标签labelname并且其值等于labelvalue。1、一种方式基于字符串验证,通过设置。告警的匹配有两种方式可以选择。
2024-09-26 17:48:24
4329
原创 你真的理解 Kubernetes 中的 requests 和 limits 吗?
为了实现 Kubernetes 集群中资源的有效调度和充分利用, Kubernetes 采用requests和limits两种限制类型来对资源进行容器粒度的分配。每一个容器都可以独立地设定相应的requests和limits。这 2 个参数是通过每个容器 containerSpec 的 resources 字段进行设置的。一般来说,在调度的时候requests比较重要,在运行时limits比较重要。
2024-09-09 18:03:30
4512
原创 kubernetes Pod failed to create fsnotify watcher: too many open files
fs.nr_open: 控制单个进程可以打开的文件描述符的最大数量。单个进程的文件描述符限制可以通过 ulimit 命令来设置。单个进程能够打开的文件描述符总数的限制。当前系统可打开的最大数量指定用户可以打开的最大数量。
2024-09-06 10:20:17
4973
1
原创 prometheus cadvisor 容器相关指标
3、 container_cpu_user_seconds_total与container_cpu_system_seconds_total的总和,代表容器占用CPU的总和。6、 查询容器相关的 数据:查询所有POD的1min内CPU使用情况,用到的数据指标是k8s通过request(下限)和limit(上限)限制容器的CPU和内存的使用范围,在容器运行的过程中需要实时监控容器对cpu的使用情况。1、 容器用户态占用CPU的时间总和。
2024-09-04 10:17:25
5865
原创 Kubernetes 如何给pod的 /etc/hosts文件里面添加条目
上面就是可以将aa/bb.local可以解析为10.1.1.1的地址。cc/dd.local就可以解析为10.1.1.2的地址。可不可以在创建pod的时候指定一些条目在hosts里面?创建pod的时候,pod会在其/etc/hosts里面添加一个条目。这样就完成添加hosts解析了!
2024-08-21 21:31:12
3848
1
原创 JavaScript getElementById 使用方法
在JavaScript中,document.getElementById()是一种用于通过元素的id属性获取DOM元素的方法。它的作用是返回与指定id匹配的HTML元素。使用document.getElementById()可以通过元素的id属性直接获取该元素的引用,在标签上定义一个ID,然后JS基于这个ID去调用它。然后可以使用该引用对元素进行各种操作。(1) 修改元素的内容或属性。(3)获取表单元素的值。(2)添加事件监听器。
2024-08-14 16:53:41
6131
原创 kubernetes Pod在容器内获取Pod信息
从日志中我们可以看到Container的requests.cpu、limits.cpu、requests.memory、limits.memory等信息都被正确保存到了Pod的环境变量中。注意valueFrom这种特殊的Downward API语法,目前resourceFieldRef可以将容器的资源请求和资源限制等配置设置为容器内部的环境变量。从日志中我们可以看到Pod的IP、Name及Namespace等信息都被正确保存到了Pod的环境变量中。◎ requests.cpu:容器的CPU请求值。
2024-08-10 15:58:59
3984
原创 nginx 405错误是什么意思
当Web服务器收到一个它不支持的HTTP请求方法时,就会返回405错误。405错误通常是由于客户端发出了不兼容或不支持的HTTP请求方法。例如,客户端可能请求一个只能通过GET方法访问的资源,但使用了POST方法。要解决405错误,需要确保客户端发送正确的HTTP请求方法。可以查看服务器文档或使用HTTP请求测试工具来确定正确的请求方法。
2024-08-07 11:27:34
5232
原创 JVM 性能测试分析工具: jps、jstack、jmap、jhat、jstat、hprof 使用详解
今天这篇文章,我们来一起聊聊在做性能测试常用到的性能分析工具。这些问题在日常开发、维护中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用。
2024-07-31 17:03:04
4309
原创 RocketMQ 搭建
Producer:消息的发送者;举例:发信者Consumer:消息接收者;举例:收信者Broker:暂存和传输消息;举例:邮局NameServer:管理Broker;举例:各个邮局的管理机构Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接受者可以订阅一个或者多个Topic消息Message Queue:相当于Topic的分区;用于并行发送和接收消息。
2024-07-19 09:58:42
4230
原创 8个步骤彻底清理Docker镜像
镜像积累如山,不仅占用宝贵的磁盘空间,还可能给我们的工作带来不便。今天,就让我带大家深入了解如何高效清理 Docker 镜像,保持我们的开发环境干净整洁。通过上面的分享,相信大家已经对如何清理 Docker 镜像有了更加全面和深入的认识。检查一下这些镜像,评估哪些是必要的,哪些是可以删除的。如果有一系列复杂的清理规则,我们可以编写一个简单的脚本来自动化这个过程。上面的命令会删除所有创建时间超过168小时(7天)的镜像。这样我们可以直观地看到哪些镜像占用空间较大,然后手动删除。那么,今天的内容就到这里。
2024-07-17 17:59:13
5221
原创 JVM 调优参数
XX:TargetSurvivorRatio表示,当经历Minor GC后,survivor空间占有量(百分比)超过它的时候,就会压缩进入老年代(当然,如果survivor空间不够,则直接进入老年代)。而新生代是用来存放新创建的对象,大小是随着堆大小增大和减少而有相应的变化,默认值是保持堆大小的十五分之一,-Xmn参数就是设置新生代的大小,也可以通过-XX:NewRatio来设置新生代与年老代的比例,java 官方推荐配置为3:8。所以如果设置新生代大小的调整,则需要严格的测试调整。在jdk5以上的版本,
2024-07-17 09:19:22
3815
原创 ES证书过期替换方案
1.批量下发证书,从各个节点日志可以看出,证书已更新2.集群中的某个节点,重启时,如果自己的证书和其他节点不一致,可以启动但是无法被其他节点识别,无法加入集群直接替换证书,自动就被其他节点识别到,然后节点正常加入集群3.查询命令:查询证书过期验证证书是否有效。
2024-07-13 17:07:57
3864
原创 【无标题】
在所有node节点下,在 /etc/elasticsearch 目录中创建 certs 文件夹将elastic-certificates.p12 文件拷贝到certs 目录下(注:是所有的node节点对应的/etc/elasticsearch/certs)此时,我们还不知道密码是多少,之前都是一路回车的。访问:Kibana,查看认证情况:需要先编辑Kinaba的配置文件(),设置elasticsearch的密码后,重启kibana。如下,按照提示,依次输入和确认密码即可。进入bin目录,执行。
2024-07-13 15:23:23
2390
原创 APIServer 认证 ServiceAccount
的SerivceAccount后,我们来看一下这个ServiceAccount的内容。我们按照前面yaml文件创建Pod,那么apiserver将会把该ServiceAccount的Secret挂载到Pod的路径。然后,然后apiserver的serviceaccount认证器拿到这个ServiceAccountToken后,利用参数。从外部访问Apiserver的安全端口时,客户端需要携带一个身份凭证,能够让apiserver认证为某个用户以及所属的组。我们来看一下这个Secret的内容,如下。
2024-07-12 09:43:13
2788
原创 Kubernetes APIServer 几种基本认证方式
在上文中,用户A在发起API请求时,管理员如何道该请求是用户A发起的呢?所以,客户端在发起API请求时,必须要携带一个身份信息来表明"我是谁",Apiserver在收到请求后,需要对这个身份信息进行认证(“不是你说你是谁,你就是谁,而是我核实你是谁,你才是谁”)apiserver可以通过启动参数--basic-auth-file=/path/to/file来开启密码认证,该文件的每一行如下:第一个字段为密码,第二个为用户名,第三个为用户id,后面为组名(可选,如果有多个组,则需要用双引号引起来)
2024-07-10 11:31:55
2369
原创 Kubernetes 为pod指定DNS
所以说当创建pod的时候,并没有指定使用的是哪个DNS服务器,pod里面指定的是clusterfirst,优先使用集群里面的dns,kubelet知道既然使用集群里面的dns,那么集群里面的dns就是clusterdns 10.96.0.10。这里有dnsPolicy,设置为ClusterFirst ,表示优先使用集群里面的DNS服务器,那么集群里面的DNS服务器是谁呢?那么创建pod的时候可不可以去修改它所使用的dns呢?这样创建的pod不再使用集群里面的dns了,而是使用指定的dns,
2024-07-09 20:10:51
1830
原创 Kubelet 认证
然后apiserver访问kubelet,检测这个用户与组的权限。,所有通过认证的请求(包括通过认证的匿名请求)有权限访问kubelet所有的API。这显然是不合理的,所以我们需要像apiserver那样对不同的请求赋予不同的权限。如果要拒绝将匿名请求认证为以上的用户与组,配置kubelet的如下启动参数,那么匿名请求就会认证失败。,且还要提供一定的认证与授权机制,防止任何知道kubelet端口的人都能访问它的API。kubelet与apiserver的API不一样,当访问kubelet的API时,
2024-07-09 14:07:59
2390
原创 HTTP 协议中的数据压缩 Accept-Encoding Content-Encoding
是提高 Web 站点性能的一种重要手段。对于有些文件来说,高达 70% 的压缩比率可以大大减低对于带宽的需求。随着时间的推移,压缩算法的效率也越来越高,同时也有新的压缩算法被发明出来,应用在客户端与服务器端。在实际应用时,web 开发者不需要亲手实现压缩机制,浏览器及服务器都已经将其实现了,不过他们需要确保在服务器端进行了合理的配置。
2024-06-19 17:54:16
2935
原创 HTTP 重定向 状态码3xx
http状态码301代表永久重定向。当服务器收到客户端的请求时,会将其重定向到另一个url,而不是返回请求的资源。通常用于以下情况:1、当网站的url结构发生变化或网站迁移到新的域名时。2、当网站上存在重复内容时,可以使用301状态码将所有重复的url重定向到一个主要的url。3、当网站的某个页面不再存在时,可以使用301状态码将该页面的url重定向到一个现有的页面等等。(也称为URL 转发是一种为页面、表单或者整个 Web 站点/应用提供多个 URL 地址的技术。
2024-05-24 14:55:09
2833
原创 Prometheus 服务发现 添加标签
中添加标签可以采用Relabel Config的方式,通过在配置文件中编写relabel_config模块来定义要给哪些目标添加标签,该模块可以实现筛选、替换、修剪、添加等不同的转换操作。已经加载了新的配置文件。
2024-05-14 18:34:31
2495
原创 Vue 局部布局 Layout 内部布局 [el-row]、[el-col]
之前的布局容器是一个整体的框架,layout里面的布局其实就是el-row和el-col的组合。
2024-05-13 21:04:39
3141
原创 Docker nsenter 命令使用
有些时候容器里面要做一些debug,缺一些工具,可以登入到主机上面进入到容器的namespace里面去看其网络配置,看其端口监听。$ nsenter --target 上面查到的进程id --mount --uts --ipc --net --pid。容器看到的是可以通过在主机上面nsenter看到的。* –user参数是进入到user namespace中 (用户和用户组)* –pid参数是进入到pid namespace中 (进程编号)查看容器对应宿主机上面的pid,容器技术的实质是进程,
2024-05-09 14:32:41
2142
原创 linux df -h 命令卡住 解决方法
1、首先就是使用strace去追踪到底在哪里卡住了。用 df -h 查看磁盘情况,无奈卡住无法显示。2、如果没有strace命令则进行安装即可。3、显示出卡住的地方。
2024-05-08 13:56:41
1909
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人