阳明的博客

大家好,我叫阳明,前小米高级开发工程师,现在回到家乡成都,独立开发者一枚,一个有着产品思维的工程师,现在也在努力将自己的产品思维体系化,全栈工程师,现阶段专注 Kubernetes 和 AIGC,创建了「k8s技术圈」社区、「优点知识」知识付费网站以及「快课星球」AI全栈开发学习网站。我可以提供企业容器化方面的知识培训和咨询工作,感兴趣的可以通过微信 gitops 和我联系。

联系我:

阳明和他朋友们的一些项目

好吧,海马学院正式上线了

海马学院这个 Sideproject 我断断续续差不多做了一年了,最开始的需求是身边有几个做客户端的朋友想要学习Python,然后我给他们推荐了几本入门的书籍,然后遇到问题的时候再来问我,慢慢地他们发现这种方式学习太慢了,主要是太不系统了,然后我就说要不我给你们录制一套实战项目的视频吧,你们跟着做一遍实际的项目肯定感觉就会好很多了,而且根据我个人的学习经验来说,学习一门编程语言最好的方式方法就是做一个实际的项目,最后的结果当然也是符合预期的,现在他们基本上能独立完成一个 Web 项目了。

Skaffold-简化本地开发kubernetes应用的神器

在我们开发kubernetes应用的过程中,一般情况下是我们在本地开发调试测试完成以后,再通过CI/CD的方式部署到kubernetes的集群中,这个过程首先是非常繁琐的,而且效率非常低下,因为你想验证你的每次代码修改,就得提交代码重新走一遍CI/CD的流程,我们知道编译打包成镜像这些过程就是很耗时的,即使我们在自己本地搭建一套开发kubernetes集群,也同样的效率很低。在实践中,若不在本地运行那些服务,调试将变得颇具挑战。就在几天前,我遇到了Skaffold,它是一款命令行工具,旨在促进kubernetes应用的持续开发,Skaffold可以将构建、推送及向kubernetes集群部署应用程序的过程自动化,听上去是不是很舒服呀~~~

k8s技术圈一周精选[第2期]

上周我们发布了k8s技术圈一周精选第1期,从后面的反馈来看非常不错,之前很多问题其实大家都遇到过,只是没有记录沉淀下来,导致后面很多同学去踩同样的坑,这其实是非常浪费时间浪费资源的。一周时间还是非常快的,这不我们的第2期又来了。

另外,也欢迎大家加入我们的【微信群】【知识星球】共同探讨,共同进步。

kubernetes 的资源配额控制器

有很多团队在使用kubernetes的时候是将一个namespace当成一个租户的,所以对namespace的权限控制,资源控制就很重要了,你总是会担心你的某个租户使用的资源就超出了应有的配额。幸运的是kubernetes本身就为我们提供了解决这一问题的工具:资源配额控制器(ResourceQuotaController)

资源配额控制器确保了指定的资源对象始终不会超过配置的资源,能够有效的降低整个系统宕机的机率,增强系统的鲁棒性,对整个集群的稳定性有非常重要的作用。

k8s技术圈一周精选[第1期]

一转眼都已经过了龙抬头的日子了,可能你自己没注意到,要是仔细一算的话,2018年已经过了1/4了,是不是今年的规划还没提上日程呢?总之,咱们还是需要撸起袖子加油继续干啊~~~

今天的文章是总结我们知识星球在本周的一些精华的分享内容,同时,也欢迎大家加入我们的【微信群】【知识星球】共同探讨,共同进步。

理解 Kubernetes 的亲和性调度

一般情况下我们部署的 POD 是通过集群自动调度选择某个节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均,但是有的时候我们需要能够更加细粒度的去控制 POD 的调度,比如我们内部的一些服务 gitlab 之类的也是跑在Kubernetes集群上的,我们就不希望对外的一些服务和内部的服务跑在同一个节点上了,害怕内部服务对外部的服务产生影响;有的时候呢我们两个服务直接交流比较频繁,又希望能够将这两个服务的 POD 调度到同样的节点上。这就需要用到 Kubernetes 里面的一个概念:亲和性,亲和性主要分为两类:nodeAffinitypodAffinity

Hugo 集成 Gitment 评论插件

前面我们为Hugo集成了Algolia搜索插件,要让我们的网站具备博客的基本功能的话,一般情况下评论也是非常需要的,评论承载着作者与读者之间交流的桥梁,所以我们可以看到市面上有很多单独的评论服务,比如最出名的disqus,国内也有之前比较出名的多说(现在已经关闭)、有言等等,要使用他们非常简单,只需要嵌入一些简单的代码即刻开启移动社交评论 服务。不是这些服务不好,只是觉得稍微有点笨重,这里我们使用一个基于GitHub Issues的轻量级评论系统:Gitment

Hugo 集成 Algolia 搜索

Hugo是由 Steve Francis 大神(http://spf13.com/)基于Go语言开发的静态网站构建工具。没错你现在看到的本博客就是基于Hugo的,使用 Hugo 创建一个网站是非常简单的,基本上没有什么门槛,官方还提供了大量的主题供你选择,你只需要专心写的文章就行。不过有个问题是搜索,我们知道搜索属于动态行为了,如何给静态网站增加搜索功能呢?当然我们可以使用Google的站内搜索功能,Hugo 官方也提供了一些开源的和商业的解决方案,今天我们要介绍的就是一个非常优秀的商业解决方案:Algolia

kubernetes ConfigMap 和 Secrets

我们经常都需要为我们的应用程序配置一些特殊的数据,比如密钥、Token 、数据库连接地址或者其他私密的信息。你的应用可能会使用一些特定的配置文件进行配置,比如settings.py文件,或者我们可以在应用的业务逻辑中读取环境变量或者某些标志来处理配置信息。

当然你可以直接将这些应用配置信息直接硬编码到你的应用程序中去,对于一个小型的应用,这或许是可以接受的,但是,对于一个相对较大的应用程序或者微服务的话,硬编码就会变得难以管理了。比如你现在有10个微服务,都连接了数据库A,如果现在需要更改数据库A的连接地址的话,就需要修改10个地方,显然这是难以忍受的。