终究没有人在意一家民营企业的生死

去泰国看了一场“成人秀”,画面尴尬到让人窒息.....

网友建议:远离举报者李X夫!

【少儿禁】马建《亮出你的舌苔或空空荡荡》

10部适合女性看的唯美情色电影

自由微信安卓APP发布,立即下载! | 提交文章网址

云原生技术爱好者社区

容器安全最佳实践和常见威胁

身份运行额外的软件和库仍然可以添加到物理或虚拟机主机等容器中,这可能导致漏洞风险增加恶意代码可能会突破容器并影响主机系统容器安全纵深防御您应该如何考虑将纵深防御实践应用于容器?映射到
2022年8月24日

论如何解决学习通被拖库导致的数据泄漏问题

以一个农民工的名义对大家说,软件的健康与否关系着全国人的安危。君不见,几多时,一个软件漏洞便让多数人惊慌。不经意间,我们与软件的关系休戚与共。不幸的是,软件的健康状况不容乐观,瑕疵很多。之前发生了logback、fastjson等漏洞跟程序员有很大关系,不修复可能面临轻则走人,重则公司倒闭股票下跌,但是今天这个事情,关系到多数人。简单来说,就是被拖库了,什么意思呢?底裤都脱了,所以什么都可以看到了,如果重要信息已经全部泄漏,修改密码也无济于事。当然如果只是泄漏了一张人员信息表,还是建议尽快修改为更复杂的密码。如上对于学习通发表的声明,就相当于没有说什么。首先没有查出被盗的证据,这个要看如何盗取的了,如果数据库所在服务器网络端口对外泄漏了,拿到了数据库的源文件,不把你的服务器数据删除烧高香了。对于重要数据存储的服务器一定要做好网络隔离,并且不断扫描,发现不必要的数据端口暴露,要立马告警。密码用单向加密存储,就没有见过密码用明文存储的,(除了最大的程序员中文平台
2022年6月22日

如何调试Kubernetes集群中的网络延迟问题

以后的数据,但是扰人心智,最后通过多方面定位,解决了该问题。最后发现跟业务、网络都没有什么关系,而是基础设施自身出了问题,如下文给了一个具体排查方案,并从一定程度上解释了容器、cgroup、CPU
2022年3月6日

当前 Kubernetes 发行版比较

更适合与云无关的解决方案,因为它使用其他云服务提供商的底层服务(服务级别的中断/变化较少或没有变化)。但是,如果您正在寻找具有无缝自动容器资源管理的“装箱”解决方案,那么
2022年2月9日

故障排除的思路及见解

正常运行的代码总会出现问题,而且总会以出乎你意料的方式表现出来。代码的正常运行只不过是不正常的一种特殊情况,不正常反而是常态。之所以把问题归结为不可能的玄学问题或者偶现事件,是因为问题超出自己的认知范围,应该努力提升自己把这类问题变为可解释和可解决的方案。思路通常需要故障排除时,问题已经发生,可以告知相关人员,现在开始解决。1、顶住压力,先不用理会别人的看法或者想法,相信自己才是最了解这个系统的。2、恢复系统,这可能有反常理,但是当系统基本不可用时,只有恢复系统了才能静下心排查问题。一般处理优先级是重启服务、调度到其它机器、回滚版本。3、打开监控指标,观察服务之间的指标是否存在异常,主要是定位服务的什么环节出现问题。4、打开日志系统,筛选最近一段时间日志,基本日志平台日志量最大的时间段,也就是出现问题的时间段,一般通过日志能够看到更明确的问题。5、现象基本都知道,重要的是定义问题原因,只有定义清原因才能找到解决方案。如果是系统自身bug导致,到此为止基本可以定位到问题所在,根据实际情况解决问题。如果不是系统自身bug等问题,你可能看到只是现象,而不是原因,这会变得复杂,可能还需要其它同学介入。这里简单说下如何定义故障的现象和原因通常我们看到的是问题现象,能解决问题现象的方案才是原因。说的简单,很多同学却把问题现象错当成原因。举几个简单的例子。之所以出现故障,是因为来了一波访问高峰,把服务打挂了,现在已经恢复。外行人看到,前途无量,响应迅速,内行人看了这只是描述了现象,并没有找到根本原因;我看了下服务是
2022年1月27日

Prometheus+Grafana的思考和实践

Prometheus+Grafana集成的监控系统已经是云原生的绝配,但是Prometheus指标到底该如何使用?Grafana到底该如何展示仍然值得思考和推敲。先说下思考,监控和告警看的是现象而不是原因,通过现象进行具体问题分析。除非某个原因(某个服务导致的时延)是确定的,那么既然问题是确定的,为什么不能直接解决呢?
2022年1月21日

Prometheus样本采集器汇总(建议收藏)

列表,这些指标采集器在我们创建监控时非常有用。我还将提供指向可用于呈现数据的
2022年1月4日

10 分钟了解微服务、容器和 Kubernetes

通过总线相互通信,因此设计用于保持向后兼容性的架构将是至关重要的。只需部署一个微服务的最新版本,开发人员就不应该要求其他人升级他们的代码。这将是向整体方法向后兼容的一步,开发团队必须在永远支持旧
2021年12月3日

K8S常见故障及解决方法

28m问题7:探测存活pod状态为CrashLoopBackOff?原因分析:镜像问题,导致容器重启失败。解决方法:更换镜像即可。问题8:POD创建失败?readiness-httpget-pod
2021年11月29日

TeamTNT黑客组织以Kubernetes为目标,近50000个IP被攻击

导语:研究人员已经发现并确认将近50000个IP被TeamTNT在多个集群中实施的攻击所攻击。关注公众号回复【k8s】获取美国国安局K8S加固指南Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。在Kubernetes中,用户可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。不幸的是,就像任何被广泛使用的应用程序一样,由于它们经常被错误地配置,对于那些主要运行在云环境中、可以访问几乎无限资源的攻击者,就成为诱人的目标。本文将讨论TeamTNT如何在野外扫描和攻击Kubernetes集群。研究人员已经发现并确认将近50000个IP被TeamTNT在多个集群中实施的攻击所攻击。在3月至5月之间的事件发生期间,反复使用了多个IP。大多数被攻击的节点来自中国和美国,从ISP(互联网服务提供商)列表中可以看出,中国和美国的提供商是最热门的,包括一些csp(云服务提供商)。应该指出的是,这些数字反映出,美国和中国运营的集群可能比许多其他国家要多得多。每个国家的服务器被攻击的百分比,中国和美国占了大部分通过分析属于几个TeamTNT服务器的数据,研究人员发现了该小组用于该活动的工具和技术。Kubernetes集群是如何被攻击的本节将分析研究人员从这个以Kubernetes集群为目标的攻击者收集到的一个脚本。研究人员从他们的服务器上收集了一个名为kube.lateral.sh的文件,该文件在编写本文时在VirusTotal中检测率很低。研究人员分解了这个脚本的功能以及它的工作方式。在2021年4月24日(顶部)和2021年5月5日(底部)验证的kube.lateral.sh的VirusTotal检测结果搭建环境TeamTNT的首要任务是禁用目标主机上的bash历史记录,并为其命令和控制(C&C)服务器定义环境变量,例如稍后安装加密矿机的脚本和XMRig
2021年11月19日

为什么云中的容器可以成为攻击者的天堂

容器——包含整个运行时环境的轻量级安装包——已经解决了可移植性、兼容性和快速、受控部署的解决方案。容器包括一个应用程序、依赖项、库和其他二进制文件以及运行它们所需的配置文件。随着微服务、基础设施即代码和面向服务的架构
2021年11月11日

A Big Picture of Kubernetes

云原生的发展历程.https://erdong.site/cloudnative-notes/chapterA-01-Basic/A-1.1-cloud-native-history.html[3]
2021年6月20日

使用Kubernetes重新思考系统架构并减轻技术债务

这是一个关于尝试重新思考复杂系统的故事,您在尝试重建它们时面临的挑战,随着它们的增长而面临的负担越来越大,您很难通过架构自身解决自身的问题。当您权衡更换架构的风险和回报时,可能需要多次尝试才能找到适合您的解决方案。当开发人员接手了一个软件,一般不想费心去理解它是如何工作的时候,通常情况下重写是一种看起来比较好的方式。经验丰富的管理者和高级工程师都知道,除非确实有必要,否则应该避免重写,因为重写通常涉及很多复杂性,并且会在重写过程中引入新问题。我是
2021年6月5日

Istio和Linkerd基准性能测试对比

级别记录各种日志,我们没有配置日志记录。两种服务网格都能够添加重试和超时,以及以各种方式进行转移流量,但在本实验中没有明确使用这些功能。没有启用分布式追踪、多集群通信或其他mesh-y功能。结果
2021年6月1日

kubectl debug | 调试Kubernetes的最简方法

docker.io/library/busybox@sha256:ce2360d5189a033012fbad1635e037be86f23b65cfd676b436d0931af390a2ac
2021年5月26日

Kubernetes容量规划 | 如何调整集群的资源占用

(namespace)((rate(container_cpu_usage_seconds_total{container!="POD",container!=""}[30m])
2021年5月22日

说说常见数据库及中间件的主从设计

前不久在工作过程中用到了kafka中间件,简单来说是个消息队列,除了支持高吞吐量、发布订阅等功能外,它还支持回放,我可以通过修改偏移量重新获取数据,这个功能是一个非常常见的使用场景,也是我选择kafka的一个重要原因。但kafka追随者副本不对外提供服务,乍看起来,令人百思不得其解,MySQL、redis都可以使用通过读从节点从而分摊主节点的压力。为什么kafka不这样设计呢?究其原因它的设计思路是读自己的写以及单调读,这种做法就不会因为读取follower的数据而导致的数据不一致。相信我们在使用MySQL或者redis的时候就经常碰到一个问题就是在从多个从节点查询数据时,某条数据一会存在一会不存在的问题,当然MySQL和redis也是有对应的解决方案,这个我们后面在说。kafka的从节点的存在有什么意义?毫无疑问提供数据冗余、主从切换。kafka的follower自动从leader拉取消息,kafka会把符合时间间隔标准的follower添加到ISR同步集合中。当leader宕机后,就会从ISR集合中选举一个follower升级为leader。那么到底以什么标准进行选举呢?这个标准就是Broker端参数replica.lag.time.max.ms参数值。这个参数的含义是Follower副本能够落后Leader副本的最长时间间隔,当前默认值是10秒。这就是说,只要一个Follower副本落后Leader副本的时间不连续超过10秒,那么Kafka就认为该Follower副本与Leader同步的,即使此时Follower副本中保存的消息明显少于Leader副本中的消息。我们在前面说过,Follower副本唯一的工作就是不断地从Leader副本拉取消息,然后写入到自己的提交日志中。如果这个同步过程的速度持续慢于Leader副本的消息写入速度,那么在replica.lag.time.max.ms时间后,此Follower副本就会被认为是与Leader副本不同步的,因此不能再放入ISR中。此时,Kafka会自动收缩ISR集合,将该副本踢出ISR。值得注意的是,倘若该副本后面慢慢地追上了Leader的进度,那么它是能够重新被加回ISR的。这也表明,ISR是一个动态调整的集合,而非静态不变的。可能我们第一感觉总是当然是根据消息的落后数量了,但是其实不是的,其主要原因是时间这个参数很难给出一个合适的值,比如以默认值4000为例,如果我的tps是10,那么这个值就没有任何参考意义,因为太大了;如果tps是2000,那么一定会引起ISR集合的频繁变动,所以kafka从0.9x废弃了该参数。如果所有的副本延时都比较大,ISR集合中没有一个副本,该怎么办?其实我们可以通过配置至少存在一个副本或者开启Unclean选举。Kafka如何保证leader和Follower之间的数据一致性呢?
2021年5月15日

谈谈对K8S CNI、CRI和CSI插件的理解

K8S的设计初衷就是支持可插拔架构,解决PaaS平台不好用、不能用、需要定制化等问题,K8S集成了插件、附加组件、服务和接口来扩展平台的核心功能。附加组件被定义为与环境的其他部分无缝集成的组件,提供类似本机的特性,并扩展集群管理员可用的组件,扩展还可以用于添加自定义软硬件的支持;服务和接口提供了看似繁琐和冗余的设计(比如我们常见的PV、PVC、SC),实际上为开发人员提供了更多的可扩展性。在本文中,我们将更多地关注K8S提供三个特定功能的接口插件:运行时插件、存储插件和网络插件。更具体地说,我们将讨论容器网络接口(CNI)、容器运行时接口(CRI)和容器存储接口(CSI)如何扩展K8S的核心功能,以及它对定制服务的支持。网络插件CNI
2021年5月9日

HPA|聊聊K8S的横向扩容能力

HPA似乎很简单。我通过遵循所有的文档来启用它。但它对我不起作用!这是真的,HPA(水平Pod自动定标器)不工作的某些应用或者是应用程序所有者做了什么错误的事情,破坏了HPA?继续往下读吧。在继续讨论这些问题之前,让我们简要了解一下通常如何为应用程序配置HPA。HPA基本功能
2021年4月20日

如何使用Prometheus和Grafana监控多个Kubernetes集群

ingress.domain=orion-equinix.prometheus.example.com安装这个chart能够得到以下结果:一个装有inlets
2020年12月31日

并非每个容器内部都能包含一个操作系统

在没有探讨是否包含操作系统之前,大家一起来看两张图片,如下所示:很容易可以辨别出,图一docker引擎画在了应用底部,类似于虚拟机的位置,docker虚拟化技术替代了虚拟机,更轻量级,看上去更容易理解和接受;图二docker引擎画在了应用的侧边栏,从图片上看,进程则是直接运行在虚拟机上,docker容器更多的是进行旁路式的辅助和管理;其它没什么区别,其中图一也是PPT和网上常见的作图方式,这种方式真的正确吗?下文揭晓。容器底层技术实现
2020年10月31日

Kubernetes安全挑战以及如何应对

背景线上环境使用Kubernetes已经有一段时间,Kubernetes通过提供一个可扩展的声明式平台来管理容器以实现高可用性,弹性和规模。但是Kubernetes是一个大型、复杂的平台;在规模扩大以后,Kubernetes平台自身身的安全问题如何解决?应该采取什么策略来保证应用的安全部署?下面我从四个方面说明如何缓解这些挑战。强化和合规使用Kubernetes时,您必须将注意力集中在默认情况下某些配置是否打开?例如,pod安全策略是保护多租户群集的关键,但该功能仍为beta,默认情况下未启用。功能丰富的Kubernetes平台可能会认为默认该功能具有挑战性,但是弄清楚默认功能是必不可少的。组织可以使用安全性基准来增强Kubernetes的安全性。例如,Internet安全中心提供了配置指南,以加强包括Kubernetes在内的系统以抵抗不断发展的网络威胁。列举出来Kubernetes集群面临的威胁有哪些?拥有这种清单可以一步一步的解决Kubernetes系统中存在的问题。但是,由于安全性始终与风险管理有关,因此组织需要评估某些设置对性能的影响,并权衡风险与收益。如果您没有人力或时间独自加强Kubernetes安全性。确保设置和维护集群所需的配置包括确保诸如始终通过HTTPS访问API服务器,使用X.509证书来认证平台组件之间的通信之类的事情、etcd数据存储加密等。管理好集群上的应用除了管理集群的配置之外,还需要管理集群上运行的所有应用编排文件。手动编写YAML文件对于大多数人来说并不容易,而且每次手动编写自定义YAML都是不现实的,也可能出现无法预料的问题。在Kubernetes集群中部署应用程序或修改配置设置。Helm图表和Kubernetes
2020年10月3日

让我们一起揭开Etcd背后Raft算法的面纱

背景最近在使用K8S过程中,一直用到了一个Key-Value数据库Etcd,每当看到有介绍Etcd的教程时,介绍不多,大多都是独立于K8S集群之外,保存状态数据。再深入百度下,发现Etcd是一个可靠的,分布式的Key
2020年9月5日

白话K8S核心组件概念

SecretKubernetes入门培训(内含PPT)从Ice到Kubernetes容器技术,微服务架构经历了什么?原创不易,随手关注或者”三连“,诚挚感谢!
2020年8月19日

K8S集群模式下fluent-bit日志收集方案设计和实践

fluent-bit外部插件详解(三)下面我就直接介绍fluent-bit整体收集架构和插件,如果对整体有不理解的部分,可以参考如上链接。单纯的日志收集解决方案特别多,相对非常成熟,比如
2020年6月6日

如何使用 Ingress-nginx 进行前后端分离?

/soaw/(.*\.(html|htm|js|css|ico|png|jpg|gif|ipa|apk|eot|svg|ttf|woff|woff2))$
2020年5月7日

浅谈 fluentd 使用

作为开源的数据收集框架。C/Ruby开发,支持使用JSON文件来统一日志数据。可插拔架构,支持各种不同种类和格式的数据源和数据输出。最后它也同时提供了高可靠和很好的扩展性,fluentd
2020年4月28日

深入探究 K8S ConfigMap 和 Secret

形式映射到容器内部指定目录上;容器中应用程序按照原有方式读取容器特定目录上的配置文件。在容器看来,配置文件就像是打包在容器内部特定目录,整个过程对应用没有任何侵入。3、ConfigMap
2020年4月17日

Jenkins 配合 Kubernetes 实现服务持续集成的实践和建议

跨节点网络通信机制演进Kubernetes入门培训(内含PPT)从Ice到Kubernetes容器技术,微服务架构经历了什么?原创不易,随手关注或者”在看“,诚挚感谢!
2020年4月3日

云计算交付模型知多少 - IaaS、PaaS、SaaS

对于互联网公司而言,迁移到云是一个明智的决定。它减少了总的成本支出,同时最大限度地提高了工作效率和生产率,本文将指出迁移到云或者建设私有云优缺点以及边界在哪里?1、什么是云计算云计算(cloud
2020年3月26日

docker bridge 到 k8s pod 跨节点网络通信机制演进

k8s_sp_nginx-deployment-84b5d9cb66-hkfp6_default_5c27af26-6b7e-11ea-8d03-70fd45ac3f1f_0f245174b9a51
2020年3月22日

DevOps实践带来的好处和挑战

「本文主要讲解了实施DevOps整个流程以及应对方法」随着越来越多的企业争相借助技术手段来击败竞争对手,软件开发已不仅仅是一项可靠的投资。它是现代企业的主要收入渠道和主要战略手段。这就是为什么确保产品的质量、性能和安全性以及快速上市的时间至关重要。在过去的十年中,世界各地的企业和软件开发团队一直依靠敏捷方法来提高团队效率和适应性。但是,随着对软件产品商业价值的日益关注,传统方法已不够。需要一种更有效的方式来构建和部署软件。结果,DevOps
2020年3月15日

DevOps成就卓越

功能特性被称为软件交付功能特性,以区分软件交付工作与IT服务台和其他支持功能。这是一个值得欢迎的变化,人们期待已久。另外一个关键变化是增加了操作度量来完成软件交付周期。该报告重点介绍了五个被称为
2020年3月8日

K8S集群模式下fluent-bit日志收集方案设计和实践

fluent-bit外部插件详解(三)下面我就直接介绍fluent-bit整体收集架构和插件,如果对整体有不理解的部分,可以参考如上链接。单纯的日志收集解决方案特别多,相对非常成熟,比如
2020年3月7日

Kubernetes里的Service究竟是如何工作的呢?

"本文将为你介绍Service在Kubernetes集群中的价值和作用"Service是Kubernetes接入层的一种抽象资源,它为我们提供了一种固定的、统一的访问接口地址和负载均衡能力,这时可能会想到,当时使用docker-compose的时候,不存在Service概念,不也运行起来了吗?是的,在Kubernetes集群内部Pod
2020年3月1日

终究,还是要为技术债务交税

"本文将分享为什么要为技术债务付出一定时间成本,否则你将付出不可估量的代价"现状(一)如果有一天技术老大告诉管理层,最近两周应用不会发布任何新特性,所有技术人员要投入到重构、自动化工作、非功能性需求以及架构优化保证服务的可扩展性、可运维性、可测试性以及安全性等,老板们肯定感觉不可思议,这些一开始不都已经完成了么?大多企业都对紧密耦合的单体架构深恶痛绝,事实上,在产品生命周期的初期阶段,单体架构往往是最佳选择,它能够快速实现市场和产品的高度契合,当企业用户规模扩大后,这样的架构又存在很大隐患;但没有一个可以适用于所有产品和规模的完美架构,任何一个架构只能满足特定的一组目标、需求或条件。随着时间的推移、任何产品或者服务的特性要与时俱进;架构也一样,那些在普通规模下设计的架构,很少能在10或100倍用户下继续有效。如何改变这种现状呢?(二)
2020年2月28日

云时代的运维正是不折不扣的架构师

来赞美张良雄才大略,指挥若定,现在还让我用的话,我会把这句话送给运维同学。2013年左右,一朋友在某某国企做运维,除了拆机、装机、做系统、协助领导上网站、打印资料.....
2020年2月19日

轻量级日志收集转发 | fluent-bit外部插件详解(三)

total=32805608入门介绍:您可以从命令行或通过配置文件运行插件;命令行模式收集cpu运行指标信息:fluent-bit
2020年2月15日

面对海量日志,为什么选用fluentd作为核心组件?

"本文主要讲解了fluentd的为什么选用fluentd作为核心组件,它的优势是什么"1、前言我是标题党,所谓佛无南北,架构没有好坏之分,只有是否合适的区别,比如常常被人诟病的单体架构,耦合性高,可扩展性低。事实上,特别对于有成本考虑的初创企业,单体架构常常是最佳选择,因为简单,它能快速帮助企业完成产品和市场的高度契合,但是当企业的用户规模扩大后,这样的架构往往又成为隐患。话又说回来了,没有一个可以适用于所有的产品和规模的完美架构,任何架构只能完成特定的一组目标,或者一系列的需求和条件。随着时间的推移,为了与时俱进,任何产品或者服务功能需要完善,架构也一样,那些在普通用户规模下的架构很少能在100倍规模下有效。fluentd也一样,当存在多种多样数据源和存储目标时比较合适,因为它支持500+插件进行日志输入输出,特别是大多数数据源都是自定义的应用,你会发现fluentd和这些应用结合起来的能力比其它日志收集框架要简单有效。2、性能fluentd的性能已经在各个领域得到了证明,其最大的用户可以从50000+服务器中收集日志,每天处理5TB的数据,峰值时每秒可以处理5万行数据,可以在客户端和服务端分别部署,客户端收集日志发送到服务端(目前大多采用fluent-bit作为客户端)3、架构fluentd是一个开源的数据收集器,它统一了数据的收集和使用。它的架构有以下特点(看上图说话):使用json统一日志格式可插拔的架构(灵活的插件功能,允许扩展功能)最少资源占用(C+Ruby编写)可靠性高4、社区支持fluentd目前由CNCF社区维护,大名鼎鼎的云原生计算基金会,云时代的操作系统Kubenetes就是由它发起和维护的。社区活跃,详情见下图:5、安装使用安装使用简单,支持多种安装方式,具体可以参考官网安装方式,最简单的方式就是直接通过镜像运行,使用方式,如下所示:1.
2020年2月15日

轻量级日志收集转发 | fluent-bit配置详解(二)

File文件包含为了避免复杂的长配置文件,我们可以把一个配置文件拆分为不同的配置文件,然后在主配置文件中包含其它配置文件。从fluent-bit
2020年2月12日

轻量级日志收集转发 | fluent-bit外部插件详解(三)

total=32805608入门介绍:您可以从命令行或通过配置文件运行插件;命令行模式收集cpu运行指标信息:fluent-bit
2020年2月12日

轻量级日志收集转发 | fluent-bit配置详解(二)

File文件包含为了避免复杂的长配置文件,我们可以把一个配置文件拆分为不同的配置文件,然后在主配置文件中包含其它配置文件。从fluent-bit
2020年2月10日

轻量级日志收集转发 | fluent-bit指令详解(一)

作为通配符。Match_Regex与传入记录标签匹配的正则表达式,如果要使用完整的正则表达式语法,请使用此选项。如下所示是OUTPUT的使用示例:[OUTPUT]
2020年2月8日

Kubernetes入门培训(内含PPT)

"本文主要从docker、docker-compose由浅到深介绍了Kubernetes核心功能,关注回复【ppt】获得演示文稿"1、DockerDocker是基于操作系统的沙盒技术,使得用户更简单和完整的去打包自己的应用。为了说明docker底层实现,现在介绍下面几个概念。docker底层是基于linux的操作系统级别的虚拟化技术LXC实现;LXC是通过CGroup实现了虚拟化资源管理,用来保证应用资源的隔离和应用系统资源的限制;服务器运行了多个服务,这些服务之间是可以互相影响的,其中的一个服务可以查看另外一个服务,这些是我们不愿意看到的,我们更希望同一台机器运行的服务能够完全隔离,互不影响就像运行在多台机器上一样。而linux为我们提供了NameSpaces为我们提供了分离进程树、网络接口、资源挂载点的方法,docker正是利用了linux的NameSpaces技术实现了不同容器间资源的隔离;如果我们进入docker命令进入容器内部会发现只能看到当前容器的目录而不能看到原系统的目录,而linux的chroot又称(change
2020年2月2日

一文了解日志收集工具fluent-bit

"本文主要对fluent-bit特性及使用场景介绍"1、简介fluent-bit是一种在Linux,OSX和BSD系列操作系统运行,兼具快速、轻量级日志处理器和转发器。它非常注重性能,通过简单的途径从不同来源收集日志事件。2、功能fluent-bit是一个开源的、多平台的、旨在成为像一把瑞士军刀一样进行日志收集和转发。它为我们提供一个终端到终端的解决方案,收集,存储和分析的基础架构。fluent-bit是此管道中是不可或缺的一部分,它可以解决日志收集需求。作为一个开源项目,它已被广泛采用,fluent-bit能够胜任和解决docker和Kubernetes等关键组件的云服务日志记录需求。3、fluent-bit工作原理fluent-bit是一个简单日志收集工具,上图就是对它工作流程的全局概述,它通过输入、转换、过滤、缓冲、路由到输出而完成日志的收集。4、为什么使用fluent-bit如今,我们环境中的信息源数量正在不断增加,数据收集和日志转发很困难,大规模处理数据收集非常复杂,并且收集和汇总各种数据需要一个专门的工具来处理:不同的信息来源。不同的数据格式。多个目的地。fluent-bit出于满足对高性能的需求和优化工具,它可以从任何输入源收集数据,统一的数据并将其发送到多个目的地而且支持delimiter、key-value、json等主流格式。比如我们常见的logstash耗费资源严重,filebeat可以作为轻量级日志收集工具,目前只能对接对接到ES、logstash、kafaka、redis而且对数据处理能力有限必须配合大数据平台使用(具体查看:Kubernetes日志收集解决方案)。fluent-bit兼具filebeat的功能,但是filebeat不具备fluent-bit数据处理和路由转发能力,如果我只想简单收集日志,filebeat不能满足,具体请查看:Kubernetes集群环境下fluentd日志收集方案介绍5、fluentd和fluent-bit的关系及特性日志收集场景和需求是多变的,为了满足日志收集的灵活性,我们会根据需求选择不同的插件,比如:ELK常见解决方案Kubernetes日志收集解决方案,当前我们主要介绍fluentd和fluent-bit两个开源项目之间的关系及特性,fluentd和fluent-bit都是有Treasure
2020年1月27日

日志收集工具fluentd安装配置及使用介绍

)是一款RVM的命令行工具,可以使用RVM轻松安装,管理Ruby版本。RVM包含了Ruby的版本管理和Gem库管理(gemset)[root@k8s-master
2020年1月23日

Kubernetes集群环境下fluentd日志收集方案介绍

"本文主要介绍了CNCF官方社区轻量级日志收集工具"1、介绍前段时间写了一篇日志收集方案,Kubernetes日志收集解决方案有部分读者反馈说,都是中小企业,哪有那么多资源上ELK或者EFK,大数据这一套平台比我自身服务本身耗费资源还要多,再说了,现阶段我的业务不需要格式转换,不需要数据分析,我的日志顶多就是当线上出现问题时,把我的多个节点日志收集起来排查错误。但是在Kubernetes平台上,pod可能被调度到不可预知的机器上,如果把日志存储在当前计算节点上,难免会出现排查问题效率低下,当然我们也可以选用一些共享文件服务器,比如GFS、NFS直接把日志输出到特定日志服务器,这种情况对于单副本服务没有任何问题,但是对于多副本服务,可能会出现日志数据散乱分布问题(因为多个pod中日志输出路径和名称都是一样的),下面我介绍通过CNCF社区推荐的fluentd进行日志收集。2、对比使用fluentd日志收集之前:使用fluentd日志收集之后:看到这张图片之后就被fluentd架构清晰程度吸引了;3、fluentd和fluent-bit介绍fluentd是一款开源的日志收集工具。基于ruby和C编写,它拥有非常多的插件,可以满足的我们对各种格式的日志进行收集,过滤,解析等。把日志信息变成我们想要的格式。并且,没有找到满足我们的插件,我们可以自己写插件。fluentd收集日志时,将所有日志看做JSON格式的数据。并且用正则表达式去匹配日志。fluentd自带丰富的日志收集格式。以及可以将日志收集到各种存储的数据库。fluentd有7种类型的插件:输入、解析器、过滤器、输出、格式化程序、存储和缓冲区。总结下Fluentd是一个集数据的收集、过滤、聚合处理、转发、接收为一体数据收集器。Fluend-bit是Fluentd的精华版本,纯C编写、大小450kb,更轻量级,主要支持数据的收集和处理功能。4、收集步骤其中fluent-bit充当客户端,fluentd充当服务端,客户端定时根据某种特定策略收集日志传递到服务端,服务端存储日志,这一次不在说ES或者Kafaka,而是直接把日志文件集中收集存储磁盘文件中,当然大数据分析和展示工具fluentd本身是支持的,而且fluentd支持高可用配置。5、收集方式每个节点以Kubernetes中DaemonSet形式运行fluent-bit,在各个节点进行日志收集,收集完成后发送到fluentd进行统一日志处理和存储。这种方式结构简单清晰,但是收集较为粗略,如果说一个pod的多个副本运行在同一个节点上,可能会出现日志交叉打印问题,当然我们也可以在yaml中配置约束条件,同一个pod调度到不同计算节点,限制这种情况出现。通过sidercar方式运行fluent-bit,编写业务yaml的同时,把fluentd-bit追加进去,这种收集日志较为详尽,可以收集到pod中container信息,但是会出现跟业务耦合的问题。具体如何选择还要看业务场景收集日志详细程度。6、示例fluentd-bit客户端日志收集配置[SERVICE]
2020年1月17日

Kubernetes日志收集解决方案

"本文主要讲解在kubernetes集群环境下日志收集组件选型及方案"1、需求来源在大规模集群部署的场景下,容器实例会部署到多个节点上,节点以及节点上的应用产生的日志会随之分散在各个容器的主机上,传统的集群应用大多在本地持久化,这给整个应用系统的日志监控和故障排除带来了很大的挑战,而在Kubernetes大规模集群环境下,需要考虑把分散在各个节点上的日志统一采集,统一管理,统一展示。2、日志来源主机内核日志主机内核产生的错误日志通常可以帮助开发者诊断因为主机或者OS异常而带来的服务异常,比如网络异常,文件系统异常等。核心组件日志docker的日志帮助用户查看pod内部容器的运行状态、APIServer的日志,Scheduler产生的日志能够帮助用户查看Kubernetes本身运行产生的日志。应用自身日志通常业务升级或者在某种场景下出现异常,可以通过日志进行排查。3、日志收集方式宿主机文件Pod应用的数据存储在宿主机文件系统中,比如我们通过hostpath声明把业务日志存储在某个目录下,通常会在每个节点上以DaemonSet形式部署fluentd或者filebeat,将宿主机的文件系统挂载到fluentd或者filebeat
2020年1月6日

从Ice到Kubernetes容器技术,微服务架构经历了什么?

本文主要讲解了从第一代微服务架构,到以springcloud为代表的第二代微服务架构,再到k8s为代表的容器技术服务架构的演进过程。1、ICE分布式基础架构平台服务编排:服务编排主要有icegrid采用xml的方式进行定义服务部署拓扑,通过命令行工具一键发布;服务管理:icegrid中的服务运行在icebox容器中,由容器管理服务的整个生命周期,包括启动,停止,升级等过程;服务注册:服务注册主要有iceRegistery完成,并且一主一从,防止单点故障。负载均衡:采用客户端负载均衡机制,在客户端sdk中内嵌实现,无需编程,具有基于主机负载,轮询等多种方式;运维平台:基于命令行和java
2019年12月31日

Kubernetes中如何使用ClusterDNS进行服务发现?

在创建pod资源时,kubelet会将其所属名称空间中的所有service对象以环境变量的形式注入其中。如下所示:[root@nginx-deployment-745fd7c98d-2xj9r
2019年12月26日