如何选用合适的 DevOps 工具

查看原文

本文总结了选用合适的 DevOps 工具,包括:版本控制,持续集成,构件管理,持续交付流水线,自动化测试,环境自动化和配置,发布管理,日志合并查询,监控指标,团队沟通等等。

  • 选择能够增加合作效率的。例如,也许团队里有人就是用不来命令行工具,可以考虑 browser-based 工具。
  • 选择有带 API 的工具。如果能在内部运行工具的 prototypes/demo 验证其可行性更佳。
  • 选择能将配置保存在版本控制中的。
  • 选择有多种方式使用的工具,成员可以用各自喜欢的方式学习。
  • 选择能够在多环境部署的。
read more

Kubespray Getting Started

查看原文

Kubespray Getting Started 文档介绍了如何在机器上安装一个集群,使用它你不需要对 kubernetes 本身有什么深入了解,就是敲几下命令就能开出集群来了。这套程序是一堆 ansible 配置组成的。在文档中描述的步骤基本上很清晰:1) 从 sample 复制出一套基本配置 2) 生成 ansible hosts 配置文件 3) 检查配置 4) 使用 ansible-playbook 运行 cluster.yml 命令集。

使用体验:

  • 文档中的 Requirements 没有提到机器的最小性能要求,在试图安装在 1GB 内存的小机器上时失败了一下。
  • 机器上 nameserver 的数量超出 3 个结果报错,需要戳戳 3) 中的配置
  • 默认开了 dashboard,裸跑在公网上安全有隐患,记得防火墙掐掉 …
read more

Linode Kubernetes 使用入门

查看原文

本文介绍了使用三个 Linode 节点搭建 Kubernetes 集群的入门教程。它假设你已经搭建好了一个 kubernetes master,以及两个 worker nodes。

  • 文章从 pods 的一句话简介开始:Pod 是对外暴露同一个服务的一个/多个容器组成的逻辑实体,共享网络和存储;操作 Pod 的时候,其中的容器会当作一个组一起被启动或停止。
  • 使用 YAML 创建 Deployment,有了这个应用才能部署到集群中。
    • kubectl create -f nginx.yaml --record 创建部署,record 可以记录后续的部署变更。
    • kubectl get deployments 查看部署。
    • kubectl get pods 查看 pods。
    • kubectl scale deployment nginx-server …
read more

Linux 上如何开启 IP 转发功能

查看原文

IP 转发是一项操作系统的基础功能,当将服务器用作内网私有服务器对外联系的网关的时候,网关需要有 IP 转发功能才能将数据报文转发到内网的私有服务器。

  • 可以通过命令 sysctl net.ipv4.ip_forward 查看输出 net.ipv4.ip_forward = 1,1 代表开启。
  • 可以通过命令 cat /proc/sys/net/ipv4/ip_forward 查看输出 1
  • 可以通过命令 sysctl -w net.ipv4.ip_forward=0 将此功能关闭。
  • 可以通过命令 echo 0 > /proc/sys/net/ipv4/ip_forward 将此功能关闭。
  • ^ 以上只是暂时关闭,可以通过配置文件 /etc/sysctl.conf …
read more

TimescaleDB 的架构设计

查看原文

TimescaleDB 是基于 PostgreSQL 的插件,能够在提供 PostgreSQL 接口的同时提供 Timescale 数据库的功能。这样它就兼具二者的优点:稳定,安全,可靠的连接管理,数据点容量大。

  • TimescaleDB 的表叫做 Hypertables,存放的数据叫做 chunks。
  • 所有的 Hypertables 都根据时间 + 定制的 key 来 partition,这种区分可以形象地称为 time+space。
  • Hypertable 可以用普通的 database schema 定义,定义时可以指定 column names & types,通过 CREATE TABLE 来新建。一定要有一个 column 是时间类型,另外可以有一个可选的 additional partitioning key …
read more

有哪些 API 设计的很好的 Python 库

查看原文

这个帖子提到了一些被认为是接口设计的很不错的库。当然,有些是大众觉得都很好,有些萝卜青菜各有所爱。

  • sk-learn 这个库接口设计的不错。文档既有库自己的东西,也有机器学习的起步知识(有人觉得好有人觉得不好)。
  • django 的配置,orm,插件都是很不错的设计。
  • flask 的 request/g 有人觉得好有人觉得不好。
  • requests 的 API 设计的很好,就算跟 php/nodejs 里的库比较也好很多。
  • pendulum 是个管理时间的库。
  • Sqlalchemy 要解决的问题很复杂的问题,所以它的接口也会相应的的复杂起来。
  • pathlib 通过重载操作符将 API 往路径格式上去贴近。
  • logging 整体设计都很好没啥错误,除了 API 很不好。做到这样也够了,大部分库都使用 logging 做日志,想成为 requests for logging 的库几乎都失败了 …
read more

Linux 文档阅读 - Logrotate

查看原文

Logrotate 是操作系统中用于管理日志文件的小工具。Rotate 是指一种日志滚动存储的策略,日志文件要是不管理就会越来越大最后导致磁盘空间没掉了,有了 Rotate,会按照一些规则把曾经打过的日志转储到另外一个文件去,并按照日期或者什么的规则来命名。这样我们就能按照时间去查看以前的备份。超过限制的日志 logrotate 也会自动丢掉,不用操心磁盘不够用。

  • 规则上,时间可以是按天,周,月。
  • 格式上,rotate 后的文件可以做普通的文本存储,也可以用 gz 压缩。
  • 一般 logrotate 不会一天碰日志文件多次,除非规则是基于文件大小,并且一天通过 cron job 运行多次。
  • logrotate 支持传进来多个配置文件,后面会覆盖前面。
  • 配置文件默认是 /etc/logrotate.conf。可以在 /var/lib 下面找到最近的 logrotate 运行的状态更新,内容会是日志模式及其对应的运行时间。
  • 配置文件格式:
compress
/var …
read more

Chaos Engineering 的基本原则

查看原文

这个网站描述了 Chaos Engineering 的一些基本原则。

  • Chaos Engineering 的定义:是一种对分布式系统做线上的测试的实践,手段是在一个隔离的生产环境中人为制造一些极端环境。
  • 意义:即便每个组件都是好的,他们通讯出问题了,系统还是一样照挂;或者服务降级是配置有问题,超时不合适导致过多重试,服务要承受太多流量,单点故障导致雪崩。分布式系统会出现的情况实在太多了。预期等着出现,不如主动出击。主动制造问题,如果制造出的问题怎么搞系统都不会崩,那系统看起来还蛮可靠的。
  • Chaos 四个步骤:
    • 定义系统正常时的一些指标,收集监控数据。
    • 假设在 control group 和 experiment group 两个都处于正常状态。
    • 制造事故,模拟出 server crash,硬盘故障,网络连接故障等等。
    • 尝试找出 control group 和 experiment group 的状态的不同。如果有不同,那就找到了可以改进的地方 …
read more

Kubernetes 初学者超级简单入门帖

查看原文

Kubernetes 是 helmsman / pilot 的希腊语,用来做自动部署和容器程序的扩展和管理。它的前身是 Google 内部的类似系统 Borg。将程序放在容器里面简化了运维操作,但是部署还有一箩筐的事情要处理,这就是 Kubernetes 存在的意义。这篇文章介绍了什么是 Kubernetes,什么是 Clusters,如何创建本地 cluster,如何创建生产环境的 cluster,如何部署到 Kubernetes 中,以及一个例子。

  • 你不用操心应用实例是不是在运行,如果挂了,Kubernetes 会自动新建实例。
  • 掌握一些 Kubernetes 的核心概念:
    • Cluster: 一个容器网络,它们之间可以互相通信。
    • Nodes: Cluster 里面跑的的节点。
    • Master:可以控制其他节点,所有操作命令跑在 master 上,Master 决定 Cluster 里面的哪个节点跑应用 …
read more

Kubernetes Master-Node 通信

查看原文

本文档描述了在 Kubernetes 中,Master 和 Cluster 是如何通信的,其中 Master 指的是 k8s apiserver, Cluster 指的是 k8s 集群。知道它们之间如何通信有助于构建出安全的网络配置,即便运行在不信任的网络上。

  • 所有 Cluster 到 Master 的通讯都会发给 apiserver,一个监听 443 + 配置了 virtual ip 地址 + 开启了 authentication 的 https service。Cluster Nodes 启动时必须配置 public root certificate,这样他们才能安全地链接上 apiserver。
  • Master 到 Cluster 的通信分为两种:1) apiserver- …
read more

« Page 30 / 54 »