最近在跟着《k8s-1.13版本源码分析》读k8s源码,顺着流程把scheduler调度器模块过了一遍,文中有一幅k8s scheduler调度器工作流程图画的不错,这里做个记录备忘。
继续阅读“kubernetes scheduler流程图”
配置和使用kube-prometheus
我们在k8s集群中使用云原生的promethues通常需要用到coreos的prometheus-operater,它可以方便的帮助我们在k8s中部署和配置使用prometheus。但prometheus并不是开箱即用的,如果要做到开箱即用的监控全家桶,官方提供了两个选择,分别是prometheus-operater helm chart和kube-prometheus。这两者都可以为我们提供开箱即用的方式部署promethues+alertmanager+promethues-push-gateway(kube-promethueus不包含,需要单独部署)+grafana全家桶,同时包含kubernetes-mixin的一整套报警规则和node-exporter,kube-state-metrics等一系列metrics exporter。区别在于helm chart由社区维护,而kube-promethues由coreos维护。这里我们将以kube-prometheus为例,简要说明配置和使用方式。
继续阅读“配置和使用kube-prometheus”
helm chart的制作及使用(顺便拉个票)
首先拉个票
[阿里云开发者社区-云原生应用大赛]
https://developer.aliyun.com/hub
麻烦不反感拉票的,有兴趣有空的,给我提交的下面三个应用点个星星,多谢了。(阿里云普通账号即可投票,支付宝登录亦可)
继续阅读“helm chart的制作及使用(顺便拉个票)”
grafana dashboard django bug修复
grafana的官方有很多用户提供的dashboard样本,其中关于django的有
https://grafana.com/grafana/dashboards/9528
对应的django-metric是https://github.com/korfuri/django-prometheus/
但是这个dashboard的页面是有问题的。页面的选择器选择的label是app,但是prometheus采集到的metric label是service和job。所以我们需要把dashboard json做一下修改。
继续阅读“grafana dashboard django bug修复”
kubernetes+jenkins实现现代cicd流水线(一)
前面几篇文章已经谈过在k8s中如何实现rook/ceph持久化存储和服务发现/负载均衡/服务暴露策略,接下来几篇文章将以springboot项目为例,详解如何利用kubernetes容器编排平台实现cicd流水线(devops)。
继续阅读“kubernetes+jenkins实现现代cicd流水线(一)”
Ant design pro删除BasicLayout国际化/帮助/顶部搜索
最近学了下react那一套东西,从react的官方文档和官方示例开始看起,感觉官方文档写得相当详实漂亮,由浅入深让人很容易接受。但想着国内可是有antd这么牛逼的轮子,作为react的UI组可是世界第二的存在(star数),肯定要支持一下学学啦,然后开始了极让人自闭的ant design之旅。
继续阅读“Ant design pro删除BasicLayout国际化/帮助/顶部搜索”
谈自由意志
此文写于一年半到两年前,写了一半就停住,存过草稿就不想发了。过了这么久,对一些东西的看法也发生了变化,现在回头看看过去写的东西,觉得挺有趣的,不妨发出来吧。(较初稿有微调)
关于自由意志的存在问题,是哲学的一个基本命题。
何谓自由意志,简单举例:
如果两个人,拥有完全一致的基因,完全一致的大脑,完全一致的身体构成和外观,并且拥有完全一样的经历。那么,在某个一致的时间节点上,他们能够(有权力)选择一个人吃蛋糕,而另一个人吃桃子吗?
继续阅读“谈自由意志”
kubernetes集群中服务的负载均衡和外部发现
传统的负载均衡策略一般是:
客户端 -> dns -> 4层库在均衡(HA) -> 7层负载均衡 -> 具体的后端服务
这种方式处理服务发现和动态配置比较难搞,比如后端服务动态扩缩容什么的。
一开始的做法肯定是OP人工维护7层负载均衡集群配置,以nginx为例,用git仓库之类的做人工服务发现和变更。这样很显然是不科学的。然后就会开始希望用种种自动化的手段去处理服务发现,比如微博的nginx-upsync-module,比如nginx-lua,比如openresty,比如etcd+confd等种种手段实现服务发现和自动化配置,但还是有很多瑕疵,比如etcd+confd每次修改upstream的服务后端就要reload nginx,nginx的策略会新开x个worker,容易造成性能问题甚至机器顶不住。而且vm服务机器的逻辑和upstream挂钩也有问题,总之,麻烦的很。
而kubernetes处理这一套服务发现和负载均衡的方法就挺好用的,比如接下来会实践的这一套nginx-ingress+externalIP+dns的方式就很直观而且方便自动化流程,大致策略如下:
客户端 -> dns -> k8s-nginx-ingress-service(in ExternalIP) -> ingress-obj -> service -> pod
kubernetes搭建并使用rook/ceph的pv存储
k8s中pod的存储在非单节点是不支持hostpath的,都得用各种分布式存储来实现.每个pvc对应的pv手工创建也很不现实,试了下rook-ceph分布式存储的搞法,感觉不错.其中也还是遇到了很多坑,这里稍微记录一下.
继续阅读“kubernetes搭建并使用rook/ceph的pv存储”