用 openSUSE Kubic 搭建一个 Kubernetes 集群

最近给家里几台闲置机器拆开重新整理了一下,然后统统装上了 Proxmox 做虚拟化,然后开出小鸡来想着搞点没玩过的东西玩玩,四下看了看于是决定用 openSUSE Kubic 来装个 Kubernetes 集群来图一乐。

本文假设读者有在一台没有安装任何操作系统的计算机上安装 openSUSE 或其它主流 Linux 发行版的能力,并且假设读者具备一定的 Linux 使用经验,以及对 Kubernetes 有基本的了解。阅读本文还可能会需要一些计算机网络的基础知识。

本文同时发布在 openSUSE 中文论坛

openSUSE Kubic

这是一个 openSUSE 社区提供的衍生发行版,基于 openSUSE MicroOS 并预装了 Kubic 环境,可以较为方便地部署 Kubernetes 环境。和 openSUSE 本体的主要区别大概有两点,一是使用 openSUSE MicroOS 作为基础所以整个系统是“事务式更新”的,另一个就是预装了 Kubic 环境,不需要自己安装 Kubernetes 相关的各种工具。
[……]

继续阅读~→

于是我终于也换工作了

拖了一个月的博文,再不发就要烂在草稿箱里面了╮( ̄▽ ̄”)╭

阿里内部一直标榜自己是一所大学,同事之间也多以“同学”互称。从2014年4月3日入职实习,到2018年4月9日正式离职,4年了,我算是毕业了吧。

写离职贴向来是阿里内网的一项传统和一道风景(另一道风景是相亲贴),早在决定离职之前的一段时间,就想象过有朝一日我自己的离职贴会写成什么样子,一开始草拟的题目叫《我为什么从阿里离职》,但思来想去我并不像一些遭遇状况离开的同学那样苦大仇深,貌似没有必要玩这种噱头,甚至这篇文章本身也没必要真的发布到内网丢人现眼,就放在这个早已荒草两丈高的博客聊做记录呗。[……]

继续阅读~→

使用 Orange Pi One 和 GPS 搭建1级时间源

我一直有一种自建基础服务的兴趣,自从当初机缘巧合混到一个开发者邮箱之后,就一直在尝试自建 NTP 服务,海外已经放了好几台 VPS 到 pool.ntp.org 里面了,但国内条件有限,并没有什么好办法。于是就想到了自建一个。

1. 背景知识

整个 NTP 分发网络的结构是一种近似树状的分层结构,每一级叫做一个 “Stratum”, 其中 Stratum-0 是可靠的参考时间源,比如原子钟、GPS或无线电授时信号源等,所有0级时间源构成了整个 NTP 网络中的参考时钟;在逻辑上,所有0级时间源作为一个整体提供了全世界的标准时钟。不过因为0级时间源本身实际上只是某种形式的时钟信号发生[……]

继续阅读~→

一年香

不知不觉,正式入职已经一年了,现在想起来一年前拿到毕业证的第二天就直接坐高铁杀到杭州,第三天直接办理入职的经历,还是觉得挺好玩。更何况入职第二天就是跑千岛湖 outing 去了
alibaba-150626

从高考结束到现在,五年过去了,我觉得我做过的最重要的两个决定分别是出省上大学,和翻墙。从此我的眼界大大开阔,世界观也再不似从前,后者甚至在很大程度上保证了我在那个逼仄的学校能保持仅有的一点思考和见解,否则今天我也不会顶着大公司的光环在这里写闲话。

最近一年代码写得不多,但进步还算不小,Google Oriented Develop 和 SlackOverflow Oriented Develop 果然是快速上手开[……]

继续阅读~→

终于解掉 nginx 在 SSL 下 400 的错误,蠢死了

这个问题持续了得有超过一年了,症状很简单,配置了 https 访问之后,使用 IPv6 访问的时候会报 400 Bad Request 错误,强制使用 IPv4 或者强行指定 https 协议都能解决。说到这里应该很明显了对吧,首先就应该想到是不是 80 端口上也开着 ssl 来着。但这个讨厌的地方在于用 IPv4 就一切正常了,我一直没想那么多……就因为这我的博客很长时间都没办法强制 https 访问,不然 IPv6 过来的用户没法看。

前两天搞着搞着调另一个什么反向代理相关的设置的时候,顺手开了 debug 日志,然后就想顺便测一把,结果一不小心就找到了原因_(:зゝ∠)_

长话短说,问题的根本原因是普通 http 协议和加密的 https 协议配置在了一个 server{} 块内。并不是说不支持这样搞,而是这样配置过后服务器的行为会和分开配置成两个有所不同。
[……]

继续阅读~→

一点点近况

距离上次更新博客已经一年多了,中间只有从 flicker 同步的贴图在刷着… 这一年多好像没什么好写的,但实际发生了很多,难道说博客写久了不再有耐心?或者更靠谱的说法大概是太现充以至于无暇来慢慢写博客了吧。

去年5月,我还没上大四,申请 GSoC 2013 刚刚提交都不知道结果,转眼一看,现在我已经毕业三个月、艰难地啃着 GSoC 2014 的项目;时间还真是过得快呢。这一年当中我买了单反,考研233,找到了工作,甚至感情状态都修改了两次,居然连13年年终总结都没有写。要说有意义的活动,大概去年暑假参加广州的第四届天文发展论坛算比较典型的了,好歹算是出远门。另外和天南大一起蹭天津天文节的[……]

继续阅读~→

To Enrich myLife

阴天教前天换届了…淋着打伞觉得没必要不打又觉得不爽的毛毛雨,提着湿漉漉的伞回到寝室,磨磨蹭蹭把电脑打开一看,错误691,上网帐号欠费了。
把手机卡卸出来用毕竟只能是应急的,就算是3G也实在用着苦逼,于是哈欠连天地想着干脆写博客消磨时间好了。

周四晚上收到邮件说25号下午组织两场模拟口试,可以去先行体验,然后正好又拿到了普通话考试的准考证,和口试时间一模一样:26号09:00. 于是就没什么好犹豫的了,周五和母上打电话汇报了一声,然后就买了第二天上午去天津的票,接着顺手定了个房间。

坐着普快一路到天津站,出来转地铁,然后走路,然后迷路,然后绕路…然后在终于对股沟地图给的建议[……]

继续阅读~→

三七二十一

总觉得还是应该保持每年生日一篇博客的习惯。
二十一岁,突然感觉自己……原来已经长这么大了啊……

嗯,说说近况吧,基本上就是社团这头基本上可以脱手了,另一边GSoC刚交了申请还不知道会是个什么展开。

暂时好像也没什么了,我很好,勿念。
祝我生日快乐[……]

继续阅读~→

Apache + Varnish + nginx 获取正确的客户端IP

貌似现在只要我更新博客就说明又在没事瞎折腾了… =.=
很久以前就遇到过这个问题,或者不如说实际上就是因为无法正确获取客户端IP才让我一直用的 Apache + nginx 的构架。今天折腾一下午 + 一晚上总算是把这个问题(还算)圆满地解决掉了。

首先是参考这篇文章配置好整个服务器构架,后端使用 Apache httpd 来处理 PHP, 中间用 Varnish 做缓存,前端使用 Tengine 作为 web 服务器,所以来自客户端的请求的处理流程是:

Client -> Tengine:80 -> Varnish:8090 ->(Miss)-> httpd:81

然后问题就来了,处在最后面的 httpd 拿不到正确的客户端IP地址,总是显示为127.0.0.1. 这个问题有趣在于,一直以来我都是使用了 mod_rpaf 来获取 X-Forwarded-For 中的客户端IP的,而如果我去掉中间那一层 Varnish 直接让 Tengine/nginx 反向代理给 httpd 的话,IP地址是能够正确获取的,更进一步实验表明,在只有一次代理的情况下一切都是正常的,当代理变成了两层,无论两层代理的顺序如何,都会出现这个问题。

中间各种股沟各种查文档就[此处省略6小时]了…

基本上有两个比较主要的原因。
[……]

继续阅读~→

写了个简单的 shadowsocks 退出自动重启脚本

screen在 VPS 上跑 shadowsocks, 不过时不时会退出然后需要我上去重启,很麻烦,于是就搞了个定时检测 shadowsocks 是否在运行,如果没有就自动重启的脚本。

然后在cron任务里面写上一句 */1 * * * * root bash /some/path/autostart.sh 就可以每分钟自动执行了,而且这样还能变相实现开机自动启动,所以就算服务器意外重启也不怕了。

如果觉得异常退出过后一分钟启动的间隔太长,当然也可以写成死循环:

继续阅读~→

|<(=·_·=)> |·_·=)> |_·=)> |·=)
Merry