云原生 & 微服务
文章平均质量分 68
Hugo Lei
这个作者很懒,什么都没留下…
展开
-
基于windows WSL安装Docker Desktop,修改默认安装到C盘及默认下载镜像到C盘
基于windows WSL安装Docker Desktop,修改默认安装到C盘及默认下载镜像到C盘。原创 2022-09-03 13:31:00 · 1133 阅读 · 1 评论 -
k8s使用的iptables,具体原理是什么?一学就会
不是我吹牛,真的一学就会。针对kube-proxy使用的iptables技术,本文图文并茂、深入浅出的解释了netfilter,rule,table,chain等,看似高深的概念,你现在也能完全掌握。原创 2022-08-05 16:11:38 · 1957 阅读 · 0 评论 -
go最佳实践:go模拟spring的依赖注入
背景使用过java的spring的依赖注入的朋友,一定会觉得由系统来实现单例并注入到要使用的地方,这个过程是极度舒适的。博主从java转go后,在某些场景的项目里,依然想使用类似spring的依赖注入的功能,但是go并没有这方面的框架支持。从博主使用go的体验来看,go是一门简洁且非常注重实用的语言。由于工作原因,博主看到一些老项目的代码里,对go的使用基本就是面向过程编程,连面向接口编程的思想都没有体现。在go中使用单例的两种常见方式全局变量例如包级别的全局变量,声明时直接初始化var原创 2021-07-26 17:48:28 · 943 阅读 · 0 评论 -
Mac docker x509: certificate signed by unknown authority
原因:https证书拉取私有镜像仓库的证书echo -n | openssl s_client -showcerts -connect xxxxxx:8080 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /Users/xxxx/xx.crt证书放在/Users/xxxx/xx.crt里加载证书sudo security add-trusted-cert -d -r trustRoot -k原创 2021-07-08 20:56:08 · 1642 阅读 · 0 评论 -
k8s deployment报错Invalid value:found a tab character that violates indentation
# deployments.apps "view-lib-task-server" was not valid:# * : Invalid value: "The edited file failed validation": [yaml: line 44: found a tab character that violates indentation, invalid character 'a' looking for beginning of value]#原创 2021-05-14 13:33:29 · 4559 阅读 · 0 评论 -
一文带你了解学习Istio的正确姿势
1 什么是 Istio?官方对 Istio 的介绍浓缩成了一句话:An open platform to connect, secure, control and observe services.翻译过来,就是”连接、安全加固、控制和观察服务的开放平台“。开放平台就是指它本身是开源的,服务对应的是微服务,也可以粗略地理解为单个应用。中间的四个动词就是 Istio 的主要功能,官方也各有一句话的说明。这里再阐释一下:连接(Connect):智能控制服务之间的调用流量...转载 2021-03-22 16:28:20 · 484 阅读 · 0 评论 -
Prometheus核心概念:你是如何在项目中使用Summary类型的Metric的?
目录1 背景2 微服务项目中如何监测请求耗时呢?3 使用Prometheus的Summary类型来统计HTTP请求耗时3.1 实践:如何使用Summary类型Metric?3.2 源码分析:Summary是如何计算分位数的?首先看Summary的定义再看Summary的实现如何计算分位数?4 Summary就这么简单?如果你对上述这些问题有答案,欢迎留言探讨。1 背景在微服务项目中,我们通常需要监测客户请求的耗时,进而掌握系统整体的性能情况。若发现某.原创 2021-02-08 12:30:21 · 5188 阅读 · 2 评论 -
Prometheus核心概念:一图了解Counter和Gauge两种数据指标类型的区别
目录1 背景2 何为Counter类型?2.1 Counter定义3 何为Gauge类型?3.1 Gauge定义4 Counter和Gauge的对比1 背景Prometheus整体架构分为Server端和Exporter端,而Exporter通常是基于官方的SDK开发(例如Go SDK)。这里要明确一个概念:数据指标类型只是Client端的一个概念,用于维护Metric的生产,以方便在业务上有所区分。而Server端是不区分数据类型的,因为所有的数据都是一种格式.原创 2021-02-02 21:01:03 · 18100 阅读 · 2 评论 -
Prometheus核心概念:一图了解瞬时向量Instant vector和区间向量Range vector的区别
1 背景我们在查询Prometheus的时候,通常有两种方式,一种是查瞬时的Metric采样数据,一种是查一段时间范围内的Metric采样数据。如果对这两种查询方式理解不到位,结果往往是对PromQL的一些内置函数的使用是错误的,或者查询的结果并不是自己预期的那样。那都是查Metric采样数据,查询瞬时和查询一段时间范围内这两种方式有什么区别呢?2 图解Metric和采样Prometheus和Exporter的关系在上一篇文章Prometheus源码分析:基于Go Client自定义的E原创 2021-01-30 11:07:15 · 7796 阅读 · 3 评论 -
Prometheus源码分析:基于Go Client自定义的Exporter,是如何在Local存储Metrics的?
目录背景什么是Exporter?Prometheus以轮询的方式Pull拉取MetricsTarget是如何在本地存储Metrics的?基于Go Client开发的ExporterCounter类型Metric源码分析声明Counter类型变量Counter类型定义counter.go WithLabelValues方法counter.goGetMetricWithLabelValues方法vec.goGetMetricWithLabelValues...原创 2021-01-22 16:03:29 · 4288 阅读 · 8 评论 -
MySQL Group Replication MGR 启动报错,Error in `/xxx/mysql/bin/mysqld‘: malloc(): memory corruption:
1 背景在物理机上装了k8s 在物理机上继续装MySQL 启动MySQL MGR 报错如下:*** Error in `/data/uncle/mysql/bin/mysqld': malloc(): memory corruption: 0x00007fd300026390 ***======= Backtrace: =========/lib64/libc.so.6(+0x82aa6)[0x7fd46dac9aa6]/lib64/libc.so.6(__libc_malloc+0x4原创 2021-01-14 17:08:23 · 570 阅读 · 0 评论 -
nginx静态资源文件无法访问,403 forbidden错误
问题浏览器访问nginx,然后nginx访问静态文件,结果提示403原因在nginx.conf的配置中,第一行 user nobody;但是静态文件都是root的解决修改nginx.conf配置,第一行改为user root;./nginx -t // 检查配置./nginx -s reload // 重启nginx...原创 2020-11-27 17:12:29 · 617 阅读 · 0 评论 -
如何优雅地实现定时任务?go定时任务库cron详解
目录可管理多个定时任务默认上次任务没运行完,下次任务依然会运行(任务运行在goroutine里相互不干扰)支持上次任务未执行完,下次任务不启动cron是一个定时任务管理框架,可以将服务中所有的定时任务统一管理起来。cron代码库:https://github.com/robfig/cron可管理多个定时任务多任务代码示例:c := cron.New(cron.WithSeconds())spec := "*/5 * * * * *" // 每隔5s执行一次,cron格.原创 2020-09-20 20:33:21 · 3102 阅读 · 0 评论 -
Docker Desktop for Mac设置代理proxy,加速镜像拉取
由于某些原因,国内拉取docker image速度极慢,甚至直接不通。使用Docker Desktop for Mac时,拉取镜像也会遇到相同的问题,因此需要配置代理来解决。在图中指定位置配置好自己的代理就可以了。试试看,代理是否生效?docker run -d -p 80:80 docker/getting-started...原创 2020-09-11 11:13:56 · 11595 阅读 · 0 评论 -
Skywalking 的字节码注入技术到底是啥?
Skywalking 使用的是Java 动态字节码技术对 Debug 的好奇初学 Java 时,我对 IDEA 的 Debug 非常好奇,不止是它能查看断点的上下文环境,更神奇的是我可以在断点处使用它的 Evaluate 功能直接执行某些命令,进行一些计算或改变当前变量。刚开始语法不熟经常写错代码,重新打包部署一次代码耗时很长,我就直接面向 Debug 开发。在要编写的方法开始处打一个断点,在 Evaluate 框内一次次地执行方法函数不停地调整代码,没问题后再将代码复制出来放到 IDEA 里,转载 2020-07-21 19:39:10 · 3204 阅读 · 1 评论 -
如何安装 Helm?Helm 2.16.0版本安装,MacOS
Helm 官网指导:https://helm.sh/docs/intro/quickstart/下载安装包下载地址:https://github.com/helm/helm/releases下载后解压,压缩包里包含如下文件将可执行文件 helm 添加到 pathmv helm /usr/local/bin/验证安装$ helm versionClient: &version.Version{SemVer:"v2.16.9", GitCommit:"8ad.原创 2020-07-15 16:31:57 · 1651 阅读 · 0 评论 -
简单!自己打包的 docker镜像,如何部署到本地 k8s 上?
前提:k8s 内部使用的 docker 和本地安装的 docker daemon 是两回事,这就导致一个问题,我在本地打包的 docker image,如何在 k8s 里部署呢?答案是:使用 docker 本地仓库,将 docker image push 到本地仓库,然后修改 k8s 为从本地仓库拉取 image。在实际使用docker的过程中,因为产品主要使用了微服务的架构,会有很多不同的服务镜像,将生成的镜像放到docker-hub上是不合适的。而且为了便于后续的自动化运维和部署...转载 2020-07-02 21:52:13 · 11143 阅读 · 0 评论 -
Service Mesh 是如何做到对业务代码无侵入的透明代理?Istio 中通过 iptables 做流量拦截
目录传统微服务MicroService的问题:侵入式 Client 端服务发现+LoadBalanceClient 端服务发现+负载均衡Istio 是如何实现流量劫持的?要做哪些事?透明代理SidecariptablesInit 容器问题:如何判断目标服务的类型?Cluster IP传统微服务MicroService的问题:侵入式 Client 端服务发现+LoadBalanceClient 端服务发现+负载均衡传统微服务,服务发现+负载均衡的代码,.转载 2020-06-24 12:23:36 · 1600 阅读 · 0 评论 -
CNCF:kubernetes本地环境搭建,操作系统Ubuntu 18.04 LTS,安装工具minikube,运行环境Docker
在 Ubuntu 上使用 snap 安装 kubectl切换到 snap 用户并运行安装命令:原创 2020-06-14 15:20:34 · 1343 阅读 · 0 评论 -
应用性能管理APM巅峰对决:skywalking P.K. Pinpoint
转自:http://skywalking.apache.org/zh/blog/2019-02-24-skywalking-pk-pinpoint.html作者:王振飞, 写于:2019-02-24说明:此文是个人所写,版本归属作者,代表个人观点,仅供参考,不代表skywalking官方观点。说明:本次对比基于skywalking-6.0.0-GA和Pinpoint-1.8.2(截止2019-02-19最新版本)。另外,我们这次技术选型直接否定了Zipkin,其最大原因是它对代码有侵入性,CA...转载 2020-06-10 20:15:00 · 1908 阅读 · 1 评论