自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 容器化构建Prometheus监控系统

使用PromQL查询:100- node_filesystem_avail_bytes{mountpoint="/rootfs",fstype=~"ext4|xfs"} /node_filesystem_size_bytes{mountpoint="/rootfs",fstype=~"ext4|xfs"}* 100。4.4.1 在Prometheus.yml文件加添加Alertmanager连接配置。4.2 在Prometheus.yml文件中添加otherhost主机。

2025-05-14 10:04:27 741

原创 Prometheus告警媒介 钉钉

text: '{{ template "ops.content" . }}' # 添加模板内容,在下面的模板文件content位置。title: '{{ template "ops.title" . }}' # 添加模板标题,在下面的模板文件title位置。七、重启prometheus-webhook-dingtalk及alertmanager。分组内第一个告警等待时间,30s内如有第二个告警会合并一个告警。添加模板内容,在下面的模板文件content位置。添加模板标题,在下面的模板文件title位置。

2025-05-14 10:03:08 391

原创 Prometheus告警组件Alertmanager

例如,如果一个更一般的告警已经触发,可能会抑制更具体的告警。通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性的对告警规则进行计算,分组聚合是将多个告警实例合并为一个告警通知,以减少通知的泛滥。这通常基于告警的相似性,如相同的标签或告警名称。静默是一种手动干预,用于临时忽略特定的告警规则或告警实例。路由树,每个告警都会在配置的顶级路由中进入路由树,路由树匹配所有报警规则。实现Prometheus的告警,需Alertmanager这个组件。

2025-05-14 10:02:34 773

原创 Grafana对接Prometheus数据源

回到home页面,查看新添加的linux主机详情dashboard。三、Grafana数据源Prometheus添加。四、Grafana添加数据仪表盘。一、Grafana介绍。二、Grafana安装。

2025-05-14 10:01:49 965

原创 Prometheus安装及使用(二进制方式)

为了强调这一点,并明确项目的治理结构,Prometheus 于 2016 年作为继Kubernetes之后的第二个托管项目加入了云原生计算基金会(CNCF)。Prometheus是一个开源系统监控和警报工具,最初由 SoundCloud创建。自 2012 年以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发者和用户社区。使用Prometheus监控Prometheus server及其他主机。对Prometheus server主机监控(关闭各主机防火墙和selinux!

2025-05-14 10:00:48 982

原创 Kubernetes日志手机方案ELK(一)

这个命令是使用 Logstash 的一个简单示例,它从标准输入(stdin)接收数据,然后输出到标准输出(stdout)。- AND (与): `status:200 AND extension:php`此内容将会通过kibana页面中的索引看到,但是需要在kibana页面中添加索引。- OR (或): `status:200 OR status:404`- `*` 匹配零个或多个字符: `host.name:web-*`` 匹配单个字符: `host.name:web-srv?

2025-05-14 09:59:55 1015

原创 Kubernetes日志收集方案ELK(二)

清空缓存可以帮助释放系统中的内存并提高性能,但在生产环境中应谨慎使用,因为这可能会导致性能下降,尤其是在大量磁盘 I/O 操作期间。用于通过写入特定的值到 /proc/sys/vm/drop_caches 文件来清空系统中的页缓存、目录项缓存以及索引节点缓存。这样,内核就可以把分散的写集中起来,统一优化磁盘的写入,比如可以把多次小的写合并成单次大的写等等。在Linux系统中,清空内存通常用于释放系统中的缓存以及未使用的内存页,以便提高系统的性能。七、收集kubernetes集群中pod应用的日志。

2025-05-14 09:59:06 678

原创 K8s中间件上云部署rocketmq

rocketmq-namesrv和 rocketmq-broker共用同一个镜像,仅仅是启动命令和启动参数不一样,后期可灵活的通过调整启动命令和启动参数来实现不同的效果(比如通过挂载configMap的方式自定义rocketmq的配置文件,而不需要重建rocketmq的镜像)。显示了两个Broker(rocketmq-broker-1:0 和 rocketmq-broker-0:0)的总消息数(TotalMsg)。显示了主题(DefaultCluster.REPLY_TOPIC)在最近5分钟内的消息趋势。

2025-05-14 09:58:14 692

原创 K8s中间件上云部署 kafka

如果多个外卖小哥同属一个团队(同一个消费者组),他们会分摊订单(比如小哥1送1-5单,小哥2送6-10单)。- 如果是不同团队(不同消费者组),每个团队都会收到全部订单(比如美团和饿了么各自独立配送同样的订单)。- 订单默认保存7天(可配置),超过时间自动清理,但重要订单可以永久保存(比如VIP客户的订单)。: 这是同步副本列表(In-Sync Replicas,简称 ISR),包含当前与领导者同步的副本。- 订单柜台的每类订单都有 备份副本(比如副本放在后厨),即使柜台被砸了,数据也不丢。

2025-05-14 09:57:22 401

原创 K8s集群python项目上云部署

可以在harbor主机上准备,准备完成后,再上传到harbor仓库,以备后续使用。查看harbor容器是否已运行,如果未运行,通过docker-compose重启。使用Dockerfile生成项目基础镜像,并上传到harbor仓库。注:如果镜像可以下载,但yum命令执行不成功,一般为路由转发未开启。项目基础镜像主要是为项目提供运行环境,本次采用定制基础镜像。可以直接复制到基础镜像中,便于安装python项目依赖。部署Metallb,Ingress,Nginx。在k8smaster节点找到数据库文件。

2025-05-14 09:56:38 608

原创 K8s集群Java项目上云部署

应用:[root@master01 ~]# kubectl apply -f deploy-nfs-client-provisioner.yml。如果保存时需另存则:点击hosts右击——属性——安全——Users——编辑——勾选修改和写入权限——确定——重新修改hosts文件——复制ingress-nginx.tar包到两台工作节点,并导入镜像。应用:[root@master01 ~]# kubectl apply -f storageclass-nfs-rbac.yaml。

2025-05-14 09:55:43 286

原创 Kubernetes集群公共服务

提供直接在 Nginx 配置使用包括 "echo", "sleep", "time" 等指令。注意:考虑到主机资源情况,此处将多个服务部署到一台主机上了(dns解析主机名根据服务名定义);或者复制echo-nginx-module-0.61.tar.gz和ngx-fancyindex-0.5.2.tar.xz包到10.14主机。或者复制harbor-offline-installer-v2.8.3.tgz包到10.14主机。添加:/data/nfs *(rw,sync,no_root_squash)

2025-05-14 09:53:48 669

原创 Kruise Rollouts发布策略

之后,开发人员可以使用一些其他方法,如 Prometheus metrics 业务指标,确定发布符合预期,然后通过 kubectl-kruise rollout approve rollout/rollouts-demo-echoserver -n default 和等待部署发布完成。将部署中的镜像版本从 1.10.2 改为 1.10.3,然后 kubectl apply -f 01-deploy.yaml 到 k8s 集群,如下所示。确认nginx-ingress-controller的IP。

2025-05-14 09:52:36 834

原创 Kruise Rollouts发布策略

之后,开发人员可以使用一些其他方法,如 Prometheus metrics 业务指标,确定发布符合预期,然后通过 kubectl-kruise rollout approve rollout/rollouts-demo-echoserver -n default 和等待部署发布完成。将部署中的镜像版本从 1.10.2 改为 1.10.3,然后 kubectl apply -f 01-deploy.yaml 到 k8s 集群,如下所示。确认nginx-ingress-controller的IP。

2025-05-14 09:50:07 896

原创 Kruise Rollouts

用于 Deployment、CloneSet、StatefulSet、Advanced StatefulSet 的。首先,如果您还没有添加 openkruise Charts库,请执行以下命令。拖入openkruise-kruise-manager.tar。将部署升级到“version-2”并发布第一批次。在更新工作负载时进行流量细粒度、加权流量转移。指示 Rollout 使用分区方式进行滚动更新。使用Deployment部署应用。(Canary)更新策略。前提环境安装好helm。基本使用(多批次发布)

2025-05-07 14:43:16 837

原创 原地升级及全链路灰度发布方案OpenKruise

如果要使用原地升级能力,需要在安装或升级 Kruise chart 的时候打开kruise- daemon (默认打开)和 InPlaceUpdateEnvFromMetadata 两个 feature-gate。但对于大规模应用与集群的场景,这些基础功能是远远不够的。它是由阿里巴巴集团的阿里云团队维护和开发的,并且在2018年将其贡献给了云原生计算基金会(CNCF),成为了CNCF的孵化项目。用于实现kubernetes中相互关联的多个yaml文件的安装部署,相当于linux系统中的yum工具。

2025-05-07 14:42:03 587

原创 Chart包托管至Harbor方案

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具,通过一个 docker-compose.yml 文件即可管理所有容器的配置、网络和依赖关系。Harbor 是一个由多个组件(如核心服务、数据库、存储、日志服务等)构成的复杂应用,这些组件通常以 Docker 容器的形式运行。复制harbor-offline-installer-v2.5.3.tgz包到harbor主机。或者复制docker-compose-linux-x86_64包到harbor主机。再次查看发现推送成功!

2025-05-07 14:41:30 944

原创 Chart包开发

一个 Helm chart 包含了运行一个应用程序所需的所有 Kubernetes 资源定义,以及相关的配置和参数。就像海图一样,chart 为 Kubernetes 应用程序的部署和管理提供了指导和规划。Helm 包被称为 "chart" 包,这个名字来源于航海领域中的海图(chart)。在航海中,海图是用来导航和规划航线的重要工具,它包含了航线、地标、水深等信息,帮助航海者安全地到达目的地。[可选] 用于存放当前Chart依赖的其它Chart的说明文件。选项来打印出生成的清单文件内容,而不执行部署。

2025-05-07 14:40:55 779

原创 Kubernetes包管理解决方案helm

它的官方的定义是:Helm是一个为K8s进行包管理的工具。Helm将yaml作为一个整体管理并实现了这些yaml的高效复用,就像Linux中的yum或apt-get,它使我们能够在K8s中方便快捷的安装、管理、卸载K8s应用。它包含在K8s集群内部运行应用程序,工具或服务所需的所有资源定义,为所有项目资源清单yaml文件的集合,采用TAR格式,可以类比成yum中的RPM。• 但是如何维护大量的,系统性的YAML文件,需要我们拥有更好的工具,不能简单使用YAML资源清单托管服务器就可以解决的。

2025-05-07 14:39:44 991

原创 Kubernetes服务自动伸缩——VPA

在这种模式下,VPA会尝试在线调整运行中的Pod的资源请求和限制,而无需重启Pod。当VPA生成新的资源推荐时,它会终止当前的Pod并重新创建一个新的Pod,新Pod将采用最新的资源推荐。在VPA中,updateMode 是一个重要的配置选项,它决定了VPA如何应用其提供的资源建议。当目前运行的pod的资源达不到VPA的推荐值,就会执行pod驱逐,重新部署新的足够资源的服务。此模式当目前运行的pod的资源达不到VPA的推荐值,就会执行pod驱逐,重新部署新的足够资源的服务删除前面的vpa策略。

2025-05-07 14:39:10 426

原创 kubernetes服务自动伸缩

这是一个 HorizontalPodAutoscaler (HPA) 对象的配置,它将控制Deployment "nginx" 的副本数量。当 CPU 使用率超过 50% 时,HPA 将自动增加 Pod 的副本数量,最高不超过 10 个。控制器会周期性的调整副本控制器或 Deployment 中的副本数量,以使得 Pod 的平均 CPU 利用率与用户所设定的目标值匹配。资源决定了控制器的行为。是最常用的自动伸缩方式,它根据 CPU、内存或自定义指标自动增加或减少 Pod 数量。

2025-05-07 14:38:19 944

原创 k8s——nginx ingress

配置过k8s的都清楚, 第一步是要关闭防火墙的, 主要原因是k8s的很多服务会以NodePort方式映射出去, 这样就相当于给宿主机打了很多孔, 既不安全也不优雅.验证ingress对象:[root@master01 ~]# kubectl get ingress -n ingress-nginx。将Nginx的配置抽象成一个Ingress对象,每添加一个新的服务只需写一个新的Ingress对象的yaml文件即可。

2025-05-07 14:37:53 969

原创 Kubernetes核心概念二

举个大家每天都会遇到的例子,大家在淘宝或者京东上购物时,从完成用户身份认证到浏览店铺,选择心仪商品加入购物车,一直到最后下单完成支付,需要经过很多次和服务器的交互过程才能完成整个交易。由于这几次交互过程从顺序上和逻辑上是密切相关的,服务器在进行这些交互过程的某一个交互步骤时需要一个上下文(Context),即上一次交互过程的输出,因此要求这些相关的交互过程都由一台服务器完成。会话保持是指在负载均衡器上的一种机制,在完成负载均衡任务的同时,还负责一系列相关联的访问请求会分配到一台。

2025-05-07 14:36:22 882

原创 Kubernetes核心概念service

解决:ClusterIP 为 Service 分配一个固定虚拟 IP,其他服务只需访问该 IP 或 DNS 名称(如 my-svc.default.svc.cluster.local),无需关心后端 Pod 的变化。为一组 Pod 提供固定的虚拟 IP(ClusterIP)和 DNS 名称,客户端只需访问 Service,无需关心后端 Pod 的具体 IP。优点:高性能(内核态直接转发)。在实际使用中,iptables 和 ipvs 是更常用的模式,尤其是 ipvs,因为它提供了更好的性能和可扩展性。

2025-05-07 14:35:41 939

原创 Kubernetes集群使用harbor仓库

运维人员在不知道harbor用户名和密码的情况下,直接调用创建 docker-registry 类型的 Secret。[root@harbor harbor]# docker-compose up -d //后台运行。修改serviceaccount添加使用harbor-secret的权限。多窗口测试:登录私有仓库:(确保四台主机都可以连接到私有仓库)不做:--重启:docker-compose restart。不做:--停止:docker-compose stop。

2025-05-07 14:35:07 762

原创 Kubernetes 配置与密钥管理

Kubernetes 配置与密钥管理配置:修改配置容器,pod不需要进入容器,容器外可以直接修改。密钥:不放在容器和镜像中,存储在单独的文件中并放在宿主机上,更安全。Kubernetes 提供了多种机制来管理应用配置和敏感信息,主要包括 ConfigMap 和 Secret 两种核心资源。ConfigMap 用于存储非敏感的配置数据,以键值对形式存储。Secret 用于存储敏感信息,如密码、OAuth 令牌和 SSH 密钥。1. 什么是configmapkubernetes集群可以使用ConfigMap来实

2025-05-07 14:34:18 665

原创 StatefulSet控制器

从上述结果中,我们知道,storageclass为我们自动创建了PV,volumeClaimTemplate为我们自动创建PVC,但是否能够满足我们所说的,每一个Pod都有自己独有的数据持久化目录,也就是说,每一个Pod内的数据都是不一样的。在用Deployment时,每一个Pod名称是没有顺序的,是随机字符串,因此是Pod名称是无序的,但是在statefulset中要求必须是有序 ,每一个pod不能被随意取代,pod重建后pod名称还是一样的。每一个请求都像首次执行一样,不会依赖之前的数据。

2025-05-07 14:33:47 731

原创 Kubernetes持久化存储卷-StorageClass

RBAC(Role-Based Access Control,基于角色的访问控制)是一种访问控制模型,它通过将用户分配到不同的角色,并为每个角色定义权限,从而实现对资源的访问控制。用户通过PVC直接向意向的类别发出申请,匹配由管理员事先创建的PV,或者由其按需为用户动态创建PV,这样就免去了需要先创建PV的过程。pod在k8s集群的节点中是可以调度的, 如果pod挂了被调度到另一个节点,那么数据和pod的联系会中断。云存储:阿里云,华为云,腾讯云,浪潮云, aws,azurefile等。

2025-05-05 20:34:56 956

原创 k8s存储

如果系统中有多个能够满足pvc要求的pv,那么,系统会自动选择一个符合pvc申请空间大小的PV,进行绑定,尽量不浪费存储空间。PV 是集群级别的资源,独立于 Pod 生命周期,即使 Pod 被删除,PV 中的数据仍然保留。:PV能以read-write的模式mount到单个节点。如果指定的位置没有目录,将创建,权限755,与kubelet具有相同的所有权。如果指定的位置没有文件,将创建,权限644,与kubelet具有相同的所有权。总结:相当于-v数据卷持久化,删除后容器和pod不存在,只保留数据!

2025-05-05 20:34:14 938

原创 rs_ds_job资源控制器

适用场景:需要确保固定数量的 Pod 副本运行的场景。:通过RollingUpdate更新策略,在更新DaemonSet模板后,旧的DaemonSet窗格将被终止,并且将以受控的方式自动创建新的DaemonSet。现在有一个Pod资源,且是拥有1个标签,svc资源中selector选择器有2个条件,问:svc资源是否能成功的关联到上述的Pod资源?的作用,与我们之前接触过的at有些类似,在k8s集群中,如果需要用到运行一次性工作任务的需求,那么,就可以考虑使用Job资源对象。表示总共需要完成Pod的数量。

2025-05-05 20:33:42 513

原创 Pod健康检查

在 Kubernetes 的 Pod 配置中,terminationGracePeriodSeconds 是一个重要的字段,用于指定在删除 Pod 时,Kubernetes 会给 Pod 多长时间来优雅地终止其进程。这个字段的值是一个整数,表示秒数。是一种在Kubernetes中常见的状态,它表示Pod中的容器在启动后不断崩溃并重新启动,形成一个循环。Liveness活跃度探测,根据探测某个文件是否存在,来确认某个服务是否正常运行,如果存在则正常,否则它会根据你设置的Pod的重启策略操作Pod。

2025-05-05 20:32:21 542

原创 Yaml清单文件配置资源

通过 YAML 文件,用户可以清晰地描述资源的期望状态,Kubernetes 确保实际状态与期望状态一致。只修改一个nginx服务的pod,windows访问时一会是nginx默认界面一会是自定义修改的界面!如果要验证,让外面主机能访问的话,记得要结合上面的svc建立一个service的yaml文件。方法二:已经部署过的资源,可以使用kubectl get命令导出yaml文件。示例二:在已部署的资源上,导出yaml文件并修改再使用(更丰富):模拟执行命令,不会真正创建资源,仅生成 YAML 文件。

2025-05-05 20:30:35 1103

原创 命令行工具Kubectl

暴露 Pod:Service 为 Deployment 管理的 Pod 提供稳定的网络访问,客户端通过 Service 访问 Pod,而不直接与 Pod 交互。例:kubectl autoscale deployment my-deploy --min=2 --max=5 --cpu-percent=80。

2025-05-05 20:28:50 1028

原创 k8s架构基本概念

注意:在较新的 Kubernetes 版本中,kubectl run 默认会创建一个 Deployment 而不是 Pod。和seployment是独立的资源,删除 Service 只会移除网络访问配置,不会影响 Pod 的运行。同时发布两个nginx服务暴露端口时对内的可以同时使用80端口,对外会生成随机端口不影响!Master01上查看:又重新生成两个新的副本(生成速度较慢,需等待!//删除pod和deployment,查看验证。创建一个deployment(可以扩展副本)创建一个pod(没有副本)

2025-05-05 20:27:56 854

原创 Kubernetes部署

目前最主流的是kubeadm,kubeadm是谷歌推出的一个专门用于快速部署kubernetes集群的工具,在集群部署的过程中,可以通过kubeadm init来初始化master节点,然后使用kubeadm join将其他的node节点加入集群中。这个错误是因为 /proc/sys/net/bridge/bridge-nf-call-iptables 文件的内容没有设置为 1,而 Kubernetes 需要这个设置来确保网络流量能够正确通过 iptables 规则。

2025-05-05 20:26:48 904

原创 Prometheus(普罗米修斯监控)

2016年,由Google发起的云原生基金会CNCF(Cloud Native Computing Foundation)将Prometheus纳入其第二大开源项目,现在由Cloud Native Computing Foundation(CNCF)维护,是云原生生态系统中的重要组件之一。这里 AlertManager 默认启动的端口为 9093,启动完成后,浏览器访问 http://<IP>:9093 可以看到默认提供的 UI 页面,不过现在是没有任何告警信息的,因为我们还没有配置报警规则来触发报警。

2025-05-05 20:24:48 2503

原创 Docker-Swarm集群应用三

在自建的overlay网络内,通过服务发现可以实现服务之间通过服务名(不用知道对方的IP)互联,而且不会受服务内副本个数和容器内IP变化等的影响。测试的结果为: test服务可以ping通nginx_service服务,并且返回的IP为自建网络的一个IP(192.168.100.2)Docker stack会忽略了“构建”指令,无法使用stack命令构建新镜像,它是需要镜像是预先已经构建好的。一个stack就是一组有关联的服务的组合,可以跨主机一起编排、发布、管理。

2025-05-05 20:23:33 717

原创 Docker-Swarm集群应用二

Ingress模式下,到达Swarm任何节点的8080端口的流量,都会映射到任何服务副本的内部8080端口,就算该节点上没有tomcat服务副本也会映射;说明:创建名为tomcat-net的覆盖网络(Overlay Netowork),处于该网络下的docker容器,即使宿主机不一样,也能相互访问。创建存储卷:(集群中所有节点:manager1,mamager2,manager3,worker1,worker2),manager3,worker1,worker2四台主机上都是同样的步骤!

2025-05-05 20:22:18 441

原创 Docker-Swarm集群应用一

导入镜像:[root@harbor ~]# docker load -i nginx1.20.tar。导入镜像:[root@harbor ~]# docker load -i wordpress.tar。导入镜像:[root@harbor ~]# docker load -i mysql5u7.tar。为了保持高可用架构,可以同时启动多个容器共同支撑一个服务,如果一个容器故障,它会自动使用另一个容器。导入镜像:[root@harbor ~]# docker load -i tomcat9.tar。

2025-05-05 20:20:54 681

原创 Docker Swarm集群初始化

-advertise-addr 当主机有多块网卡时选择其中一块用于广播,用于其它节点连接管理节点使用。查看node状态,发现manager1不可达,状态为未知,并重启选择出leader。--listen-addr 监听地址,用于承载集群流量使用。join-token 集群加入时token管理。join 加入集群。init 初始化。再次启动docker服务并查看结果。leave 离开集群。本次在manager1上初始化。停止Docker服务。

2025-05-05 20:19:52 587

空空如也

空空如也

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

TA关注的人

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