thumbnail
Docker 容器应用构建 deb 包
背景 我们的应用发布都是以镜像为基础,git打tag触发cicd,发布对应version的镜像。现在有个应用需要部署到客户内网中,如果以导出镜像的形式,再给客户部署,是比较繁琐的。并且无法做一些额外的工作,例如安装前的环境检测,卸载时删除镜像,以及更新等。当然这些都可以通过脚本实现,但不够优雅。而同事之前做过以linux安装包的形式发布容器应用,这…
thumbnail
使用Kubebuilder实现自定义Controller
背景 还是之前的需求,上一篇文章:Operator示例:通过Operator+CRD实现部署自动化是基于官方的sample-controller来修改,实现我们的逻辑。这次使用kubebuilder来生成代码。 主要步骤 使用kubebuilder生成项目代码 定义 CRD 的 struct 重新生成CRD资源 实现Reconcile逻辑 部署CR…
thumbnail
Operator示例:通过Operator+CRD实现部署自动化
前言 在上一篇通过Operator自动暴露集群内部服务中,遗留了一个问题:开发人员or业务上游是需要关注k8s内建资源,例如deployment如何定义,这和K8S自动化的目标背道而驰。 本篇文章将采用CRD(CustomResourceDefinition)来屏蔽底层K8S资源,让开发人员只需要按照我们制定的规则来定义CR即可。至于创建deplo…
thumbnail
通过Operator自动暴露集群内部服务
需求背景 运维团队希望管控部署在k8s集群里对外暴露的服务,开发团队无需关心服务如何暴露给用户。 红色部分 开发团队创建应用的manifests,开发团队可以为Service:资源添加annotation为ingress/http:true来决定终端用户是否可以访问到该服务,默认不能访问到。至于具体如何让用户可以访问到服务,开发团队不需要关心。 绿…
LeetCode:355_设计推特
思路 在推送给用户的推特,是该用户关注的人发的推特,并通过时间顺序合并在一起。采用多路归并的方式合并,在归并时,通过最小堆优化。 题目 设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近 10 条推文。 实现 Twitter 类: Twitter() 初始化简易版推特对象 voi…
thumbnail
LeetCode:496_下一个更大元素I
思路 这类题有套路,需要用到单调栈。 上图中绿色item想找到下一个比它大的值,只需要和红色item比较就行,而不需要和紫色的item比较。所以我们需要维护一个单调递增的栈,保存红色的值。 通过依次比较,得出,5对应的答案是6。 下一个数字4,来寻求下一个比它大的值。 同样的,2比5小,在这个数据结构中没有意义,他应该在5存入数据结构时抛出。也就是…
Kafka 并发消费单个 partition
背景 kafka可以通过多个partition实现并发,但是针对单个partition,必须顺序提交。假如消息发送顺序为1,2,3,如果先提交3,会导致1,2被提交。所以不能并发执行后立即提交。 解决思路 记录接收消息的顺序到listA,然后并发执行,执行成功的消息,记录到setB。起个goroutine定时提交,顺序遍历listA,依次判断该消息…
thumbnail
【笔记】Operator课程(7-9)
client-go 架构图 Indexer原理 Indexer缓存k8s资源对象,并提供便捷的方式查询。例如获取某个namespace下的所有资源 indexer接口继承了store接口,所以indexer的实现类也是store的实现类。add方法被调用的地方和store一样,是reflector调用的。 type Indexer interfac…
thumbnail
【笔记】分布式缓存(1-2)
300分钟吃透分布式缓存——陈波 分布式缓存 01 业务数据访问性能太低怎么办? 缓存的定义 狭义缓存 加速CPU数据交换的存储器。 广义缓存 数据高速交换的存储介质,加速数据访问。 缓存成本 时间局限性原理,即被获取过一次的数据在未来会被多次引用,比如一条微博被一个人感兴趣并阅读后,它大概率还会被更多人阅读。 以空间换时间,因为原始数据获取太慢,…
thumbnail
【笔记】Operator课程(1-6)
白丁云原生:k8s编程-operator篇【已完结】 clientgo架构 以前以为client-go只是通过restclient去调用api server,其实不然,它还具备controller的逻辑,以实现更强大的k8s操作。 RESTClient原理 创建了所有版本的client,例如corev1,体现k8s向后兼容,只要正式版发布的接口不会…