使用 Go 程序调用 Kubernetes API

在前面的章节中,我们介绍了快速部署 Kubernetes 和应用程序的方法,接下来在本章节中我们将对 Kubernetes 的 API 进行了解,并且进行调用,这是开发人员最关注的一环之一。 因为不论是 DevOps、基础架构,又或是自愈,都需要与 Kubernetes API 直接/间接接触,因此即使在你不懂 Kubernetes 的情况下,Kubernetes API 的知识点仍然属于必……

阅读全文

在 Kubernetes 中部署应用程序

在完成了本地 Kubernetes 的快速搭建(基于 Docker)后,我们已经可以正式的使用它了。对于我们平时最常见的需求,那就是往 Kubernetes 里部署应用程序,如果你没有看过 Kubernetes 相关的知识,这时候你可能会六神无主,但问题不大,我们就可以使用最经典的 Nginx 来小试身手。 创建 Deployment 创建 nginx-deployment.yaml 文件: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17……

阅读全文

Kubernetes 本地快速启动(基于 Docker)

Kubernetes 在容器编排大战结束后已经在云原生中占据了明确的一席,最近几年越来越火热,目前搜索趋势: Kubernetes 的热度很明显是不断地在上涨,因此学习和使用 Kubernetes 是一件相对正确的事,同时公司大多都在往容器化上接近,在拥抱 Kubernetes,所以我们所开发的应用也总是跑在容器环境中。更甚的是,需要对接 Kubernetes API 来……

阅读全文

Go Modules 终极入门

Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。 而 Go1.14,在近期也终于正式发布,Go 官方亲自……

阅读全文

干货满满的 Go Modules 和 goproxy.cn

大家好,我是一只普通的知识铺,周四晚上很有幸邀请到 goproxy.cn 的作者 @盛傲飞(@aofei) 到 Go 夜读给我们进行第 61 期 《Go Modules、Go Module Proxy 和 goproxy.cn》的技术分享。 本次 @盛傲飞 的夜读分享,是对 Go Modules 的一次很好的解读,比较贴近工程实践,我必然希望把这块的知识更多的分享给大家,……

阅读全文

Go 应用内存占用太多,让排查?(VSZ篇)

前段时间,某同学说某服务的容器因为超出内存限制,不断地重启,问我们是不是有内存泄露,赶紧排查,然后解决掉,省的出问题。我们大为震惊,赶紧查看监控+报警系统和性能分析,发现应用指标压根就不高,不像有泄露的样子。 那么问题是出在哪里了呢,我们进入某个容器里查看了 top 的系统指标,结果如下:……

阅读全文

Go1.13 defer 的性能是如何提高的

最近 Go1.13 终于发布了,其中一个值得关注的特性就是 defer 在大部分的场景下性能提升了30%,但是官方并没有具体写是怎么提升的,这让大家非常的疑惑。而我因为之前写过《深入理解 Go defer》 和 《Go defer 会有性能损耗,尽量不要用?》 这类文章,因此我挺感兴趣它是做了什么改变才能得到这样子的结果,所以今……

阅读全文

用 GODEBUG 看 GC

什么是 GC 在计算机科学中,垃圾回收(GC)是一种自动管理内存的机制,垃圾回收器会去尝试回收程序不再使用的对象及其占用的内存。而最早 John McCarthy 在 1959 年左右发明了垃圾回收,以简化 Lisp 中的手动内存管理的机制(来自 wikipedia)。 为什么要 GC 手动管理内存挺麻烦,管错或者管漏内存也很糟糕,将会直接……

阅读全文

用 GODEBUG 看调度跟踪

让 Go 更强大的原因之一莫过于它的 GODEBUG 工具,GODEBUG 的设置可以让 Go 程序在运行时输出调试信息,可以根据你的要求很直观的看到你想要的调度器或垃圾回收等详细信息,并且还不需要加装其它的插件,非常方便,今天我们将先讲解 GODEBUG 的调度器相关内容,希望对你有所帮助。 不过在开始前,没接触过的小伙伴得……

阅读全文

Go 大杀器之跟踪剖析 trace

在 Go 中有许许多多的分析工具,在之前我有写过一篇 《Golang 大杀器之性能剖析 PProf》 来介绍 PProf,如果有小伙伴感兴趣可以去我博客看看。 但单单使用 PProf 有时候不一定足够完整,因为在真实的程序中还包含许多的隐藏动作,例如 Goroutine 在执行时会做哪些操作?执行/阻塞了多长时间?在什么时候阻止……

阅读全文