自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

梵修

Keep going on

  • 博客(71)
  • 收藏
  • 关注

原创 k8s使用ceph存储

另外keyring文件也可以保存在secret中,在pod中通过secret来引用keyring文件。k8s集群中的pod使用rbd时可以直接通过pod的volume进行挂载,也可以以pv形式挂载使用。ceph添加授权,需要创建两个用户,一个挂载rbd时使用,另一个挂载cephfs时使用。创建pod到集群中,等待pod就绪后可以进入pod验证。将pod创建到集群中,等待pod就绪后进入pod验证。将pod创建到集群中,等待pod就绪后进入pod验证。将pod创建到集群中,等待pod就绪后进入pod验证。

2023-06-22 21:00:35 1909 2

原创 ceph集群监控

Ceph Dashboard是一个内置的ceph管理和监控的web应用程序,通过ceph dashboard可以监控和管理ceph集群中的资源。ceph dashboard是作为ceph-mgr中的一个模块实现的。ceph mgr内部包含了prometheus模块,可以通过每个节点的9283端口向prometheus提供监控数据。ceph dashboard启用ssl时可以通过ceph命令快速签发证书,也可以使用自签证书。访问mgr节点,验证metrics数据。在mgr节点验证端口监听。

2023-06-03 20:31:49 907

原创 Ceph crush运行图

Monitor map:监视器运行图osd map:osd运行图PG map:PG运行图Crush map:crush运行图Mds map:mds运行图crush map是ceph集群物理拓扑的抽象,CRUSH算法通过crush map中集群拓扑结构、副本策略以及故障域等信息,来选择存放数据的osd。以我当前集群为例,crush map描述的集群物理拓扑结构层级如下图,包括3个层级,分别是root、host和osd:导出当前集群的crush map。

2023-05-21 16:31:32 1004 1

原创 Ceph对象存储使用

对象存储是无层次结构的数据存储方法,一般用于云计算环境。数据作为单独的对象进行存储数据并不存放在目录层次结构中,而是存在于平面地址结构的同一级别空间中应用通过唯一的地址来访问单个数据对象每个对象可以包含有助于数据检索的元数据对象是对象存储系统中数据存储的基本单位,每个对象是数据和数据属性集的综合体。数据属性可以根据应用需求而设置,包括数据分布、服务质量等。每个对象自我维护其属性,减轻了存储系统的管理任务对象的大小可以不同,甚至可以包括整个数据结构,比如:文件、数据库表项等。

2023-05-07 17:18:38 1469

原创 CephFs使用

CephFS即ceph filesystem,可以实现文件系统共享功能(POSIX标准),客户端通过ceph协议挂载并使用CephFS存储数据。CephFs需要用到MDS(metadata-service)服务,其守护进程为ceph-mds,ceph-mds进程管理CephFS上存储的文件相关的元数据,并协调对ceph集群的访问。在linux系统使用ls等操作查看某个目录下的文件时,会由保存在磁盘上的分区表记录文件的名称、创建日期、大小、inode及存储位置等元数据信息。

2023-04-08 15:44:03 1363

原创 rbd块存储使用

rbd(Rados Block Device) ,是构建在rados集群之上的为客户端提供块设备的存储中间层,rbd可以为kvm、vmware等虚拟化技术和云平台(例如openstack、k8s)提供高性能和无限可扩展的存储后端。rbd块设备类似磁盘可以被挂载,rbd基于存储集群中多个osd进行条带化,支持存储空间简配和动态扩容等特性,并能够借助于rados存储集群实现快照、多副本和一致性。

2023-03-19 18:26:04 1657

原创 ceph集群维护常用操作

在某一个osd故障后,需要将故障的osd更换为可用的osd,并将PG所对应的主osd上的数据同步到新的osd上,例如刚开始pg对应osd1、osd2和osd3,当osd3故障后需要用osd4替换osd3,那么osd1、osd2、osd3就是上行集,替换后osd1、osd2、osd4就是活动集,osd替换完成后活动集最终要替换上行集,即活动集和上行集要保持一致。就绪状态,Active表示主osd和备osd均处于正常状态,此时PG可以处理来自客户端的读写请求,正常的PG默认就是Active+Clean状态。

2023-03-14 21:16:35 1597 8

原创 cephx认证和授权

认证过程中,mon节点会返回用于身份认证的数据结构,其中包括获取ceph服务时用到的session-key,session-key通过客户端密钥进行加密传输,而密钥是客户端提前配置好的,保存在客户端的keyring文件中。所有对于ceph的访问请求都要经过cephx认证,ceph默认已经开启了cephx认证,也可以在mon节点关闭cephx认证,但是关闭认证后任何访问都将被允许,因此无法保证数据的安全性。ceph客户端提交的数据最终都存储在pool中,因此ceph用户需要拥有存储池的访问权限才能读写数据。

2023-03-12 21:04:17 545

原创 Ceph介绍

常用的存储可以分为DAS、NAS和SAN三类DAS:直接连接存储,是指通过SCSI接口或FC接口直接连接到一台计算机上,常见的就是服务器的硬盘NAS:网络附加存储,是指将存储设备通过标准的网络拓扑结构(比如以太网),连接到计算机上使用。例如NFS和Samba文件共享系统SAN:存储区域网络,目前SAN存储有两种,一是基于光纤通道的FC SAN,二是基于以太网的IP SAN,也就是iscsi常见的存储类型有文件存储、块存储和对象存储。

2023-03-07 17:36:01 1022

原创 ceph-ansible部署Ceph Pacific版本集群

安装Ceph Pacific需要使用ceph-asible stable-6.0分支,同时ceph-asible stable-6.0对ansible的版本要求是2.10往上。总共9个节点,3个mon节点,6个osd节点,每个osd节点3块50G的osd磁盘。等待playbook执行完成后,查看集群状态,可以看到新的mon节点已经添加进去。修改hosts文件,将新的mon节点,加入到对应的组中。修改hosts文件,将新的mon节点,加入到对应的组中。再mon-01节点执行ceph -s查看集群状态。

2023-03-05 16:33:04 1181

原创 SkyWalking使用案例-2

Skywalking的指标是通过查询后端存储中的数据生成的,而不是通过agent收集的。其中skywalking-agent目录是SkyWalking Java Agent解压后的目录,需要修改其中的配置文件指定服务名称和SkyWalking Server的地址。其中skywalking-agent目录是SkyWalking Java Agent解压后的目录,需要修改其中的配置文件指定服务名称和SkyWalking Server的地址。在SkyWalking中查看对应Service的数据。

2023-03-02 19:54:12 764 1

原创 SkyWalking使用案例-1

由于Skywalking ngix-lua-agent需要lua环境,所以需要nginx编译的时候需要加载lua相关模块。下载ngx_devel_kit和lua-nginx-module模块,编译nginx时添加。skywalking java-agent的下载和配置可以参考上面的Halo项目配置。之后就可以在SkyWalking的UI界面上看到关于Halo项目的数据。修改nginx配置文件,配置加载nginx-lua-agent。配置lua-resty-lrucache。

2023-03-01 11:52:36 1056

原创 SkyWalking简介和安装

Skywalking由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目,于2019年从Apache基金会孵化器毕业成为顶级项目,目前SkyWalking支持Java、.net、python、go等语言的探针,数据存储支持mysql、elasticsearch等。Skywalking根Pinpoint一样采用字节码注入的方式实现代码的无侵入,虽然探针采集数据粒度粗,但性能表现优秀,且对云原生支持,目前社区活跃,增长势头强劲。

2023-02-28 17:24:08 1465

原创 Prometheus本地存储和VictoriaMetrics远端存储

Prometheus的本地存储被称为Prometheus TSDB,目前是V3版本,根据官方介绍其有着非常高效的时间序列数据存储方法,每个采样数据仅占3.5byte左右空间,上百万条时间序列,30s间隔,保存60天,仅占200多G空间默认情况下,Prometheus将采集到的数据保存在本地的TSDB数据库中,默认目录为Prometheus安装目录下的data目录。

2023-02-26 12:06:12 2773

原创 Prometheus联邦

联邦允许Prometheus实例从另一个Prometheus实例上抓取数据。联邦有不同的使用场景。通常,它用于实现可伸缩的Prometheus监控,或将一个服务相关指标从一个Prometheus拉取到另一个中为了扩展单个Prometheus的采集能力和存储能力,Prometheus引入了联邦概念。多个Prometheus节点组成两级联邦结构,上面一层是联邦节点,负责定时从下面的节点获取数据并汇总,下面的Promethes可以负责不同区域/不同服务的数据采集。

2023-02-24 15:42:29 370

原创 Prometheus之Alertmanager告警

global(全局配置):用来定义一些全局的公共参数,比如Smtp邮件服务器配置、企业微信配置等template(告警模板):用于定义告警通知时的模板,比如邮件模板、微信模板等router(告警路由规则):用于定义告警的分发策略receivers(接收者):用于定义告警接收人,可以是邮箱、微信等。一般配和告警路由规则来使用,实现不同的告警发给不同的接收人inhibit_rules(告警抑制规则):用于定义告警抑制规则,避免垃圾告警产生。

2023-02-23 17:47:22 3777

原创 Prometheus之pushgateway

Pushgateway是Prometheus监控系统中的一个重要组件,它采用被动push的方式获取数据,由应用主动将数据推送到pushgateway,然后Prometheus再从Pushgateway抓取数据。Prometheus和target由于某些原因网络不能互通,需要经由Pushgateway代理某些作业生命周期较短,没有足够的时间等待Prometheus抓取数据。所以可以先把数据推送到Pushgateway,再让Prometheus抓取。

2023-02-20 20:10:21 4087

原创 Prometheus监控案例之blackbox-exporter

blackbox-exporter是Prometheus官方提供的一个黑盒监控解决方案,可以通过HTTP、HTTPS、DNS、ICMP、TCP和gRPC方式对目标实例进行检测。HTTP/HTTPS:URL/API可用性检测ICMP:主机存活检测TCP:端口存活检测DNS:域名解析黑盒监控,关注的是实时状态,一般都是正在发生的事件,比如网站访问不了、磁盘无法写入数据等。即黑盒监控的重点是能对正在发生的故障进行告警。

2023-02-19 17:40:04 9135 2

原创 Prometheus监控案例-tomcat、mysql、redis、haproxy、nginx

ingress-nginx-controller程序自身可以提供指标数据,默认通过端口10254/metrics提供指标数据,在部署ingress-nginx-controller时候需要在容器上定义10254端口,并在ingress-nginx-controller对应的Service资源上也定义10254端口。基于tomcat官方镜像,重新制作一个镜像,将tomcat-exporter和tomcat整合到一起。此nginx-exporter依赖一个nginx模块nginx-module-vts(

2023-02-19 14:45:16 1745 1

原创 Prometheus监控案例-kube-state-metrics

kube-stste-metrics是一个简单的组件,通过监听API Server生成有关资源对象的状态指标(例如Deployment、Pod、Node等)。pod的状态,running或者terminating等Pod重启了多少次Deployment调度了多少副本?现在可用的有多少?目前有多少job在运行 等等kuber-state-metrics并不存储这些指标数据,所以需要使用Prometheus抓取然后存储。

2023-02-17 11:45:43 1338

原创 Prometheus服务发现

Prometheus默认是采用pull的方式拉取监控数据的,每一个被抓取的目标都要暴露一个HTTP接口,prometheus通过这个接口来获取相应的指标数据,这种方式需要由prometheus-server决定采集的目标服务器有哪些,通过配置在scrape_configs中的各种job来实现,无法动态感知新服务,如果后面新增了节点或组件,就需要手动修改prometheus配置,然后重启服务或重新加载配置,所以出现了动态服务发现。

2023-02-10 14:16:32 1827

原创 Prometheus收集node-exporter和cadvisor指标数据

cadvisor可以对节点上的容器进行实时监控和数据采集,包括容器的cpu、内存使用情况、网络吞吐量和文件系统使用量等。grafana官网已经提供了许多模板,我们可以下载自己需要的模板,然后导入本地grafana。在官网寻找合适的模板,这里选择的模板是下面这个,ID是15798。以node-exporter模板为例,首先在官网搜索。下载此模板对应的json文件,然后导入grafana。下载模板对应的json文件,然后导入Grafana。然后选择需要的模板,点击查看详情。

2023-02-08 15:31:51 961

原创 Prometheus简介和部署

prometheus是基于Go语言开发的一套监控、告警和时序数据库的组合,CNCF基金会的第二个毕业项目,在容器和微服务领域有着广泛的应用。一般情况下,是监控Kubernetes的标配。强大的多维度数据模型,可以通过标签来实现数据多维度查询使用时序数据库保存数据,目前自带的时序数据库是TSDB,使用本地存储,可以完成每秒千万级的数据存储;在需要保存大量历史数据的情况下,也可以对接第三方时序数据库支持第三方组件来实现绚丽的图形界面,例如Grafana组件模块化。

2023-02-08 15:31:28 1070

原创 k8s之Ingress

在k8s中将一个服务暴露出去通常会使用NodePort或LoadBalancer类型的Service,但随着服务数量的增多,使用NodePort会存在一些问题,可用作NodePort的端口是一个有限的范围,不容易记忆,不好管理。另外, 如果在公有云使用LoadBalancer类型的Service上会产生额外的成本。

2022-12-18 20:32:50 1124

原创 k8s网络策略

网络策略是控制Pod之间如何进行通信的规则,它使用标签来筛选Pod,并在该组Pod之上定义规则来定义管控其流量,从而为k8s提供更精细的流量控制和租户隔离机制。管理员和用户可以通过NetworkPolicy资源按需定义网络访问控制策略网络策略的具体实现要依靠CNI网络插件完成,例如Calico、Weave和Antrea等。因此,仅在使用支持网络策略的网络插件时才能让自定义的网络策略生效。不同的网络插件实现网络策略的方式也是不一样的。

2022-12-10 15:48:10 1407

原创 k8s网络插件之Calico

Calico是一套开源的网络和网络安全解决方案,用于容器、虚拟机、宿主机之前的网络连接,它是一个纯三层的虚拟化网络解决方案,它把每个节点都作为一个虚拟路由器,并把每个节点上的Pod当作是节点路由器后的一个终端设备并为其分配一个IP地址。各节点路由器通过BGP协议生成路由规则,从而实现不通节点上Pod间的通信。如下图:与Flannel相比,Calico的一个显著优势是对网络策略的支持,它允许用户定义访问控制规则以管控进出Pod的数据报文,从而为Pod间的通信施加安全策略。

2022-12-01 21:28:35 10547

原创 k8s网络插件之Flannel

Flannel是由CoreOS开源的针对k8s的网络服务,其目的是为解决k8s集群中各主机上Pod之间的通信问题,其借助etcd维护网络IP地址分配,并为每个Node节点分配一个不同的IP地址段。Flannel在每个节点运行一个名为flanneld的二进制代理程序,它负责从预留的网络中按照指定或者默认的掩码长度为当前节点申请分配一个子网,并将网络配置、已分配的子网和辅助数据(比如主机的公网IP等)存储在Kubernetes API或独立的etcd中。

2022-11-26 17:55:54 4372

原创 k8s网络基础

由此可见,上面的4种通信模型种,仅“Pod间的通信”是负责解决跨节点间容器通信的核心所在,但Kubernetes通过CNI解决,CNI是目前Kubernetes系统上标准的网络插件接口规范,目前绝大多数为K8s解决Pod网络通信的插件都是遵循CNI规范的实现。IP VLAN与MAC VLAN类似,它同样创建虚拟接口并为每个接口分配唯一的IP,不同之处在于,所有的虚拟接口将共享使用物理接口的MAC地址,从而不再违反MAC地址防欺骗的策略,且不要求在物理接口启用混杂模式。

2022-11-13 20:10:36 1038

原创 k8s日志收集

分布式日志数据统一收集,实现集中式查询和管理故障排查安全信息和事件管理报表统计及展示功能日志查询、问题排查、故障恢复和故障自愈应用日志分析,错误报警性能分析,用户行为分析在节点上进行收集,基于daemonset部署日志收集容器,实现json-file类型(标准输出/dev/stdout,错误输出/dev/stderr)日志收集使用sidecar容器收集当前Pod内一个或多个业务容器的日志,通常基于emptyDir实现业务容器与sidecar容器之间的日志共享。

2022-11-04 15:46:31 5487

原创 k8s调度之污点和容忍

污点定义在节点的nodeSpec中,是键值类型的数据,但要额外加一个效用(effect)标识,格式为,其中key和value的用法及格式与标签类似,而效用标识则用于定义节点对Pod对象的排斥等级。NoSchedule:不能容忍此污点的Pod对象不可调度至当前节点,属于强制性约束关系,但添加此效用标识的污点不会影响节点上已有Pod运行PreferNoSchedule:NoSchedule的柔性约束版本,调度器尽量确保不能容忍此污点的Pod不会被调度至当前节点。

2022-10-22 16:03:04 1108

原创 k8s调度之亲和/反亲和

节点首选亲和为节点选择机制提供了一种柔性控制逻辑,被调度的Pod应该尽量放置在满足亲和条件的节点上,但亲和条件不满足时,该Pod也能接受被调度到其它不满足亲和条件的节点上。因此,定义Pod的亲和/反亲和关系时,需要先借助标签选择器来选择出要参照的Pod对象,而后根据筛选出的Pod对象所在节点的标签来判定同一位置所指,而后针对亲和关系将新创建的Pod放置在同一位置优先级最高的节点,或根据反亲和关系将新创建的Pod放置在不同位置优先级最高的节点。同样的,Pod的反亲和也支持强制和首选两种形式。

2022-10-20 16:50:28 2122

原创 ServiceAccount在k8s1.24版本中的变化

创建之后查看Pod挂载的卷,如下所示,可以看到Pod定义了一个卷kube-api-access-xxx,并且也挂载到容器内/var/run/secrets/kubernetes.io/serviceaccount 目录下的文件和之前的版本是一致的,但卷的数据来源并不是Secret,其中token是由kubelet到tokenRequest api去申请的token,且token的有效期为1小时;再查看secre-for-sa1中的token,如下图,它没有过期时间,是永不过期的。)一下,查看有什么区别。

2022-10-15 17:12:22 1285 1

原创 k8s认证和授权

在Kubernetes中API Server是访问和管理资源对象的唯一入口。所有客户端均要通过API Server访问或者改变集群状态以及完成数据存储,API Server会对每一次请求进行合法性校验,校验包括:用户身份验证、操作权限验证以及操作是否符合全局规范约束等。所有检查均正常完成才能访问或存储数据到etcd。如下图所示:客户端认证操作由API Server配置的一到多个认证插件完成,收到请求后API Server会串行调用这些插件,直到一个插件可以成功识别用户身份为止。

2022-10-15 15:16:54 2637

原创 k8s资源限制

和LimitRange不同,ResourceQuota资源对象创建之前已存在的资源对象也会在被ResourceQuota资源对象计入配额统计范围,即之前已存在的资源对象也会占用配额。

2022-10-07 18:13:05 1632

原创 HPA控制器

HPA(Horizontal Pod Autoscaler),Pod水平自动缩放器,可以根据Pod的负载动态调整Pod的副本数量,业务高峰期自动扩容Pod副本以满足业务请求。在业务低峰期自动缩容Pod,实现节约资源的目的。与HPA相对的是VPA (Vertical Pod Autoscaler),Pod垂直自动缩放器,可以基于Pod的资源利用率,调整对单个Pod的最大资源限制,不能与HPA同时使用。版本描述只支持基于CPU指标的缩放。

2022-09-29 17:57:39 737

原创 k8s实践案例-基于zookeeper实现微服务动态注册和发现

zookeeper的部署在之前的文章中已经实现。

2022-09-23 21:33:41 1072

原创 k8s实践案例-LNMP部署Wordpress

下载wordpress安装包,将安装包中文件放置到Pod使用的nfs pv对应的目录。在harproxy上添加转发配置,重启haproxy。直接访问首页,可以看到发布的文章。访问wordpress安装界面。通过脚本执行构建上传镜像。安装完成之后进行登录。

2022-09-22 10:37:06 1042

原创 k8s实践案例-基于StatefulSet运行Mysql一主多从

创建两个Service:mysql和mysql-read,前者是Headless Service用于StatefulSet Pod解析,写请求需要明确通过mysql-0.mysql访问Master实现;后者用于读请求,读请求可以通过Service转发到任意一个mysql Pod实现。Xtrabackup是用于mysql热备份的开源工具,具有备份速度快、支持备份数据压缩、自动校验备份数据、备份过程不影响业务等特点,是目前使用较广的MySQL备份工具。进入新创建的mysql-2查看主从同步状态。

2022-09-20 11:18:15 363

原创 k8s实践案例-基于StatefulSet运行Redis集群

故障测试,杀掉redis-0中的redis进程,验证salve是否会升级为master。创建redis集群,进入任意一个redis Pod执行创建集群的命令。进入redis-0的slave redis-4 查看数据是否同步。删除Pod重建redis,验证数据能否恢复。读写数据测试,在redis0写入数据。查看Pod和service。

2022-09-17 17:35:19 587

原创 k8s实践案例-运行zookeeper集群

查看3个zookeeper的状态,zookeeper为leader,其余节点为follower。再查看zookeeper的状态,zookeeper2已经成为新的leader。将目前的leader停掉,然后验证是否重新选举leader。创建后,查看pod和service。通过脚本执行构建上传镜像。

2022-09-15 09:44:17 872

空空如也

空空如也

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

TA关注的人

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