自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 聊聊可观测性

可观测性平台是一个很大很复杂的平台,大部门公司都是用一些开源手段来堆叠,虽然能解决一些问题,但是它们各自是相互独立的,没办法很友好的进行关联。这也导致在排查问题的时候需要各个平台来回切换,而且每个平台都需要一定的学习成本,这也导致许多公司安装部署了,但是实际很少去用,没有发挥其要实现的效果。

2023-03-14 10:31:35 154

原创 Spring 框架介绍和使用

Spring 作为一个基础的框架,是在 Java EE 开发历史中,是成千上万公司选择。单独使用 Spring 的非常少了,很多都是用 Spring-Boot/Spring-Cloud 来开发,但是 Spring 基础依然是我们使用的基石。我们将一起来聊一聊 Spring 的基本使用。首先我们一起来了解一下 Spring 框架整体架构图如下:数据访问/集成,包括 JDBC 、ORM、OXM、JMS 和 Transaction 模块;WEB 模块,包括 WebSocket、Servlet、Web、Porlet

2022-12-05 10:15:04 1010

原创 [Ansible专栏]Ansible Playbook介绍和使用

很多时候,某些场景下playbook的结果依赖于变量、fact或者是前一个任务的执行结果,或者有的时候,我们会基于上一个task执行返回的结果而决定如何执行后续的task。这个时候就需要用到条件判断。条件语句在Ansible中的使用场景:在目标主机上定义了一个硬限制,比如:目标主机的发行版本必须是RedHat,才能执行该task;捕获一个命令的输出,根据命令输出结果的不同以触发不同的task;根据不同目标主机的facts,以定义不同的task;

2022-11-29 17:41:32 1033

原创 [Ansible专栏]Ansible条件判断的介绍和使用

很多时候,某些场景下playbook的结果依赖于变量、fact或者是前一个任务的执行结果,或者有的时候,我们会基于上一个task执行返回的结果而决定如何执行后续的task。这个时候就需要用到条件判断。条件语句在Ansible中的使用场景:在目标主机上定义了一个硬限制,比如:目标主机的发行版本必须是RedHat,才能执行该task;捕获一个命令的输出,根据命令输出结果的不同以触发不同的task;根据不同目标主机的facts,以定义不同的task;

2022-11-29 17:25:22 1602

原创 [Ansible专栏]Ansible常用模块介绍和使用

前面我们介绍了,ansible能作为自动化配置管理,其实是由ansible的多种多样的模块来实现的。截止目前,ansible的模块已经高达3000+之多。但是个人在日常工作中,比较常见的大约20多个。下面我就大概介绍一些常见常用的模块。

2022-11-29 16:54:52 521

原创 [Ansible专栏]Ansible安装和基本使用

defaults]#inventory = /etc/ansible/hosts # 主机列表配置文件#library =/usr/share/my_modules/ # 库文件存放目录#remote_tmp = $HOME/.ansible/tmp # 临时py命令文件存放在远程主机目录#local_tmp = $HOME/.ansible/tmp # 本机的临时命令执行目录#forks = 5 # 默认并发数#sudo_user = root # 默认sudo用户。

2022-11-29 16:22:57 1311

原创 【K8S专栏】Kubernetes有状态应用管理

实例之间的不等关系以及实例对外数据有依赖关系的应用,就被称为"有状态应用"。所谓实例之间的不等关系即对分布式应用来说,各实例,各应用之间往往有比较大的依赖关系,比如某个应用必须先于其他应用启动,否则其他应用将不能启动等。对外数据有依赖关系的应用,最显著的就是数据库应用,对于数据库应用,我们是需要持久化保存其数据的,如果是无状态应用,在数据库重启数据和应用就失去了联系,这显然是违背我们的初衷,不能投入生产的。

2022-11-23 22:56:38 403

原创 Ceph修改mon ip地址

微信公众号:运维开发故事,作者:wanger。

2022-10-14 19:54:55 774

原创 如何开发ChatOps

微信公众号:运维开发故事,作者:乔克。

2022-10-10 15:20:48 807

原创 【K8S专栏】Kubernetes应用配置管理

综上,我们可以通过Secret保管其他系统的敏感信息(比如数据库的用户名和密码),并以Mount的方式将Secret挂载到Container中,然后通过访问目录中文件的方式获取该敏感信息。当Pod被API Server创建时,API Server不会校验该Pod引用的Secret是否存在。一旦这个Pod被调度,则kubelet将试着获取Secret的值。

2022-09-16 10:43:00 925

原创 【K8S专栏】Kubernetes应用质量管理

上面只是对Kubernetes中应用做了简单的可用性保障,在生产中,应用不仅仅是它自己,还关联上游、下游的应用,所以全链路的应用可用性保障才能让应用更稳定。我是 乔克,《运维开发故事》公众号团队中的一员,一线运维农民工,云原生实践者,这里不仅有硬核的技术干货,还有我们对技术的思考和感悟,欢迎关注我们的公众号,期待和你一起成长!...

2022-08-30 09:55:38 680

原创 ceph性能测试

微信公众号:运维开发故事,作者:wanger在将Ceph集群用于生产工作之前,应该首先对它进行基准测试。基准测试提供关于群集在读、写、延迟和其他工作负载期间执行情况的大致结果。在进行真正的基准测试之前,最好通过测量连接到群集节点的硬件(如磁盘和网络)的性能,为预期的最大性能建立一个基准。磁盘性能基线测试将分两步完成。首先,我们将测量单个磁盘的性能,在此之后,将同时测量连接到一个Ceph OSD节点的所有磁盘性能。

2022-08-25 14:57:55 1366

原创 【K8S专栏】Kubernetes工作负载管理

从全文可知,Deployment实际是一个两层控制器:(1)、它通过ReplicaSet的个数来描述应用版本个数;(2)、它通过ReplicaSet的属性来保证Pod的副本数;而且Deployment的灵活控制,很方便水平扩展/收缩还有滚动更新以及回滚操作。上面介绍的是日常工作中常用的控制器,其中Deployment和DaemonSet的使用频率最高,熟练掌握这些控制器,并且学会在什么时候选择什么样的控制器,合理使用使工作效率最高。

2022-08-25 14:48:39 1134

原创 大数据必知必会之Kafka

Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用,主要是由 Scala 和 Java 编写。它是一种高吞吐量的分布式发布订阅消息系统,可以处理事件流数据。通过 Kafka 你可以非常方便的把想要发布的消息,分发给任何想要订阅该消息的接收者。

2022-08-25 14:26:07 1640

原创 Dubbo 高性能 RPC 框架实践

微信公众号:运维开发故事,作者:老郑Dubbo 介绍。

2022-08-16 14:08:18 121

原创 避免告警疲劳:每个 K8s 工程团队的 8 个技巧

简单来说,当你在一天内收到大量与工作相关的告警时,就会发生告警疲劳,即使它们是不可操作的。不合理的大量告警会降低你的工作效率,因为你会从工作中抽出太多时间来不时确认告警。如果你在工作时间之外收到此类告警,它们将开始扰乱你的工作与生活平衡。为了建立一个高效和快乐的团队,关键是要减少不必要的告警,并专注于提供价值和可操作的内容。解决任何问题的第一步是清楚地定义它。在我们的例子中,告警的原因是指标的阈值;因此,为它们确定正确的指标和适当的阈值至关重要。...

2022-08-15 13:56:22 260

原创 Kubernetes 可观测性:利用 4 个开源工具

在本文中,我们介绍了四个工具集,它们可以增强和改进对在 Kubernetes 上运行工作负载的工程师的监控。Prometheus 是许多组织的首选时间序列数据库,当与 Thanos 一起使用时,它是一个长期的解决方案。Jaeger 提供了修复你在基础架构中检测到的问题所需的额外上下文。OpenTelemetry 已经标准化了指标、日志和跟踪的格式和收集,让团队高枕无忧并保持动态。这些工具共同提供了有效排除故障所需的指标、日志和跟踪,并确保你的最终用户拥有出色的体验。...

2022-08-15 13:51:47 467

原创 【K8S专栏】什么是Kubernetes

在《Docker容器技术》章节就有简单介绍Kuberntes,它是谷歌开源的容器容器集群管理系统,是谷歌内部容器管理系统Borg的开源版本。Borg系统是谷歌内部使用很多的容器管理系统,在早期是采用Chroot Jail实现安全隔离,后期采用Namespace,资源隔离是采用CGroup实现。为什么谷歌要推出Kubernetes开源版本呢?我个人的理解是:使用开源社区的力量来解决谷歌未解决的问题在云原生领域分一杯羹推动云原生的发展,毕竟谷歌在容器领域已经玩了许多年了便携性。...

2022-08-15 13:46:37 237

原创 【K8S专栏】Docker容器技术剖析

Docker公司虽然没有在最后的决战中胜出,但是Docker产品不失为一个好产品,它在整个云原生领域有着举足轻重的作用。(1)它做到了镜像一次编译,随时使用(2)可以一键启动依赖服务,搭建环境的成本降低(3)可以保持所有环境高度一致(4)它可以达到秒级启动但是Docker也有其与生俱来的缺点,比如由于主机上的容器都是共用的底层操作系统,其隔离性不如真正的硬件隔离,而且随着并发的不断增大,也会因一些网络连接和数据交互等问题产生性能瓶颈。...

2022-08-02 23:40:23 2524

原创 【K8S专栏】什么是云原生?

微信公众号:运维开发故事,作者:乔克大家好,我是乔克。什么是云原生?我相信大部分人都听过云原生,但是要你说出一个所以然,却不知道怎么开口,我也是一样。我不知道云原生到底是什么,从字面来看:云原生就是为云而生。云是什么?我理解云就是云计算,那云原生就是在云计算的基础之上设计实现,充分利用云的弹性、分布式等特性,让应用能够实现弹性伸缩、动态调度,也能更高的提升资源利用率。...

2022-08-02 18:13:08 464

原创 我又又又把Kubernetes整理了一次

大家好,我是乔克。人不是在折腾,就是在折腾的路上。最近在整理一些笔记,发现之前记录的有些杂乱,所以又对其进行重新梳理,下面是梳理Kubernetes的时候整理的大纲。主要按使用功能进行划分,结构比较清晰,在以后翻阅的时候也能更快。整个专栏是以版本进行梳理,但是基本的理论知识并没有做很大的调整,而且该专栏大部分还是借鉴以前的Kubernetes笔记,只有少部分调整,比如API变更,YAML写法变更等。Kubernetes从2014年6月份发布,至今已经8年,在这8年的时间里,可谓是发展迅速,而且大部分运维人员

2022-08-02 14:28:49 265

原创 如何使用 Docker 部署 GitLab

微信公众号运维开发故事,作者夏老师你否曾经想托管自己的GitLab存储库以确保代码永远不会落入坏人之手?尽管在第三方云主机上托管你的存储库有很多优势(例如可用性和可靠性),但要完全控制你的存储库,这样任何人都可以在未经你批准的情况下访问它。在Docker的帮助下,您可以做到这一点。我将向你展示它是如何完成的。它并不过分复杂,但需要许多步骤。所以,事不宜迟,让我们开始工作吧。要完成此任务,需要一个正在运行的UbuntuServer实例和一个具有sudo权限的用户。...

2022-08-02 14:00:10 2805

原创 记一次内部分享——瞎扯淡

大家好,我是乔克。今天给大家分享的主题是《闲聊Docker》,大家的工作都比较忙,但是也要劳逸结合,所以“闲”是忙里偷闲,而“聊”是只动嘴不动手,整个分享过程中不会去动手实践,也不会去教大家如何build镜像,如何run容器,而只做纯粹的闲聊,我是一个“纯粹”的人。整个PPT比较简洁,基本都是一些图片或者流程图,我也是跟着这些图片来进行分享,想到哪里就说到哪里,有时候会啰里吧嗦,有时候可能会牛头不对马嘴,在分享的过程中,如果有纰漏的地方,大家可以记下来,分享完后咱再来讨论。现在进入正题,整...

2022-08-02 13:44:03 290

原创 服务器中毒了——菜是原罪

我是乔克,《运维开发故事》公众号团队中的一员,一线运维农民工,云原生实践者,这里不仅有硬核的技术干货,还有我们对技术的思考和感悟,欢迎关注我们的公众号,期待和你一起成长!所以就打开控制台,使用natstat-ano,不看不知道,一看吓一跳,发现非常多的链接都是和47.95.x.x进行的。试着删除该文件,当然是失败了,不过,也知晓了该进程是通过.net服务托管着的,那我就把.net停掉呗,反正没用这个服务。但是出了问题,不得不管呀,歌也没唱了,跑到车库,打开电脑,开始一顿瞎操作。...

2022-07-27 16:00:30 12422 14

原创 业务前端界面报错504排查思路和解决办法

查看Nginx源码当客户端主动关闭链接时,http状态代码中没有可以表示该状态的,但在nginx又需要记录,所以自定义了一个499这个状态来表示。***/所以显然,客户端端主动关闭请求或者客户端网络断掉时,于是nginx就记录了499状态,并且断开了和后面服务端的连接(这样可能导致服务端返回数据时,因为连接断开而报错)img解决499问题1、查看服务端为什么响应这么慢,是否需要优化,或者调大客户端方的连接超时时间,不那么快断开2、proxy_ignore_client_abort参数调整。...

2022-07-27 11:22:20 9709 2

原创 Redisson 高性能 Redis 分布式锁源码分析

Redisson 实现分布式锁的机制如下:原理描述先线程 1 获取锁,如果获取锁成功,那么会开启一个后台线程,每次间隔 10 秒进行续期。并发情况,线程 2 会进行加锁,如果无法获取锁,那么就会进行自旋等待,等待到达一定次数过后,就会进行线程阻塞,并且订阅解锁消息。当线程 1 释放锁之后,会触发 redis 的解锁消息,消息的观察者会观察到然后去唤醒解锁的逻辑,线程 2 继续竞争锁。对于锁的重入,Redisson 是通过 hash 为数据类型的,会存储当前线程的 tid (本质是生成的 uuid 唯一id)

2022-07-02 10:16:35 1085 1

原创 Python包管理工具之pipenv

传统的成熟方案中,我们为了避免包版本的管理混乱,通常我们是依赖于当前的Python版本创建一个虚拟环境,并在虚拟环境中使用pip进行包管理。现在有一个好用的工具叫pipenv来帮助我们更方便的管理包。pipenv是一个Python的包管理工具。它是requests作者Kenneth Reitz的作品,提供Python的各个版本间的管理,各种包管理。当你开始熟悉并且使用它的时候,你就知道它有点类似于前端的npm和yarn的味道。它能自动为项目创建和管理虚拟环境。当你使用pipenv的时候,他会在项目根目录下创

2022-07-01 17:37:56 1808 1

原创 开发一个禁止删除namespace的控制器

大家好,我是乔克。image.png昨天收到一个朋友的信息,说不小心把集群的业务namespace干掉了,导致整个业务都停滞了,问我有没有禁止删除namespace的方案。在我的记忆里,Kubernetes的准入里并没有这个控制器,所以我就给他说需要自己开发一个准入控制器来实现自己的目标。我不能只脱裤子,不放屁。所以这里也整理了一下如何自定义Kubernetes的准入控制器。准入控制器(Admission Controller)位于 API Server 中,在对象被持久化之前,准入控制器拦截对 API S

2022-07-01 17:16:28 374

原创 能解决 80% 故障的排查思路

在讲解事件、故障处理思路前,先讲一个故障场景(以呼叫中心系统作为一例子):业务人员反映呼叫中心系统运行缓慢,部分电话在自助语言环节系统处理超时,话务转人工座席,人工座席出现爆线情况。运维人员开始忙活了,查资源使用情况、查服务是否正常、查日志是否报错、查交易量还有没有……时间不知不觉地在敲键盘、敲键盘、敲键盘中过去,但是原因还未定位。经理过来了解情况:“系统恢复了吗?”、“故障影响是什么?”、“交易中断了吗?”…… 运维人员赶紧敲键盘,写sql,看交易量;敲键盘,写命令,看系统资源、情况…… 最终,定位到问题

2022-07-01 17:03:16 444

原创 详解Kubernetes网络模型

Kubernetes 是为运行分布式集群而建立的,分布式系统的本质使得网络成为 Kubernetes 的核心和必要组成部分,了解 Kubernetes 网络模型可以使你能够正确运行、监控和排查应用程序故障。网络所涉及的内容很多,拥有许多成熟的技术。对于不熟悉的人来说可能会非常痛苦,因为大多数人对网络都有先入为主的观念,并且有很多新旧概念需要理解并组合成一个连贯的整体。所说的网络可能包括网络命名空间、虚拟接口、IP 转发和网络地址转换等技术。本指南旨在通过讨论每种 Kubernetes 相关技术以及如何使用这

2022-07-01 16:50:24 639

原创 使用Zadig从0到1搭建持续交付平台

大家好,我是乔克,一个爱折腾的YAML工程师。最近有朋友叫我出一个Zadig的使用教程,说实话,我并不知道该怎么来写,因为所有的东西在官网都有,我本人也是通过学习官网来进行落地实践的。但是我这人太热情,压不住朋友的再三请求,所以就写一篇我在实际中用到的东西。本篇文章大纲如下:相信有不少朋友已经听过Zadig,但是有更多的朋友还没有听过,或者说听过但是没仔细去了解过,这里我还是简单介绍一下什么是Zadig。Zadig是一个持续交付的平台,它集CI、CD、自动化测试于一身,致力于构建一个云原生开源的软件交付平台

2022-07-01 16:29:15 3270 1

原创 使用luks2对ceph rbd进行加密

多个行业(例如金融行业)越来越需要在主机上使用租户/用户提供的加密密钥以卷粒度加密数据。这是由国家法规和对安全性的日益重视所推动的。迄今为止,Ceph RBD 不提供任何此类解决方案,现有的替代方案是在 libRBD 之前添加一个加密层。此类解决方案的示例是使用 QEMU LUKS 加密或依赖 DM-Crypt。但是,在与 RBD 层中实现的存储功能接口时,使用 RBD 之上的加密层有局限性。当我们进行镜像克隆时,只有在父子节点使用相同的加密密钥加密时才会起作用。通过将加密向下移动到 libRBD,就可以灵

2022-06-06 16:08:49 665 1

原创 Redis 高可用集群原理和实践

Redis 集群是 Redis 提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移能力。Redis 集群最少需要 3 个 master 节点,这里我们搭建 3 个master 节点,3 个 slave 及节点(由于我机器配置受限,直接通过端口的方式模拟集群搭建,本处只是实验方便,生产环境不可采取此方案)。环境搭建步骤如下:服务启动,注意我们需要启动所有的节点,命令如下:初始化集群,通过 命令初始化集群,命令如下(如果是生产环境,需要节点间 IP 以及端

2022-06-01 15:32:16 513

原创 Redis 高可用之 Sentinel

Sentinel 结构在 redis3.0 以前的版本要实现集群一般是借助哨兵 sentinel 工具来监控 master 节点的状态,如果 master 节点异常,则会做主从切换,将某一台 slave 作为 master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。Sentinel 初始化Sentinel

2022-05-29 13:01:09 1816

原创 kvm qcow2和ceph rbd虚拟机磁盘加密

kvm qcow2磁盘加密关于luks加密LUKS 实现了一种独立于平台的标准磁盘格式,用于各种工具。LUKS 用于加密块设备。加密设备的内容是任意的,因此可以加密任何文件系统,包括交换分区。加密卷的开头有一个未加密的标头,它允许存储多达 8 个 (LUKS1) 或 32 个 (LUKS2)加密密钥以及密码类型和密钥大小等加密参数。此标头的存在是 LUKS 和普通 dm-crypt 之间的主要区别,因为标头允许使用多个不同的密码短语,并且能够轻松更改和删除它们。但是,如果标头丢失或损坏,设备将不再可解密。L

2022-05-27 19:05:12 907

原创 利用分层机制优化Docker Image

当前浏览器不支持播放音乐或语音,请在微信或其他浏览器中播放 爱你 音乐: 王心凌 - My! Cyndi! 1.Docker Image 分层存储为了最大化重用 Image,加快运行速度,减少内存和磁盘的占用,Docker container 运行时所构造的运行环境,实际上是由具有依赖关系的多个 La...

2022-05-27 18:59:28 391

原创 如何随意切换Python版本

大家好,我是小姜。前言不知道大家在日常开发工作中是否遇到过这样一个情况:项目A用的是Python 2.7版本开发的(可能由于历史遗留问题没有升级更新版本)项目B是用Python 3.10.4版本开发的,假设使用了requests==2.25.1版本项目C是用Python 3.10.4版本开发的,假设使用了requests==2.27.1版本首先第一个问题:Python版本的问题,Python 2.x 和Python 3.x 版本区别还是比较大的,版本多了不易管理。其次第二个问题:也许requests的版本在

2022-05-25 23:35:43 3825

原创 开发和运维对K8S中的应用都做了什么?

在应用的整个生命周期里,开发和运维都和它密不可分。一个塑造它,一个保养它。如果应用需要部署到K8S中,开发和运维在其中都做了什么呢?开发侧从开发侧来说,我们的应用应该具备以下能力:具有健康检测接口具有优雅退出能力具有metrics接口能够接入链路追踪系统日志输出标准统一定义健康检测接口 健康检测接口用于检测应用的健康状态,在K8S中,使用Readiness和Liveness分别来探测应用是否就绪和是否存活,如果未就绪或者未存活,K8S会采取相应的措施来确保应用可用。如果我们应用未定义好相应的健康检测接口,K

2022-05-25 13:55:49 751

原创 Kubernetes开源LoadBalancer—Metallb(BGP)

Kubernetes开源LoadBalancer—MetalLB(BGP)1.背景最近一年为了迎接亚运会,单位开发了很多大屏展示界面,这些大屏展示页面需要提供给外部门访问,起初使用Ingress方式,但是需要外部门配置DNS,所以我们准备使用NodePort,但是领导想用LoadBalancer,众所周知,LoadBalancer大部分情况下只能在提供了外部负载均衡器的云提供商上使用,而我们是裸机集群,没办法,我们只能找开源的LoadBalancer解决方案。在寻找资料的时候我们找到了两种解决方案,一种是K

2022-05-25 13:44:23 703

原创 Tekton系列之实践篇-如何用Jenkins来管理Tekton

在《Tekton系列之实践篇-由Jenkins改成Tekton》中,我们可以将Jenkinsfile改成Tekton Pipeline,但是Tekton有一个很大的问题是不能很好的划分权限,特别是在Dashboard上根本就做权限控制,那如果在实际中使用的话权限不明会带来很多问题,比如谁删了什么,谁执行了什么都不知道。如果你公司有自动化运维平台,可以接入Tekton,如果没有就需要在Github上找是否有相关的Dashboard或者平台,可惜我什么都没有.....目前我使用的Kubesphere来管理K8s

2022-05-09 16:32:31 1116

空空如也

空空如也

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

TA关注的人

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