- 博客(110)
- 收藏
- 关注
转载 优化生产环境中的 Kubernetes 资源分配
我和 Kubernetes 的初次接触就涉及到将应用容器化并部署到生产环境集群中,当时我的工作重点是把 buffer 吞吐量最高(低风险)的某个端点从单个应用程序中分离出来,因为这个特殊的端点会给我们带来很大的困扰,偶尔还会影响到其他更高优先级的流量。在使用curl进行一些手动测试之后,我们决定将这个剥离出来的端点部署在Kubernetes上。当有1%的流量打进来时,服务运行正常,一切看起来都是那么地美好;当流量增加到10%时,也没有什么大问题;最后我将流量增加到50%,麻烦来了,这时...
2021-07-02 16:05:57 394
转载 Kubernetes Pod 驱逐详解
在 Kubernetes 中,Pod 使用的资源最重要的是 CPU、内存和磁盘 IO,这些资源可以被分为可压缩资源(CPU)和不可压缩资源(内存,磁盘 IO)。可压缩资源不可能导致 Pod 被驱逐,因为当 Pod 的 CPU 使用量很多时,系统可以通过重新分配权重来限制 Pod 的 CPU 使用。而对于不可压缩资源来说,如果资源不足,也就无法继续申请资源(内存用完就是用完了),此时 Kubernetes 会从该节点上驱逐一定数量的 Pod,以保证该节点上有充足的资源。当不可压缩资源不足时,Kuberne
2021-07-02 14:54:47 2902
转载 轻量级容器运行时 CRI-O 解析
1.CRI-O 的诞生当容器运行时(Container Runtime)的标准被提出以后,Red Hat 的一些人开始想他们可以构建一个更简单的运行时,而且这个运行时仅仅为 Kubernetes 所用。这样就有了skunkworks项目,最后定名为CRI-O, 它实现了一个最小的 CRI 接口。在 2017 Kubecon Austin 的一个演讲中, Walsh 解释说, ”CRI-O 被设计为比其他的方案都要小,遵从 Unix 只做一件事并把它做好的设计哲学,实现组件重用“。根据 Red ...
2021-07-01 14:50:50 4665
转载 Device Mapper基础教程:Docker 中使用 devicemapper 存储驱动
1.准备条件 devicemapper存储驱动是RHEL,CentOS和Oracle Linux系统上唯一一个支持Docker EE和Commercially Supported Docker Engine(CS-Engine) 的存储驱动,具体参考Product compatibility matrix. devicemapper在CentOS,Fedora,Ubuntu和Debian上也支持Docker CE。 如果你更改了Docker...
2021-07-01 11:53:04 3239
转载 你确定你会写 Dockerfile 吗?
如今 GitHub 仓库中已经包含了成千上万的Dockerfile,但并不是所有的 Dockerfile 都是高效的。本文将从五个方面来介绍 Dockerfile 的最佳实践,以此来帮助大家编写更优雅的 Dockerfile。如果你是 Docker 的初学者,恭喜你,这篇文章就是为你准备的。后面的系列将会更加深入,敬请期待!本文使用一个基于Maven的 Java 项目作为示例,然后不断改进 Dockerfile 的写法,直到最后写出一个最优雅的 Dockerfile。中间的所有步骤都是为了说明某一...
2021-06-30 17:52:08 105
转载 Docker 镜像制作教程:减小镜像体积
对于刚接触容器的人来说,他们很容易被自己制作的 Docker 镜像体积吓到,我只需要一个几 MB 的可执行文件而已,为何镜像的体积会达到1 GB以上?本文将会介绍几个奇技淫巧来帮助你精简镜像,同时又不牺牲开发人员和运维人员的操作便利性。本系列文章将分为三个部分:第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环。在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影响,以及如何避免那些不好的影响。中间会穿插一部分对Alpine镜像...
2021-06-30 17:25:11 385
原创 Redis AOF 追加阻塞问题分析处理
当Redis开启AOF持久化时,常用的同步硬盘的策略是everysec,用于平衡性能和数据安全性。对于这种方式,Redis使用另一条线程每秒执行fsync同步硬盘。当系统硬盘资源繁忙时,会造成Redis主线程阻塞,如图所示。阻塞流程分析:1)主线程负责写入AOF缓冲区。2)AOF线程负责每秒执行一次同步磁盘操作,并记录最近一次同步时间。3)主线程负责对比上次AOF同步时间:如果距上次同步成功时间在2秒内,主线程直接返回。 如果距上次同步成功时间超过2秒,主线程将会阻塞,直到同步.
2021-04-15 16:20:55 1183
原创 openresty监控模块nginx-module-vts编译安装
下载vts插件:(如果报错说/usr/local不为空可以先下载到其他路径,然后必须再移过来)git clone git://github.com/vozlt/nginx-module-vts.git /usr/local下载openresty-packaging:生成Openresty RPM包的配置文件git clone https://github.com/openresty/openresty-packaging.git ~/有些文章中提及要下载Openresty源码,实际操作时
2020-07-08 14:41:09 1933
原创 Docker填坑大全
1. docker报【Error response from daemon: Error running DeviceCreate (createSnapDevice) dm_task_run failed】错解决办法:# systemctl stop docker.service# thin_check /var/lib/docker/devicemapper/devicemappe...
2019-11-18 14:45:47 867
转载 MapReduce的核心运行机制
正文概述一个完整的 MapReduce 程序在分布式运行时有两类实例进程:1、MRAppMaster:负责整个程序的过程调度及状态协调2、Yarnchild:负责 map 阶段的整个数据处理流程3、Yarnchild:负责 reduce 阶段的整个数据处理流程 以上两个阶段 MapTask 和 ReduceTask 的进程都是 YarnChild,并不是说这 MapTas...
2019-07-20 11:40:26 200
原创 MapReduce与YARN调度图
首先让我们来重温一下 hadoop 的四大组件:HDFS:分布式存储系统MapReduce:分布式计算系统YARN:hadoop 的资源调度系统Common:以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用” 的核心框架MapReduce 核心功能是将用户...
2019-07-20 11:26:51 199
原创 MapReduce相关问题思考
1、Shuffle的定义是什么?每个map task都有一个内存缓冲区,存储着map的输出结果,当缓冲区快满的时候需要将缓冲区的数据以一个临时文件的方式存放到磁盘,当整个map task结束后再对磁盘中这个map task产生的所有临时文件做合并,生成最终的正式输出文件,然后等待reduce task来拉数据。2、map task与reduce task的执行是否在不同的节...
2019-07-20 11:18:00 319
转载 Zookeeper的ZAB协议与Paxos协议区别
一、联系1. 两者构建的系统都有一个Leader角色,Leader进程负责协调多个Follower进程的运行2. Leader进程都会等待超过半数的Follower进程做出正确的分亏后,才会将一个提案进行提交3. 在ZAB协议中每个Proposal中都包含一个epoch值,用来代表当前的Leader周期;在Paxos算法中,同样存在这样一个标识(Ballot)二、区别1.两者...
2019-07-19 14:37:10 754
原创 HDFS简单介绍
一.HDFS产出背景及定义1>.HDFS产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理磁盘中,但是不方便维护和管理,迫切需求一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。2>.HDFS定义 HDFS全称为:Hadoop Distributed File System,它...
2019-07-16 14:53:45 162
转载 如何落地全球最大 Kubernetes 生产集群(摘抄)
鲍永成京东基础架构部技术总监,DevOps 标准核心编写专家前言JDOS 就是京东数据中心操作系统,随着数据中心规模不断的扩大,我们需要对数据中心做综合的考虑。所以一开始就先说数据中心的层面,大家知道数据中心里面有服务器、网络、基础软件,还有就是部署业务系统。随着技术的发展,有一些集群管理、编排加进来。JDOS 1.0 是基于 openstack ...
2019-03-11 16:24:41 443
转载 redis连接超时原因(tcp_backlog)
TCP中backlog简介Linux内核为每个TCP服务器程序维护两条backlog队列,一条是TCP层的未连接队列,一条是应用层的已连接队列,分别对应net.ipv4.tcp_max_syn_backlog和net.core.somaxconn两个内核参数。一个客户端连接在完成TCP 3次握手之前首先进入到未连接队列,完成握手之后正式建立连接,进入已连接队列,交付给应用程序处理。应用程序...
2019-03-11 16:12:33 8962
转载 经典案例复盘——运维专家讲述如何实现K8S落地(摘抄)
以下是运满满K8s容器化进程记录,摘抄一下,方便以后查阅。背景介绍运满满自开始微服务改造以来,线上线下已有数千个微服务的 Java 实例在运行中。这些 Java 实例部署在数百台云服务器或虚机上,除少数访问量较高的关键应用外,大部分实例均混合部署。这些实例的管理,采用自研平台结合开源软件的方式,已实现通过平台页面按钮菜单执行打包、部署、启动、停止以及回滚指定的版本等基本功能,取得了不错...
2019-03-07 11:22:44 6672
转载 Vmstat命令详解
一、前言vmstat命令:用来获得有关进程、虚存、页面交换空间及CPU活动的信息。这些信息反映了系统的负载情况二、虚拟内存运行原理在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有...
2019-02-28 16:28:56 286 1
原创 Kubernetes StatefulSet 详解
StatefulSet 作为 Controller 为 Pod 提供唯一的标识。它可以保证部署和 scale 的顺序。使用案例参考:kubernetes contrib - statefulsets,其中包含zookeeper和kakfa的statefulset设置和使用说明。StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务...
2019-02-15 17:43:56 2402 1
转载 Kafka文件的存储机制
同一个topic下有多个不同的partition,每个partition为一个目录,partition命名的规则是topic的名称加上一个序号,序号从0开始。每一个partition目录下的文件被平均切割成大小相等(默认一个文件是500兆,可以手动去设置)的数据文件,每一个数据文件都被称为一个段(segment file),但每个段消息数量不一定相等,这种特性能够使得老的segmen...
2019-02-01 16:06:53 190
转载 Kubernetes traefik Ingress
Ingress简介如果你还不了解,ingress是什么,可以先看下我翻译的Kubernetes官网上ingress的介绍Kubernetes Ingress解析。理解Ingress简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义...
2019-01-31 19:18:03 352
转载 kafka中partition和消费者对应关系
1个partition只能被同组的一个consumer消费,同组的consumer则起到均衡效果消费者多于partitiontopic: test 只有一个partition创建一个topic——test,bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitio...
2019-01-31 11:32:48 397
转载 Kafka运维填坑
前提: 只针对Kafka 0.9.0.1版本; 说是运维,其实偏重于问题解决; 大部分解决方案都是google而来, 我只是作了次搬运工; 有些问题的解决方案未必一定是通用的, 若应用到线上请慎重; 如有疏漏之处, 欢迎大家批评指正; 列表: Replica无法从leader同步消息 Broker到zk集群的连接不时会断开重断 Broker重启耗时很久 不允许脏主选举导致B...
2019-01-31 09:38:47 945
转载 在 Kubernetes 上搭建 EFK 日志收集系统
Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch、Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案。Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。Elasticsearch 通常与 Kibana 一起部署,Kiba...
2019-01-28 18:20:46 1036 1
转载 Kubernetes 服务发布方式详解
在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略: 重建(recreate):停止旧版本部署新版本 滚动更新(rolling-update):一个接一个地以滚动更新方式发布新版本 蓝绿(blue/green)...
2019-01-28 18:18:03 1181
转载 Grafana 在 Kubernetes 中的使用
安装grafana 是一个可视化面板,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持 Graphite、zabbix、InfluxDB、Prometheus、OpenTSDB、Elasticsearch 等作为数据源,比 Prometheus 自带的图表展示功能强大太多,更加灵活,有丰富的插件,功能更加强大。接下来我们就来直接安装,同样的,我们将 grafana 安装...
2019-01-25 17:26:41 7000 3
转载 使用 Prometheus 监控 Kubernetes 集群应用
上一节我们和大家介绍了Prometheus的数据指标是通过一个公开的 HTTP(S) 数据接口获取到的,我们不需要单独安装监控的 agent,只需要暴露一个 metrics 接口,Prometheus 就会定期去拉取数据;对于一些普通的 HTTP 服务,我们完全可以直接重用这个服务,添加一个/metrics接口暴露给 Prometheus;而且获取到的指标数据格式是非常易懂的,不需要太高的学习成本...
2019-01-24 18:04:48 708
转载 理解 kubernetes 亲和性调度
一般情况下我们部署的 Pod 是通过集群的自动调度策略来选择节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均,但是有的时候我们需要能够更加细粒度的去控制 Pod 的调度,比如我们内部的一些服务 gitlab 之类的也是跑在Kubernetes集群上的,我们就不希望对外的一些服务和内部的服务跑在同一个节点上了,害怕内部服务对外部的服务产生影响;但是有的时候我们的服务之间交流比较频繁,又希望...
2019-01-24 16:07:56 363
转载 Dockerfile 最佳实践(如何最小化docker镜像)
Docker官方关于Dockerfile最佳实践原文链接地址:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/Docker可以通过从Dockerfile包含所有命令的文本文件中读取指令自动构建镜像,以便构建给定镜像。Dockerfiles使用特定的格式并使用一组特定的指令。您可以在 Docke...
2019-01-24 14:51:43 3058
转载 外部服务发现之 ingress(二)
上节课给大家展示了traefik的安装使用以及简单的ingress的配置方法,这节课我们来学习一下 ingress tls 以及 path 路径在 ingress 对象中的使用方法。TLS 认证在现在大部分场景下面我们都会使用 https 来访问我们的服务,这节课我们将使用一个自签名的证书,当然你有在一些正规机构购买的 CA 证书是最好的,这样任何人访问你的服务的时候都是受浏览器信任的证书...
2019-01-24 14:22:40 582
转载 外部服务发现之 ingress(一)
上节课我们学习了在Kubernetes集群内部使用kube-dns实现服务发现的功能,那么我们部署在Kubernetes集群中的应用如何暴露给外部的用户使用呢?我们知道前面我们使用 NodePort 和 LoadBlancer 类型的 Service 可以实现把应用暴露给外部用户使用,除此之外,Kubernetes 还为我们提供了一个非常重要的资源对象可以用来暴露服务给外部用户,那就是 ingre...
2019-01-24 10:20:46 1226
转载 集群内部服务发现之 DNS
前面我们给大家讲解了Service的用法,我们可以通过 Service 生成的ClusterIP(VIP)来访问 Pod 提供的服务,但是在使用的时候还有一个问题:我们怎么知道某个应用的 VIP 呢?比如我们有两个应用,一个是 api 应用,一个是 db 应用,两个应用都是通过Deployment进行管理的,并且都通过 Service 暴露出了端口提供服务。api 需要连接到 db 这个应用,我们...
2019-01-24 09:55:32 926
转载 kubernetes 持久化存储(二)
前面的课程中我们学习了 PV 和 PVC 的使用方法,但是前面的 PV 都是静态的,什么意思?就是我要使用的一个 PVC 的话就必须手动去创建一个 PV,我们也说过这种方式在很大程度上并不能满足我们的需求,比如我们有一个应用需要对存储的并发度要求比较高,而另外一个应用对读写速度又要求比较高,特别是对于 StatefulSet 类型的应用简单的来使用静态的 PV 就很不合适了,这种情况下我们就需要用...
2019-01-23 17:30:25 611
转载 kubernetes 持久化存储(一)
概念PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。PVC 的全称是:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明,PVC 和 Pod 比较类似...
2019-01-23 17:06:38 795
转载 Kubernetes Pod 工作流
我们知道Pod是Kubernetes中最小的调度单元,平时我们操作Pod的时间也是最多的,那么你知道Pod是怎样被创建出来的吗?知道他的工作流程吗?组件之间的通信我们知道在Kubernetes集群中apiserver是整个集群的控制入口,etcd在集群中充当数据库的作用,只有apiserver才可以直接去操作etcd集群,而我们的apiserver无论是对内还是对外都提供了统一的REST ...
2019-01-23 14:46:29 324
转载 Docker-- Docker storage driver 概述
概述Docker 配置的时候有一个很重要的配置项就是 storage driver选项,本篇博客详细介绍下storage driver这一配置项的相关内容。背景首先是 storage driver出现的原因。我们知道容器的存储大致有两种,一种是在容器外的,比如 volume,不会随着容器的消亡而消失,有自己的生命周期。还有一种是容器内的,这种存储跟对应容器的生命周期是紧密结合在一起的。...
2019-01-10 10:49:12 782
转载 Prometheus监控 - 简介、架构及基本环境配置
OverviewPrometheus是一个开源的系统监控和报警的工具包,最初由SoundCloud发布。FeaturesPrometheus的主要特点是:多维数据模型(有metric名称和键值对确定的时间序列) 灵活的查询语言 不依赖分布式存储 通过pull方式采集时间序列,通过http协议传输 支持通过中介网关的push时间序列的方式 监控数据通过服务或者静态配置来发现...
2019-01-04 16:26:19 2148
转载 深入学习Redis(5):集群
前言在前面的文章中,已经介绍了Redis的几种高可用技术:持久化、主从复制和哨兵,但这些方案仍有不足,其中最主要的问题是存储能力受单机限制,以及无法实现写操作的负载均衡。Redis集群解决了上述问题,实现了较为完善的高可用方案。本文将详细介绍集群,主要内容包括:集群的作用;集群的搭建方法及设计方案;集群的基本原理;客户端访问集群的方法;以及其他实践中需要的集群知识(集群扩容、故障转移、参数...
2019-01-02 16:45:20 164
转载 深入学习Redis(3):主从复制
前言在Redis的持久化中曾提到,Redis高可用的方案包括持久化、主从复制(及读写分离)、哨兵和集群。其中持久化侧重解决的是Redis数据的单机备份问题(从内存到硬盘的备份);而主从复制则侧重解决数据的多机热备。此外,主从复制还可以实现负载均衡和故障恢复。这篇文章中,将详细介绍Redis主从复制的方方面面,包括:如何使用主从复制、主从复制的原理(重点是全量复制和部分复制、以及心跳机制)、...
2019-01-02 16:37:03 218
转载 深入学习Redis(2):RDB和AOF持久化
前言本文将先说明上述几种技术分别解决了Redis高可用的什么问题;然后详细介绍Redis的持久化技术,主要是RDB和AOF两种持久化方案;在介绍RDB和AOF方案时,不仅介绍其作用及操作方法,同时介绍持久化实现的一些原理细节及需要注意的问题。最后,介绍在实际使用中,持久化方案的选择,以及经常遇到的问题等。 一、Redis高可用概述在介绍Redis高可用之前,先说明一下在Redis的...
2019-01-02 15:14:41 158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人