自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 rocketmq

Producer:消息的发送者;举例:发信者Consumer:消息接收者;举例:收信者Broker:暂存和传输消息;举例:邮局NameServer:管理Broker;举例:各个邮局的管理机构Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接受者可以订阅一个或者多个Topic消息Message Queue:相当于Topic的分区;用于并行发送和接收消息。

2024-07-19 09:58:42 871

原创 Java程序CPU持续飙高,如何排查?

之后使用jstack定位有问题代码所在的行。jstack后面接上进程的pid,这样就通过jstack跟踪堆栈,通过grep从堆栈中获取相应的信息。要定位这个java进程当中使用cpu最高的线程。使用top -Hp java进程PID。拿到线程的pid之后,将其转化为16进制。这样可以定位在哪个文件,第几行代码。

2024-07-18 17:05:40 366

原创 8个步骤彻底清理Docker镜像

镜像积累如山,不仅占用宝贵的磁盘空间,还可能给我们的工作带来不便。今天,就让我带大家深入了解如何高效清理 Docker 镜像,保持我们的开发环境干净整洁。通过上面的分享,相信大家已经对如何清理 Docker 镜像有了更加全面和深入的认识。检查一下这些镜像,评估哪些是必要的,哪些是可以删除的。如果有一系列复杂的清理规则,我们可以编写一个简单的脚本来自动化这个过程。上面的命令会删除所有创建时间超过168小时(7天)的镜像。这样我们可以直观地看到哪些镜像占用空间较大,然后手动删除。那么,今天的内容就到这里。

2024-07-17 17:59:13 486

原创 Prometheus 监控 Java 应用 JMX Exporter

Java Management Extensions,JMX 是管理 Java 的一种扩展框架,JMX Exporter 基于此框架读取 JVM 的运行时状态。JMX Exporter 利用 Java 的 JMX 机制来读取 JVM 运行时的监控数据,然后将其转换为 Prometheus 可辨识的 metrics 格式,以便让 Prometheus 对其进行监控采集。JMX Exporter 提供启动独立进程及JVM 进程内启动(in-process)两种方式暴露 JVM 监控指标:1.

2024-07-17 16:13:56 826

原创 JVM 调优参数

XX:TargetSurvivorRatio表示,当经历Minor GC后,survivor空间占有量(百分比)超过它的时候,就会压缩进入老年代(当然,如果survivor空间不够,则直接进入老年代)。而新生代是用来存放新创建的对象,大小是随着堆大小增大和减少而有相应的变化,默认值是保持堆大小的十五分之一,-Xmn参数就是设置新生代的大小,也可以通过-XX:NewRatio来设置新生代与年老代的比例,java 官方推荐配置为3:8。所以如果设置新生代大小的调整,则需要严格的测试调整。在jdk5以上的版本,

2024-07-17 09:19:22 879

原创 JVM 垃圾回收的几种类型

等。但这些 GC 术语到底指的是什么,它们之间的区别到底是什么?今天我们就来详细说说。

2024-07-15 13:59:32 966

原创 ES证书过期替换方案

1.批量下发证书,从各个节点日志可以看出,证书已更新2.集群中的某个节点,重启时,如果自己的证书和其他节点不一致,可以启动但是无法被其他节点识别,无法加入集群直接替换证书,自动就被其他节点识别到,然后节点正常加入集群3.查询命令:查询证书过期验证证书是否有效。

2024-07-13 17:07:57 1399

原创 【无标题】

在所有node节点下,在 /etc/elasticsearch 目录中创建 certs 文件夹将elastic-certificates.p12 文件拷贝到certs 目录下(注:是所有的node节点对应的/etc/elasticsearch/certs)此时,我们还不知道密码是多少,之前都是一路回车的。访问:Kibana,查看认证情况:需要先编辑Kinaba的配置文件(),设置elasticsearch的密码后,重启kibana。如下,按照提示,依次输入和确认密码即可。进入bin目录,执行。

2024-07-13 15:23:23 580

原创 APIServer 认证 ServiceAccount

的SerivceAccount后,我们来看一下这个ServiceAccount的内容。我们按照前面yaml文件创建Pod,那么apiserver将会把该ServiceAccount的Secret挂载到Pod的路径。然后,然后apiserver的serviceaccount认证器拿到这个ServiceAccountToken后,利用参数。从外部访问Apiserver的安全端口时,客户端需要携带一个身份凭证,能够让apiserver认证为某个用户以及所属的组。我们来看一下这个Secret的内容,如下。

2024-07-12 09:43:13 918

原创 Kubernetes APIServer 几种基本认证方式

在上文中,用户A在发起API请求时,管理员如何道该请求是用户A发起的呢?所以,客户端在发起API请求时,必须要携带一个身份信息来表明"我是谁",Apiserver在收到请求后,需要对这个身份信息进行认证(“不是你说你是谁,你就是谁,而是我核实你是谁,你才是谁”)apiserver可以通过启动参数--basic-auth-file=/path/to/file来开启密码认证,该文件的每一行如下:第一个字段为密码,第二个为用户名,第三个为用户id,后面为组名(可选,如果有多个组,则需要用双引号引起来)

2024-07-10 11:31:55 720

原创 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 901

原创 Kubelet 认证

然后apiserver访问kubelet,检测这个用户与组的权限。,所有通过认证的请求(包括通过认证的匿名请求)有权限访问kubelet所有的API。这显然是不合理的,所以我们需要像apiserver那样对不同的请求赋予不同的权限。如果要拒绝将匿名请求认证为以上的用户与组,配置kubelet的如下启动参数,那么匿名请求就会认证失败。,且还要提供一定的认证与授权机制,防止任何知道kubelet端口的人都能访问它的API。kubelet与apiserver的API不一样,当访问kubelet的API时,

2024-07-09 14:07:59 1402

原创 JVM 堆内存分配过程

JVM 在进行 GC 时,并非每次都对堆内存(新生代、老年代;方法区)区域一起回收的,大部分时候回收的都是指新生代。针对 HotSpot VM 的实现,它里面的 GC 按照回收区域又分为两大类:部分收集(Partial GC),整堆收集(Full GC)部分收集:不是完整收集整个 Java 堆的垃圾收集。其中又分为:新生代收集(Minor GC/Young GC):只是新生代的垃圾收集老年代收集(Major GC/Old GC):只是老年代的垃圾收集。

2024-07-08 11:23:34 1629

原创 Prometheus 针对k8s的cadvisor监控指标

cAdvisor是Google开源的容器资源监控和性能分析工具,它是专门为容器而生,在Kubernetes中,我们不需要单独去安装。

2024-07-05 14:45:55 1153

原创 JVM 堆内存结构 年轻代 老年代

Java 虚拟机规范规定,Java 堆可以是处于物理上不连续的内存空间中,只要逻辑上是连续的即可,像磁盘空间一样。实现时,既可以是固定大小,也可以是可扩展的,虽然 Java 虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫 Non-Heap(非堆),目的应该是与 Java 堆区分开。不管是 JDK8 之前的永久代,还是 JDK8 及以后的元空间,都可以看作是 Java 虚拟机规范中方法区的实现。对于大多数应用,Java 堆是 Java 虚拟机管理的内存中最大的一块,被所有线程共享。

2024-07-04 20:57:07 1079

原创 Prometheus 监控Kubelet的运行状态

kubelet通过/metrics暴露自身的指标数据。kubelet有两个端口都提供了这个url,一个是安全端口(10250),一个是非安全端口(10255,kubeadm安装的集群该端口是关闭的)。安全端口使用https协议,而且还需要认证与授权,所以我们通过浏览器直接访问会返回401 Unauthorized。有两种方法可以在浏览器访问到这个Url:一个是开启kubelet的非安全端口;。比如,我们一个集群有两个节点我们可以通过以下两种方式,在浏览器中都可以访问到peng02的kubelet指标。

2024-07-04 19:08:49 1714 1

原创 Kuberrnetes ServiceAccounts 及其 Secrets 的重大变化

kubernetes v1.24.0 更新之后进行创建 ServiceAccount 不会自动生成 Secret 需要对其手动创建。

2024-07-03 16:39:44 789

原创 HTTP 协议中的数据压缩 Accept-Encoding Content-Encoding

是提高 Web 站点性能的一种重要手段。对于有些文件来说,高达 70% 的压缩比率可以大大减低对于带宽的需求。随着时间的推移,压缩算法的效率也越来越高,同时也有新的压缩算法被发明出来,应用在客户端与服务器端。在实际应用时,web 开发者不需要亲手实现压缩机制,浏览器及服务器都已经将其实现了,不过他们需要确保在服务器端进行了合理的配置。

2024-06-19 17:54:16 1897

原创 HTTP 常见的报文头部信息

HTTP 首部字段根据实际用途被分为以下 4 种类型。

2024-06-19 16:20:33 1996

原创 Kubernetes 服务部署最佳实践(一)

request 的值并不是指给容器实际分配的资源大小,它仅仅是给调度器看的,调度器会 "观察" 每个节点可以用于分配的资源有多少,也知道每个节点已经被分配了多少资源。被分配资源的大小就是节点上所有 Pod 中定义的容器 request 之和,它可以计算出节点剩余多少资源可以被分配(可分配资源减去已分配的 request 之和)。如果发现节点剩余可分配资源大小比当前要被调度的 Pod 的 reuqest 还小,那么就不会考虑调度到这个节点,反之,才可能调度。所以,如果不配置 request,那么调度器就不能知

2024-06-15 10:38:16 2158

原创 Kubrnetes APIServe 监控

kube-apiserver组件提供了Kubernetes的RESTful API接口,使得外部客户端、集群内的其他组件可以与ACK集群交互。本文介绍kube-apiserver组件的监控指标清单、大盘使用指导以及常见指标异常解析。指标是组件对外透出状态和参数的方式之一。kube-apiserver组件使用的指标清单如下。Histogram该指标用于统计API Server客户端对API Server不同请求的访问时延分布。

2024-06-14 15:22:14 2211

原创 kube-proxy 中使用ipvs与iptables的比较

这种模式同样有效,IPVS 的设计就是用来为大量服务进行负载均衡的,它有一套优化过的 API,使用优化的查找算法,而不是简单的从列表中查找规则。这意味着,与 iptables 模式下的 kube-proxy 相比,IPVS 模式下的 kube-proxy 重定向通信的延迟要短,并且在同步代理规则时具有更好的性能。kube-proxy 使用的是一种 O(n) 算法,其中的 n 随集群规模同步增长,所以这里的集群规模越大,更明确的说就是服务和后端 Pod 的数量越大,查询的时间就会越长。

2024-06-04 15:53:44 2488

原创 prometheus 标签选择器 正则表达式 = 、=~

示例:”metric_name(label_name=~"^label_value.*} 这个示例将匹配以"label_value"开头的所有标签值。示例:”metric_name(label_name=~".*label_value$" 这个示例将匹配以“label_value”结尾的所有标签值。示例:”metric_name(label_name=~".*label_value.}这个示例将匹配包含"label_value"的所有标签值。~来执行正则表达式匹配操作。~用于执行正则表达式匹配。

2024-05-30 10:14:07 2463

原创 典型的 HTTP 会话

从 HTTP/1.1 开始,连接在完成第三阶段后不再关闭,客户端可以再次发起新的请求。这意味着第二步和第三步可以连续进行数次。

2024-05-27 16:06:01 2303

原创 HTTP 重定向 状态码3xx

http状态码301代表永久重定向。当服务器收到客户端的请求时,会将其重定向到另一个url,而不是返回请求的资源。通常用于以下情况:1、当网站的url结构发生变化或网站迁移到新的域名时。2、当网站上存在重复内容时,可以使用301状态码将所有重复的url重定向到一个主要的url。3、当网站的某个页面不再存在时,可以使用301状态码将该页面的url重定向到一个现有的页面等等。(也称为URL 转发是一种为页面、表单或者整个 Web 站点/应用提供多个 URL 地址的技术。

2024-05-24 14:55:09 2647

原创 HTTP 选择 www 或非 www URL

在一个 HTTP 网址中,在开头http://或https://后的第一个子字符串称为域名。该域名被托管到了文档所在的服务器。一个服务器不一定是一个独立的物理机:几个服务可以驻留在同一台物理机器上。此外,一个服务器可以通过多台机器进行处理,协作处理响应或平衡它们之间的请求负载。重点在于,从语义上去理解,一个域名代表一个单独的服务器。

2024-05-20 18:57:44 2343

原创 Kubernetes 故障篇 service端口不通排查流程

官方提供的yaml文件中,ip识别策略(IPDETECTMETHOD)没有配置,即默认为first-found,这会导致一个网络异常的ip作为nodeIP被注册,从而影响node-to-node mesh。我们可以修改成can-reach或者interface的策略,尝试连接某一个Ready的node的IP,以此选择出正确的IP。以前遇到过,开发这边将jar包定义的端口全部修改了,与我yml文件中定义的不一致,当前环境service端口配置正确。思路三:kube-proxy组件是否正常工作?

2024-05-20 17:32:54 2310

原创 k8s的service为什么不能ping通?——所有的service都不能ping通吗

前提:kube-proxy使用iptables模式。

2024-05-20 16:38:58 2411 1

原创 find 几招在 Linux 中高效地查找目录

在 Linux 操作系统中,查找目录是一项常见的任务。无论是系统管理员还是普通用户,都可能需要查找特定的目录以执行各种操作,如导航文件系统、备份数据、删除文件等。Linux 提供了多种命令和工具来帮助我们在文件系统中快速找到目标目录。本文将介绍几种常用的方法和命令,帮助你在 Linux 中高效地查找目录。

2024-05-20 10:06:20 2283

原创 HTTP content-type MIME 类型(IANA 媒体类型)

Content-Type(MediaType),即是Internet Media Type,互联网媒体类型,也叫做MIME类型。在互联网中有成百上千中不同的数据类型,HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签,用于区分数据类型。最初MIME是用于电子邮件系统的,后来HTTP也采用了这一方案。(也通常称为或类型)是一种标准,用来表示文档、文件或一组数据的性质和格式。在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。

2024-05-18 10:40:43 2975

原创 nginx proxy_set_header详解

当 Nginx 位于负载均衡器或 CDN 后面时,后端服务器看到的客户端 IP 可能是负载均衡器或 CDN 节点的 IP,而不是真实用户的 IP。确保你了解每个设置的安全影响,并遵循最佳实践来保护你的应用程序和数据。时,请确保你的设置与后端服务器的期望相匹配,并进行充分的测试以确保一切按预期工作。主要用于添加或修改头信息,但你也可以通过将其设置为空值来删除不需要的头。你可以通过修改或添加特定的头来控制后端服务器或中间缓存的行为。头的内容,并附加上客户端的 IP 地址。变量的值设置不同的头。

2024-05-16 15:02:24 2600

原创 Prometheus 保留或删除标签 labeldrop、labelkeep

(要监控k8s集群,可能监控的资源相当大,一个普罗米修斯压力可能非常大,这样可以将抓取的目标做个拆分的,相当于做个分片的,那么可以让其中一个普罗米修斯抓取一部分,另外一个普罗米修斯抓取另外一部分。的主要场景是将一个服务的整体目标进行分片,用于水平扩展 Prometheus,通过首先根据每个目标的一个或多个标签计算基于哈希的模数来实现的,然后只保留具有特定输出模数值的目标。有的时候我们也有保留或删除一些标签的需求,比如有的目标在时间序列上提供了许多额外的标签,这些标签用途不大,这个时候我们就可以使用。

2024-05-15 13:40:12 2473

原创 Prometheus 服务发现 添加标签

中添加标签可以采用Relabel Config的方式,通过在配置文件中编写relabel_config模块来定义要给哪些目标添加标签,该模块可以实现筛选、替换、修剪、添加等不同的转换操作。已经加载了新的配置文件。

2024-05-14 18:34:31 1971

原创 Prometheus 监控外部Kubernetes 集群

前面我们的文章中都是将 Prometheus 安装在 Kubernetes 集群中来采集数据,但是在实际环境中很多企业是将 Prometheus 单独部署在集群外部的,甚至直接监控多个 Kubernetes 集群,虽然不推荐这样去做,因为 Prometheus 采集的数据量太大,或大量消耗资源,如果我们对集群内部的 Prometheus 自动发现 Kubernetes 的数据比较熟悉的话,那么监控外部集群的原理也是一样的,替换成你 Prometheus 所在的节点能访问到的 APIServer 地址。

2024-05-14 11:35:36 1840

原创 Vue 局部布局 Layout 内部布局 [el-row]、[el-col]

之前的布局容器是一个整体的框架,layout里面的布局其实就是el-row和el-col的组合。

2024-05-13 21:04:39 2331

原创 Jenkins 备份恢复插件 ThinBackup

在部署完 Jenkins 后首先要准备的就是数据备份问题,尤其是在生产环境下的 Jenkins,如果数据丢失很可能导致项目上线和开发时间受到影响,所以备份数据很重要。还好,Jnekins 中存在数据备份插件 ThinBackup,方便我们通过界面化方式对数据进行备份与恢复。

2024-05-11 10:52:48 2502 1

原创 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 1949

原创 Docker 释放空间 docker system prune -a

docker system prune -a 是一个Docker命令,用于清理Docker系统中未使用的镜像、容器、网络和数据卷等资源。这个命令会删除所有未被使用的资源,包括未被使用的...

2024-05-08 14:41:54 1169

原创 linux df -h 命令卡住 解决方法

1、首先就是使用strace去追踪到底在哪里卡住了。用 df -h 查看磁盘情况,无奈卡住无法显示。2、如果没有strace命令则进行安装即可。3、显示出卡住的地方。

2024-05-08 13:56:41 1088

原创 Redis exporter redis监控

版本从有了很大的改变:为了使redis_exporter更紧密地遵循“编写导出器的最佳实践”,但如果已经按照Prometheus项目的推荐使用了导出器,并且仅scrape了一个实例(例如使用--redis.addr和--redis.password 标志),那么没有任何改变。

2024-05-08 10:23:44 1863

空空如也

空空如也

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

TA关注的人

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