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,裸跑在公网上安全有隐患,记得防火墙掐掉 …
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 …
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 …
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 …
有哪些 API 设计的很好的 Python 库
这个帖子提到了一些被认为是接口设计的很不错的库。当然,有些是大众觉得都很好,有些萝卜青菜各有所爱。
- sk-learn 这个库接口设计的不错。文档既有库自己的东西,也有机器学习的起步知识(有人觉得好有人觉得不好)。
- django 的配置,orm,插件都是很不错的设计。
- flask 的 request/g 有人觉得好有人觉得不好。
- requests 的 API 设计的很好,就算跟 php/nodejs 里的库比较也好很多。
- pendulum 是个管理时间的库。
- Sqlalchemy 要解决的问题很复杂的问题,所以它的接口也会相应的的复杂起来。
- pathlib 通过重载操作符将 API 往路径格式上去贴近。
- logging 整体设计都很好没啥错误,除了 API 很不好。做到这样也够了,大部分库都使用 logging 做日志,想成为 requests for logging 的库几乎都失败了 …
Linux 文档阅读 - Logrotate
Logrotate 是操作系统中用于管理日志文件的小工具。Rotate 是指一种日志滚动存储的策略,日志文件要是不管理就会越来越大最后导致磁盘空间没掉了,有了 Rotate,会按照一些规则把曾经打过的日志转储到另外一个文件去,并按照日期或者什么的规则来命名。这样我们就能按照时间去查看以前的备份。超过限制的日志 logrotate 也会自动丢掉,不用操心磁盘不够用。
- 规则上,时间可以是按天,周,月。
- 格式上,rotate 后的文件可以做普通的文本存储,也可以用 gz 压缩。
- 一般 logrotate 不会一天碰日志文件多次,除非规则是基于文件大小,并且一天通过 cron job 运行多次。
- logrotate 支持传进来多个配置文件,后面会覆盖前面。
- 配置文件默认是
/etc/logrotate.conf
。可以在/var/lib
下面找到最近的 logrotate 运行的状态更新,内容会是日志模式及其对应的运行时间。 - 配置文件格式:
compress
/var …
Chaos Engineering 的基本原则
这个网站描述了 Chaos Engineering 的一些基本原则。
- Chaos Engineering 的定义:是一种对分布式系统做线上的测试的实践,手段是在一个隔离的生产环境中人为制造一些极端环境。
- 意义:即便每个组件都是好的,他们通讯出问题了,系统还是一样照挂;或者服务降级是配置有问题,超时不合适导致过多重试,服务要承受太多流量,单点故障导致雪崩。分布式系统会出现的情况实在太多了。预期等着出现,不如主动出击。主动制造问题,如果制造出的问题怎么搞系统都不会崩,那系统看起来还蛮可靠的。
- Chaos 四个步骤:
- 定义系统正常时的一些指标,收集监控数据。
- 假设在 control group 和 experiment group 两个都处于正常状态。
- 制造事故,模拟出 server crash,硬盘故障,网络连接故障等等。
- 尝试找出 control group 和 experiment group 的状态的不同。如果有不同,那就找到了可以改进的地方 …
Kubernetes 初学者超级简单入门帖
Kubernetes 是 helmsman / pilot 的希腊语,用来做自动部署和容器程序的扩展和管理。它的前身是 Google 内部的类似系统 Borg。将程序放在容器里面简化了运维操作,但是部署还有一箩筐的事情要处理,这就是 Kubernetes 存在的意义。这篇文章介绍了什么是 Kubernetes,什么是 Clusters,如何创建本地 cluster,如何创建生产环境的 cluster,如何部署到 Kubernetes 中,以及一个例子。
- 你不用操心应用实例是不是在运行,如果挂了,Kubernetes 会自动新建实例。
- 掌握一些 Kubernetes 的核心概念:
- Cluster: 一个容器网络,它们之间可以互相通信。
- Nodes: Cluster 里面跑的的节点。
- Master:可以控制其他节点,所有操作命令跑在 master 上,Master 决定 Cluster 里面的哪个节点跑应用 …
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- …