自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

叶康铭的博客

传播云计算及云原生的知识

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

原创 不必惊慌 - Docker 与 Kubernetes 何去何从

Kubernetes 最新发布的 1.20 版本中弃用未来对 Docker 支持,特指不再维护支持 Docker 的代码,而不是直接在 1.20 版本中弃用 Docker 作为容器运行时的支持。不必惊慌,根据 Kubernetes 发布周期,最快也是计划在 Kubernetes 1.22 版本弃用 Docker 作为运行时的支持,也就是 Kubelet 弃用 Dockershim。为什么要弃用 DockerDocker 作为容器引擎实现技术的代表在一开始就被人们所熟知,在工作中无论是构建开发环境,还.

2020-12-07 09:08:51 1975 1

原创 GitLab WorkFlow

在团队开发中,为了更好的协作,通常会采用一些工作流来最大程度提升效率。生产一个软件工序是比较复杂的,如果通过一个好的逻辑顺序去应用到一个软件开发的生命周期过程是非常重要的。GitLab WorkFlow从构思到上线的十步想法:每一个新建议都从一个想法开始,可以尝试下头脑风暴等聊天的形式。问题:讨论想法的最有效方法是为其提出问题,例如是否可实现。计划:讨论如果达成一致的意见,就需要确定实施细节及优先级。代码:一旦有了任务就可以开始编写代码了。提交:针对需求编写的代码完成后就可以提交到功能分.

2020-10-24 00:02:02 3423 2

原创 GitLab CI Pipeline

GitLab 不单单只是作为一个代码版本控制的仓库,很多场景下使用 GitLab 作为整合 CI 持续集成就 CD 持续发布的工作平台,那么就是 GitLab 的 CI Pipeline 功能了。CI Pipeline试想一下,如果开发人员只需要编写代码,而编译、打包、测试等等集成的事情以及将打包后的线上全部交付给机器自动化去完成,那对效率是不是有极大的提高呢。什么是 CI (Continuous Integration)持续集成是指开发人员会持续的将代码更改提交到代码仓库中,更改会触发编译、.

2020-10-24 00:01:43 5955 1

原创 GitLab Issue

如何快速去追踪目前项目进度或者查看项目成员的工作安排呢,在协作开发的场景下,通常使用由 PM 或者 Team Lead 将 Task 委派给 Developer。GitLab Issue通常使用 GitLab Issue 去登记新增的功能需求,或者目前系统存在的缺陷等。通过结合 Board 就更加直观的了解到目前项目进度。通过项目下的 Issue 功能即可创建,一般除了基本的描述信息之外,还需要指定处理人,里程碑,标签,截止日期等信息。标签(Lable)标签是根据不同 Issue 进行分类.

2020-10-24 00:01:34 4404

原创 GitLab Admin Area

GitLab 最核心且最重要的安全问题就是关于用户和项目的管理,有很多的源码泄露问题都是由于对于权限的把控等细节做得不好导致的。这篇将介绍 GitLab 的 Admin Area 功能,以及对用户和项目的一些设置。Admin Area在自托管的 GitLab 服务中,关于 GitLab 系统的变更,都是可以经过 Admin Area 完成设置的。用户管理如果是内部开发角色的用户,授予 Regular 身份,但如果是外部顾问的形式,则在需要勾选 External 限制对项目的访问及创建项目等,除.

2020-10-24 00:01:15 3731 7

原创 GitLab 玩转自动化部署

在开发过程是频繁需要和代码仓库交互的,例如 GitHub,GitLab等,如果代码仓库不单单只是拥有托管代码的能力,甚至可以帮助实现自动化测试,自动化部署,那听起来不是非常的酷吗。关于 GitLab强大的功能Gitlab 不单单是一个代码托管的 VCS 版本控制系统,其他例如 CI/CD Pipelie,Wiki,Issue Tracking,Kanban 等等都是极少数人所知,但却可以极大提高软件的开发效率及部署效率的。CE 与 EE 版本GitLab 分为两个版本,GitLab CE(社.

2020-10-24 00:01:05 2269 1

原创 Beat 修改 Index 踩坑记录

问题:更改 Beat 中关于 Index 的设置报错:setup.template.name and setup.template.pattern have to be set if index name is modified原因: 需要指定 setup.template.name 以及 setup.template.pattern 这两个配置后才能修改 Indexoutput.elasticsearch: hosts: ["http://elasticsearch:9200"] usern

2020-10-21 17:07:19 4317 1

原创 APM 追踪 Java 应用性能

在分布式系统下,如何去发现某一些服务的工作性能情况,以及追踪一次会话相关的服务调用呢,通过 Elastic APM 服务,就可以很简单的对不同开发语言的程序进行统一监控。架构设计涉及到 Elastic Stack 中 Metricbeat 是用于采集 Kubernetes 相关的性能指标, Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。本例子采用 Java 开发语言,由于 Java Agent 是在 Class 被装载到 ClassLo.

2020-10-21 15:34:06 2155

原创 APM Server 部署安装 (Docker)

为什么要使用 Docker来部署 APM Server 呢,传统使用软件在操作系统上安装和配置的方法过于繁琐,并且受一些跨平台的约束,例如Mac、Windows、Linux等,所以无论安装什么软件,通过 Docker 进行部署是最为简单并且便捷的。APM启动容器docker run -d --user=root --name=apm-server --link elasticsearch -p 8200:8200 docker.elastic.co/apm/apm-server:7.9.2参数.

2020-10-21 15:33:44 3773

原创 Filebeat 采集 Kubernetes 日志

由于容器的特性,在容器重新创建后日志会废弃掉,如何通过持久化和中心化的处理容器日志变成一个棘手的问题,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?架构设计涉及到 Elastic Stack 中 Filebeat 是用于采集 Kubernetes Pod 相关的日志,Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。在 Docker 中容器的日志是存储在/var/lib/.

2020-10-20 15:49:49 2619

原创 Metricbeat 采集 Kubernetes 指标

Kubernetes 本身命令行界面去管理集群内的资源对象,例如有需求想查看某一些Pod在任意的时间段性能的使用情况,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?架构设计涉及到 Elastic Stack 中 Metricbeat 是用于采集 Kubernetes 相关的性能指标, Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。首先 Kubernetes 需要部署 .

2020-10-20 15:49:35 2083

原创 Metricbeat 采集 Docker 指标

Dokcer本身命令行界面去管理集群内的资源对象,例如有需求想查看某一些容器在任意的时间段性能的使用情况,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?架构设计涉及到 Elastic Stack 中 Metricbeat 是用于采集 Docker 相关的性能指标, Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。通过将宿主机的 Docker 套接字映射到 Metricbe.

2020-10-20 15:49:23 2668

原创 Filebeat 采集 Docker 日志

由于容器的特性,在容器重新创建后日志会废弃掉,如何通过持久化和中心化的处理容器日志变成一个棘手的问题,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?架构设计涉及到 Elastic Stack 中 Filebeat 是用于采集 Docker 相关的日志, Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。在 Docker 中容器的日志是存储在/var/lib/docker/c.

2020-10-20 15:49:18 4963 1

原创 Metricbeat 采集 Nginx 指标

Nginx 状态页可用于分析目前的服务健康状态和负载,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?架构设计涉及到 Elastic Stack 中 Metricbeat 是用于采集 Nginx 相关的性能指标, Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。在 Nginx 中相关的状态页面需要通过打开 http_stub_status_module 这个模块获取,在编译.

2020-10-20 15:48:41 1994

原创 Filebeat 采集 Nginx 日志

Nginx 日志可用于分析用户地址位置,行为画像等,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?架构设计涉及到 Elastic Stack 中 Filebeat 是用于采集 Nginx 相关的日志, Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。在 Nginx 中相关的日志是存储在 /var/log/nginx 目录下的,分别是访问日志 access.log,错误日志.

2020-10-20 15:48:29 3967 12

原创 Elasticsearch 倒排索引原理

Elasticsearch 最强悍的功能之一就是全文检索,如何可以做到呢,其实本质上的原理就需要用的倒排索引了,本文将探索一下倒排索引的工作原理。正排索引 (Forward Index)根据 ID 去找到对应的文档倒排索引 (Inverted Index)根据 内容 去找到对应的文档工作原理通过标记位匹配,找到相关度最高的词进行评分后输出同样的场景下对文本进行搜索,正排索引的时间复杂度为O(n),意思就是有多少条数据就得扫描多少次,但倒排索引的时间复杂度为只需要O(1),意思就是扫描.

2020-10-17 08:11:27 1873 1

原创 Elasticsearch 英文分词 & 中文分词

对于倒排索引来说,很重要的一件事情就是需要对文本进行分词,经过分词可以获取情感、词性、质性、词频等等的数据。Elasticsearch 分词工作原理在 Elasticsearch 中进行行分词的需要经过分析器的3个模块,字符过滤器将文本进行替换或者删除,在由分词器进行拆分成单词,最后由Token过滤器将一些无用语气助词删掉。英文分词在Elasticsearch 中共支持5种不同的分词模式,在不同的场景下发挥不同的效果。standard (过滤标点符号)GET /_analyze{ ".

2020-10-17 07:53:56 6601 2

原创 Elasticsearch DSL - CRUD

Elasticsearch 支持 JSON 格式的操作数据,它就是 DSL (Domain Specific Language),通过将查询的 DSL 看待成 AST (Abstract Syntax Tree),其中包括叶子查询子句(单一逻辑)及复合查询子句(组合逻辑)。以下操作都在 Kibana Dev Tools 中进行实践。索引(Index)创建索引# 创建索引PUT materiel{ "settings" : { "number_of_shards" : 3, .

2020-10-17 07:51:26 1541 1

原创 Elasticsearch Document & Type & Index

要了解Eleasticsearch,首先就要从基本的对象进行了解,这一篇是介绍什么是文档(Document),什么是类型(Document Type),什么是索引(Index),如何去创建和使用。文档(Document)文档是 Elasticsearch 中可被搜索的最小单位,文档由多个字段的值组成,通过序列化 JSON 格式保存在Elasticsearch中,每一个文档都有唯一的ID。例如个人的简历、歌曲的详情等等都可以存储在文档中。文档元数据用于标注文档的相关信息_index :文档所属的.

2020-10-17 07:49:59 3044

原创 Elasticsearch Mapping & Setting

Mapping & Setting 是 Index 最重要的组成部分,Mapping 定义了 Index中的字段名称以及字段类型等信息, Setting 则定义了 Index 分片数量及副本数量等信息,通过了解 Mapping 和 Setting,可以更加合规的去设计 Index。Node一个节点就是一个Elasticsearch 实例,在操作系统层面看实质上就是一个进程,节点在启动时就拥有成为主节点的资格(Master Eligible),经过选举后每一个Master Eligible节.

2020-10-16 13:54:29 1811 1

原创 Elasticsearch & Kibana 部署安装 (Kubernetes)

为什么要使用 Kuberentes 来部署 Elasticsearch 和 Kibana 呢,在实际的生产环境中,大部分都是使用 Kubernetes 来进行应用的托管,因为通过 Kuberentes 的一些高级功能,很轻易的实现服务发现,故障自愈,水平扩容等等的好处。ElasticsearchapiVersion: apps/v1kind: Deploymentmetadata: labels: app: elasticsearch name: elasticsearch-d.

2020-10-16 07:38:32 1713 1

原创 Elasticsearch & Kibana 部署安装 (Docker)

为什么要使用 Docker来部署 Elasticsearch 和 Kibana 呢,传统使用软件在操作系统上安装和配置的方法过于繁琐,并且受一些跨平台的约束,例如Mac、Windows、Linux等,所以无论安装什么软件,最好通过 Docker 进行部署是最为简单并且便捷的。Elasticsearch启动容器docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v.

2020-10-15 07:54:36 1938

原创 ELK Stack & Elastick Stack

ELK 是什么呢?ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是搜索和分析引擎,Logstash 数据采集和处理的工具,Kibana 是与 Elasticsearch交互使数据可视化的工具。在2015年,Elastic公司在 ELK Stack 中加入轻量级的采集工具 Beats,那就是现在的 Elastic Stack了。ElasticsearchElasticsearch 在2010年首次发布

2020-10-14 08:44:18 1510 1

原创 Istio 跨站策略 (TrafficManagement - CorsPolicy)

出于安全考虑,浏览器通过跨域资源共享CORS(Cross Origin Resource Sharing)机制克允许web应用服务器进行跨域访问控制,使跨域数据传递安全进行。在实现上是在HTTP Header中追加一些额外的信息来通知浏览器准许以上访问。什么场景需要用到跨域策略通常,会利用CORS进行跨域访问控制,例如允许哪一些资源被哪一个域名进行跨域访问,以及可以定义资源的访问方式和生命周期。通过例子来理解nginx 服务上 部署的是 yekangming.com 中的页面,在页面中需要引.

2020-10-11 10:58:25 1953

原创 Istio 故障注入 (TrafficeManagement - Fault Injection)

Istio 故障注入与其他在网络层引入错误(例如延迟数据包或者直接杀死 Pod)的机制不同,Istio 允许在应用程序层注入故障。这使得可以注入更多相关的故障,比如 HTTP 错误代码等。注入故障类型Istio 可以注入两种类型的故障,而这两种故障都是使用虚拟服务来配置的:使用故障注入时,不能启用超时和重试通过delay和abort两个字段设置延时和中止两种故障通过例子来理解延迟故障注入描述请求延时,模拟网络、远端服务负载均衡等各种原因导致的失败fixedDelay:一个必选字段.

2020-10-10 17:58:30 1967

原创 Istio 断路器 (TrafficManagement - Circuit Breaker)

断路器也成服务熔断,在多个服务调用的时候,服务A依赖服务B,服务B依赖服务C,如果服务C响应时间过长或者不可用,则会让服务B占用太多系统资源,而服务A也依赖服B,同时也在占用大量的系统资源,造成系统雪崩的情况出现。 Istio 断路器通过网格中的边车对流量进行拦截判断处理,避免了在代码中侵入控制逻辑,非常方便的就实服务熔断的能力。什么场景需要用到超时处理微服务场景下,在多个服务调用的时候,服务A依赖服务B,服务B依赖服务C,如果服务C响应时间过长或者不可用,则会让服务B占用太多系统资源,而服务A也依.

2020-10-10 07:38:35 1619

原创 Istio 超时处理 (TrafficManagement - Timeout)

超时是为了解决长时间或者无限期的等待造成服务不可用,通常需要在代码中植入此类的网络层面的弹性处理逻辑,但通过 Istio 就可以使用 Vitual Sevice来优雅的实现超时的处理。什么场景需要用到超时处理在生产环境中经常会碰到由于调用方等待下游的响应过长,堆积大量的请求阻塞了自身服务,造成雪崩的情况,通过通过超时处理来避免由于无限期等待造成的故障,进而增强服务的可用性。通过例子来理解nginx 服务设置了超时时间为3秒,如果超出这个时间就不在等待,返回超时错误httpd 服务设置了响应时.

2020-10-09 07:35:44 1842

原创 Istio 服务重试 (TrafficeManagement - Retries)

Retries 是在服务请求的过程中产生异常后最简单的处理方法,就是让服务再次重试,通过重试可以提供服务的可用性和健壮性。什么场景需要用到重试重试是解决很多请求异常最直接、简单的方法,尤其是在工作环境比较复杂的场景下,克提高总体的服务质量。重试使用不当也会有问题,最糟糕的情况是重试一直不成功,反而增加延迟和性能开销。所以根据系统运行环境、服务自身特点,配置适当的重试规则显得尤为重要。通过例子来理解nginx 服务访问 httpd 服务,但 httpd 服务由于自身故障错误响应 nginx 服务.

2020-10-08 23:47:32 1878 1

原创 Istio 重写 (TrafficeManagement - Rewrite)

HTTP Rewrite 将请求转发给目标服务前修改HTTP请求中指定部分的内容,这个不同于重定向,重定向对用户是可见,重写对用户是不可见的,因为是在服务端进行的。什么场景需要用到重写在生产环境中,经常有一些 url 变更的需求,同时又需要做到对请求透明友好,又或者是类似一些 url 路径需要起多一个别名的效果,都是可以通过重写去简单的实现。通过例子来理解对于 httpd-service 匹配到前缀是 /check 的请求都会被重写到 nginx-service 的 /api/health,同.

2020-10-08 16:04:32 3004

原创 Istio 重定向 (TrafficManagement - Redirect)

HTTP Redirect 指的是将请求到原目标服务的流量重定向到给另外一个目标服务,客户端请求时不用更改任何方式从而访问到重定向后的目标服务。什么场景需要用到重定向例如当前使用的服务发生的变更,需要到新的服务才可以提供访问,在不更变用户原始请求的情况下,通过重定向就可以很好的去解决了这个问题。通过例子来理解对于httpd-service 匹配到前缀是 /check 的请求都会被重定向到 nginx-service 的 /api/healthapiVersion: networking.is.

2020-10-08 07:44:10 2117

原创 Istio 流量镜像 (TrafficManagement - Mirror)

HTTP流量镜像指的是将流量转发到原目标服务的同时将流量给另外一个目标服务,请求正常的关注原始服务,而等待不用镜像的流量返回。什么场景需要用的流量镜像例如上线了新的版本,但对于可靠性不是很有信心,可以将请求的流量将传入当前使用的版本镜像到新的版本来测试,对当前使用的版本不会产生影响,同时也可以测试到新版本的性能等方面。通过例子来理解目前是使用的v1版本的api,由于业务需求新增v2版本的api,但v2没有经过完整的测试,SRE团队对于上线后不是很有信心去确保可靠性。所以采取了流量镜像针对v1版本.

2020-10-07 22:31:32 2407

原创 Istio 服务条目 (Service Entry)

服务条目(Service Entry)是 Istio 重要的资源对象之一,作用是将外部的资源注册到 Istio 内部的网格服务中来,以提供网格内对外部资源的更加精细化的控制。什么情况下会用到 Service Entry在服务调用过程中会使用到外部的服务,例如微信、支付宝的付款服务,这个服务和本身集群内的服务无任何关系,通过服务条目将该服务注册到 Istio 网格,在集群内部就好像访问自身的服务一样,结合虚拟服务、目标规则进而通过一些高级的治理能力,例如限流、重试等等对服务治理能力支持。通过例子来理.

2020-10-07 07:39:03 4219 1

原创 Istio 入口网关 (Ingress Gateway)

入口网关(Ingress Gateway)是 Istio 重要的资源对象之一,是用于管理网格边缘入站的流量,通过入口网关就可以很轻松的将网格内部的服务暴露到外部提供访问。通过例子来理解apiVersion: networking.istio.io/v1alpha3kind: Gatewaymetadata: name: nginx-gwspec: selector: app: istio-ingressgateway servers: - port: n.

2020-10-06 07:54:48 6814

原创 Istio 目标规则 (Destination Rule)

目标规则(Destination Rule)是 Istio 重要的资源对象之一,它不能独自使用,必须跟 Virtual Service 共同发挥作用,作用是将流量标记分组并路由到具体服务。Destination Rule 还可以做什么通常在生产场景下,用使用 Destination Rule 对用户进行身份、地址位置等条件的识别后的流量路由,例如部分用户优先享用新版本,则可以通过HTTP Header附加相关的字段进行识别,路由到新版本的服务上。或者在版本更新的时候,使用灰度发布,对新旧版本标记子集.

2020-10-05 14:41:50 5161 2

原创 Istio 虚拟服务 (Vistrual Service)

虚拟服务(Vistrual Service)是 Istio 重要的资源对象之一,作用是将流量路由到网格中的服务。支持基于权重、http header条件等优先级的路由,比Kuberentes service对于流量的管控更加的丰富,颗粒度更加精细。...

2020-10-05 14:38:13 1978

原创 Fortio

什么是 FortioFortio这个名字来自希腊语φορτίο,意思是负载/负担。最初是Istio的负载测试工具,现在为独立的项目。Fortio是一个快速,小型(3Mb docker映像,具有最小的依赖性),可重用,可嵌入的go库以及命令行工具和服务器进程,该服务器包括简单的Web UI和结果的图形表示(均为单个延迟图)以及多重结果比较最小,最大,平均,qps和百分位图。fortio 部署wget https://github.com/fortio/fortio/releases/download.

2020-10-05 10:28:40 2698

原创 Istioctl 命令补全

istioctl命令补全

2020-09-21 22:07:49 2012

原创 Istio 升级更新

在Istio1.5及之后,架构方面产生大变化,控制平面已经回归到单体,对应在1.4升级到1.5的时候,有一些坑需要留意的。生产环境下,升级前请做好备份工作!

2020-09-21 22:01:15 2588

原创 Istio 流量劫持

不用修改本身应用的任何代码,就可以实现重试、重试、注册、发现、故障注入等等的能力,而且对开发语言、框架都是没有任何限定统一的技术栈的,那么为什么服务网格那么厉害可以做到那么透明呢,我们一起了解一下吧!

2020-09-21 15:06:25 1707 1

原创 Istio 注入原理

Istio通过注入边车使得本身的应用获取了一些高级能力,是如何完成边车的注入的呢?注入方式手动注入 - 针对具体的一个资源对象工作原理: 通过改写yaml文件植入Istio-proxy容器,以及init-container用于修改iptables规则。配置方法:istioctl kue-inject <deploy.yaml> -o <inject.yaml> | kubectl apply -f -自动注入 - 针对命名空间内的所有资源对象工作原理: 通过web

2020-09-21 09:43:51 2712 1

空空如也

空空如也

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

TA关注的人

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