Kubernetes Operators 入门笔记

为什么需要 Kubernetes Operator?

在查阅 Kubernetes Operators 由来的时候,看到阿里云的这篇文章[8]. 这篇文章的作者之一邓洪超是下文学习的 etcd operator 的作者之一。这篇文章讲述了 Operator 的历史,写出了历史大片的感觉,值得一看。

按照我的理解,Operator 的就是一个运维人员,只是这个运维人员是软件而不是人类。 对于无状态的应用,像是 web server, 其实用 k8s 本身的 deployment 就足够了,一个 pod 坏了,自动部署一个新的 pod, 又有弹性又高可用。但是对于一些稍微复杂的应用,尤其是有状态,有特定拓扑的应用,就需要特定的逻辑才能管理起来。 比如 etcd, 如果有一半以上的节点挂了,那么就会出现 quorum lost, 集群无法工作。还是 etcd, 里面的数据需要定期备份,万一整个集群挂了,也能及时地恢复。 这些操作可以通过人类实现,也可以通过软件实现,Operator 就是这样的软件,它会自动管理 k8s 上一个特定的复杂应用。

于是,Operator 也成为了应用软件在 Kubernetes 上的一种标准化交付方式。应用的开发者可以定义好如何运维这个应用,用户想用某个应用,只需要安装上相应的 Operator,那么 Operator 就会自动完成整个应用生命周期的管理,包括安装、升级、备份、恢复等等。

如果把饼画得大一点,在 k8s 里,下有管理 k8s 节点的 Operator, 上有管理应用的 Operator, 那么这整个平台都是自动管理的,可以做到免运维,这很云计算。
继续阅读“Kubernetes Operators 入门笔记”

rpm -V 没有检测到某些 missing 文件

通常,我们会用 rpm -V 来检查某个 rpm 包的完整性。例如:

# mv /usr/share/zoneinfo/zone1970.tab /tmp/
# rpm -V tzdata-2019c-1.el8.noarch
missing     /usr/share/zoneinfo/zone1970.tab

不过,我遇到的情况是,ca-certificates 这个 rpm 包对应的 /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt 文件被意外移除后,用 rpm -V ca-certificates 这个命令没有检测到它 missing.

# rpm -ql ca-certificates | grep ca-bundle.trust.crt
/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
/etc/pki/tls/certs/ca-bundle.trust.crt
# mv /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt /tmp/
# rpm -V ca-certificates | wc -l
0

查看 rpm 包的 ca-certificates.spec 可以看到,extracted 目录下的文件是后期生成了,在 %files 下,会用 %ghost 来标记 extracted 目录下的文件。于是 rpm -ql 能看到这些文件属于这个 rpm 包,但是 rpm -V 的时候不会校验这些文件。

# files extracted files
%ghost %{catrustdir}/extracted/pem/tls-ca-bundle.pem
%ghost %{catrustdir}/extracted/pem/email-ca-bundle.pem
%ghost %{catrustdir}/extracted/pem/objsign-ca-bundle.pem

参考:
http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html

Openshift 4 学习笔记

DO280 在线课程的笔记。

Openshift 是基于 k8s 的 paas 产品,基本概念与 k8s 差不多。 Openshift 使用 Project 划分不同的 namespace, 隔离不同的资源。

Operator

Openshift 4 引入了 Operator 的概念。Operator 可以帮助管理资源。
Operators usually define custom resources (CR) that store their settings and configurations. An OpenShift administrator manages an operator my editing its custom resources. The syntax of a custom resource is defined by a custom resource definition (CRD).

Operator 通过调用 kubernetes 的 api 来实现它的功能。不过直接调用底层 api 会比较麻烦,因此有一个 Operator Software Development Kit (Operator SDK) 来帮助开发 Operator.

Operator Life Cycle Manager (OLM) 负责管理 Operator 的生命周期,它本身也是一个 Operator.
继续阅读“Openshift 4 学习笔记”