• Kubernetes 进阶使用之 Helm,Kustomize

    Declarative vs imperativeKubernetes 一个非常优秀的特点是,它是基于状态的。我们告诉 Kubernetes 我们需要运行什么样的资源( Pod, Service 等),以及这个资源对应的状态(参数,状态等),Kubernetes 帮助我们确保这些资源按我们要求的状态运行。也就是说,如果我们告诉 Kubernetes 使用 nginx:latest 镜像,运行 1 个名为 nginx-pod 的 Pod,Kubernetes 就会努力确保有且仅有 1 个 i...

  • 理解 Python 中的协程

    asyncio 是 Python 下开发 I/O 密集型应用的最佳选择,而使用 asyncio 又离不开协程。什么是协程协程是一种可以中断运行,在某个时间点再恢复运行的程序组件。这个定义和协程的字面意思一点关系没有,刚接触时,理解起来是十分晦涩的。我们先看其英文 coroutine 会更好理解一些,“co-“ 这个前缀有”一起,共同”的意思,比如 co-author 表示合著一本书的作者,coexist 表示共存。类似的我们可以把 coroutine 理解为共同,协作运行的程序组件。如何理...

  • GIS基础知识 - 坐标系、投影、EPSG:4326、EPSG:3857

    最近接手一个GIS项目,需要用到 PostGIS,GeoServer,OpenLayers 等工具组件,遇到一堆地理信息相关的术语名词,在这里做一个总结。大地测量学 (Geodesy)大地测量学 是一门量测和描绘地球表面的学科,也包括确定地球重力场和海底地形。大地水准面 (geoid)大地水准面 是海洋表面在排除风力、潮汐等其它影响,只考虑重力和自转影响下的形状,这个形状延伸过陆地,生成一个密闭的曲面。虽然我们通常说地球是一个球体或者椭球体,但是由于地球引力分布不均(因为密度不同等原因),...

  • 自动清理 Nexus 中的过期镜像

    自动清理过期镜像Nexus Repository 是一款非常好用的私有仓库,支持 Maven、Docker、Yum、PyPi等等,基本主流的类型都支持。自从使用了持续集成以后,我们会自动对新代码进行编译打包发布到开发环境中,以便尽快地对新代码进行测试。这样导致的问题就是 Nexus 中的 Docker 库占用的空间越来越大。Nexus 本身提供了 Cleanup 功能,可以将一段时间之前的镜像删除,但是如果全部按过期时间去删除,会导致一些长时间以前上传,但是还需要使用的镜像也删除。幸运的是...

  • Locale 和 LanguageTag

    “zh_CN”与“zh-CN”前段时间,在做一个国际化的项目时,关于中文语言是用 “zh_CN” 形式还是 “zh-CN” 形式来表示,团队里出了点儿小分歧,借此机会也查了查资料,详细了解了有关规则。国际化与本地化国际化(Internationalization,通常被简称为 I18n)和本地化(Localization,通常被简称为 L10n)这两个词是那种常常见,好像已经很熟悉,其实真正要讲明白是什么意思,还要再查查资料的词。两者好像说的是很相关的一件事儿,实际上去各有各的侧重点。对于...

  • Linux Shell 编程

    本文源于团队内部的一次分享,对 Linux Shell 编程进行基本的介绍。基本的文件格式#!/bin/sh => 指定要运行的 shellor#!/bin/bash => bash 是功能更全的一个 shellfoo1=abc foo2=abc 123 => illegalfoo3='abc 123' foo4=1+2 echo $foo1 => abcecho $foo3 => abc 123...

  • 如何正确地设置 NTP 服务器

    Ceph Cluster 的 clock skew detected 问题这是一个由于 Ceph Cluster clock skew 引发的问题。我们公司的生产环境里有一个 3 节点的 Ceph Cluster 用来做对象存储使用。运行了一段时间,发现其中一个节点上的 OSD 经常过上个把月就会重启一次,系统也没什么异常,查来查去发现最可疑的就是这个节点有时候会报 ceph:health_warn clock skew detected on mon。由于我们的服务器都设置了每天通过定时...

  • supervisord 中的 open files 数量限制

    Linux 中的 nofile 设置Linux 系统通过 rlimit 来对一个进程可以使用的计算机资源进行限制,其中 nofile 表示单个进程可以打开的文件句柄数,默认值为 1024。 我们知道,Linux 系统下一切都是文件,这不仅包括了常规的文件,还包括 socket, pipe 等等,对于一些较大的应用,如数据库,Web 服务器等,1024 这个限制肯定是不够的。所以一般在初始化新服务器时都要进行修改,例如修改 /etc/security/limits.conf,把所有用户的 n...