GopherChina2017以讲师身份参会感悟
时光荏苒。2016年北京GopherChina大会的情形还历历在目,2017年上海GopherChina大会又如约而至。 一、印象 这是我连续第二年参加AstaXie组织举办的GopherChina大会。而且不同于去年的是,这次我是以讲师身份参与的。虽然大会地点不同,我的角色不同,但不变的是和广大Gophers一样的对Go语言的极大热情。...
View ArticleGo coding in go way
本篇文章是我在2017年第三届GopherChina大会上所作talk:”Go coding in go way“的改编和展开版,全文如下。 一、序 今天我要分享的题目是“Go coding in go...
View ArticleKubernetes集群跨节点挂载CephFS
在Kubernetes集群中运行有状态服务或应用总是不那么容易的。比如,之前我在项目中使用了CephRBD,虽然遇到过几次问题,但总体算是运行良好。但最近发现CephRBD无法满足跨节点挂载的需求,我只好另辟蹊径。由于CephFS和CephRBD师出同门,它自然成为了这次我首要考察的目标。这里将跨节点挂载CephFS的考察过程记录一下,一是备忘,二则也可以为其他有相似需求的朋友提供些资料。...
View ArticleKubernetes集群node主机名修改导致的异常
除了在生产环境使用的Kubernetes 1.3.7集群之外,我这里还有一套1.5.1的Kubernetes测试环境,这个测试环境一来用于验证各种技术方案,二来也是为了跟踪Kubernetes的最新进展。本篇要记录的一个异常就是发生在该测试Kubernetes集群中的。 一、缘起...
View Article一步步打造基于Kubeadm的高可用Kubernetes集群-第一部分
Kubernetes集群的核心是其master node,但目前默认情况下master node只有一个,一旦master node出现问题,Kubernetes集群将陷入“瘫痪”,对集群的管理、Pod的调度等均将无法实施,即便此时某些用户的Pod依旧可以正常运行。这显然不能符合我们对于运行于生产环境下的Kubernetes集群的要求,我们需要一个高可用的Kubernetes集群。...
View Article一步步打造基于Kubeadm的高可用Kubernetes集群-第二部分
续接上文。 五、第三步:启动emei、wudang上的apiserver 跨三个node的etcd cluster已经建成并完成了数据同步,下面进行ha cluster改造的重要一步:启动wudang、emei上的apiserver 1、启动emei、wudang上的apiserver 以shaolin...
View Article专访稿:兴趣才是第一生产力
本文是公司“运营拍档”公众号的专访文稿,这里转载一下^0^。原文链接在这里。 十年生死两茫茫,白天忙,晚上忙,写程序,到天亮。千行代码,Bug何处藏。纵使上线又怎样,朝令改,夕断肠…… 白 明 东软云科技架构师 2017年Gopher China大会讲师 《七周七语言》译者之一 拥有10年编程工作经验 多年电信领域产品研发和技术管理经验 目前主要研究领域包括:...
View Article初窥dep
Go语言程序组织和构建的基本单元是Package,但Go语言官方却没有提供一款“像样的”Package Management Tool(包管理工具)。随着Go语言在全球范围内应用的愈加广泛,缺少官方包管理工具这一问题变得日益突出。 2016年GopherCon大会后,在Go官方的组织下,一个旨在改善Go包管理的commitee成立了,共同应对Go在package...
View Article基于Harbor和CephFS搭建高可用Private Registry
我们有给客户搭建私有容器仓库的需求。开源的私有容器registry可供选择的不多,除了docker官方的distribution之外,比较知名的是VMware China出品的Harbor,我们选择了harbor。 harbor在docker...
View Article解决登录Harbor Registry时鉴权失败的问题
今天在测试之前搭建好的高可用Harbor时,发现了一个问题:使用docker login harbor时,有时成功,有时失败: # docker login -u user -p passwd http://hub.my-domain.com:36666 Login Succeeded # docker login -u user -p passwd...
View Article也谈goroutine调度器
Go语言在2016年再次拿下TIBOE年度编程语言称号,这充分证明了Go语言这几年在全世界范围内的受欢迎程度。如果要对世界范围内的gopher发起一次“你究竟喜欢Go的哪一点”的调查,我相信很多Gopher会提到:goroutine。...
View Article外星人为什么还没降落到地球上?
这周五午间休息时无意中看了36kr发布的一篇文章:《开电脑与外星人尬聊?搜寻地外文明项目SETI@home的极客简史》,这是一篇译文,原文发表在《大西洋月刊》,题为“A Brief History of SETI@Home”,文章科普了SETI@HOME这一项目的简史。 SETI是“Search for Extraterrestrial...
View Article也谈Go的可移植性
Go有很多优点,比如:简单、原生支持并发等,而不错的可移植性也是Go被广大程序员接纳的重要因素之一。但你知道为什么Go语言拥有很好的平台可移植性吗?本着“知其然,亦要知其所以然”的精神,本文我们就来探究一下Go良好可移植性背后的原理。 一、Go的可移植性 说到一门编程语言可移植性,我们一般从下面两个方面考量: 语言自身被移植到不同平台的容易程度; 通过这种语言编译出来的应用程序对平台的适应性。...
View Article定制Go Package的Go Get导入路径
近期Go team的组员Jaana B. Dogan,网名:rakyll开源了一个小工具:Go Vanity URLs。这个小工具可以帮助你快速为你的Go package定制Go get的导入路径(同样也是package被使用时的import路径)。 说到go package的go get导入路径,我们最常见和常使用的domain name就是github.com了,比如:beego包的go...
View Article使用govanityurls让私有代码仓库中的go包支持go get
《定制Go Package的Go Get导入路径》一文中我们讲到了通过使用govanityurls服务,我们可以定制go package的go get导入路径。不过,govanityurls的用途还不止这些,它还可以让你的私有代码仓库中的go package支持go get。 众所周知,开源的Go package一般分布在github、bitbucket等站点,但商业组织内部闭源的Go...
View Article搭建你自己的Go Runtime metrics环境
自从Go 1.5开始,每次Go release, Gopher Brian Hatfield都会将自己对新版Go的runtime的性能数据(与之前Go版本的比较)在twitter上晒出来。就连Go team staff在世界各地做speaking时也在slide中引用Brian的图片。后来,Brian...
View ArticleGo 1.9中值得关注的几个变化
Go语言在2016年当选tiobe index的年度编程语言。 转眼间6个月过去了,Go在tiobe index排行榜上继续强势攀升,在最新公布的TIBOE INDEX 7月份的排行榜上,Go挺进Top10: 还有不到一个月,Go 1.9版本也要正式Release了(计划8月份发布),当前Go 1.9的最新版本是go1.9beta2,本篇的实验环境也是基于该版本的,估计与final go...
View Article解决Kubernetes 1.6.4 Dashboard无法访问的问题
前一段时间将之前采用kubeadm安装的Kubernetes 1.5.1环境升级到了1.6.4版本,升级过程较为顺利。由于该k8s cluster是一个测试环境,当时并没有过于关注,就忙别的事情了。最近项目组打算在这个环境下做一些事情,而当我们重新“捡起”这个环境时,发现Kubernetes Dashboard无法访问了。...
View Article体验共享单车
上周日下午14:00,应孩子班主任老师的要求,我到学校开家长会。周末天气不算太热,学校离家的路程也不算远,于是我决定放弃开车,绿色出行^0^。去的时候乘坐的是今年沈城刚刚更换的电动公交车(好像是双动力),回来时,我则第一次体验了共享单车(骑的是摩拜单车)。...
View ArticleHello, ROS
ROS,全称是Robot Operating System,字面译为“机器人操作系统”。不过ROS并非是一个真正意义上的操作系统,而仅仅是一套用于机器人操作和控制软件开发的开发框架(framework),包括各种库和工具。 ROS在2007年诞生于斯坦福大学的人工智能实验室Stanford Artificial Intelligence...
View Article