这篇文章已超过一年。较早的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已不正确。

Kubespray Ansible Playbook 促进协同的 Kubernetes 运维

为什么选择 Kubespray?

使 Kubernetes 在操作层面更强大是一项普遍的重点工作,我也一直在关注该项目周围的许多部署努力。孵化中的 Kubespray 项目特别引起我的兴趣,因为它使用流行的 Ansible 工具集在云端和物理目标上构建健壮、可升级的集群。我相信使用运维人员熟悉的工具可以壮大我们的社区。

我们很高兴看到 Kubespray 支持的广泛平台,以及它如何很好地处理各种选项,例如集成 Ceph 以实现 StatefulSet 持久性,以及使用 Helm 更轻松地上传应用程序。这些附加功能使我们能够完全集成 OpenStack Helm charts演示视频)。

通过与上游源合作而不是创建不同的安装脚本,我们获得了更广泛社区的好处。这需要一些额外的开发工作;但是,我们相信分享运维实践有助于增强整个社区。这也是 SIG-Cluster Ops 背后的动机。

有了 Kubespray 提供的强大安装能力,我们可以专注于更广泛的运维问题。

例如,我们现在可以并行进行部署,从而可以在开发和测试阶段同时充分利用 Kubespray 支持的选项。  

这有助于将协调的 Kubernetes 安装(在 CentOS、Red Hat 和 Ubuntu 上)作为自动化流水线的一部分进行构建-测试-销毁。我们还可以使用 Digital Rebar 的提供商、租户和集群定义 JSON,通过单个命令设置一个完整的课堂环境。

让我们看看课堂示例

首先,我们定义一个 JSON 格式的学生集群,如下面的代码片段所示

| {

 "attribs": {

   "k8s-version": "v1.6.0",

   "k8s-kube_network_plugin": "calico",

   "k8s-docker_version": "1.12"

 },

 "name": "cluster01",

 "tenant": "cluster01",

 "public_keys": {

   "cluster01": "ssh-rsa AAAAB..... user@example.com"

 },

 "provider": {

   "name": "google-provider"

 },

 "nodes": [

   {

     "roles": ["etcd","k8s-addons", "k8s-master"],

     "count": 1

   },

   {

     "roles": ["k8s-worker"],

     "count": 3

   }

 ]

} |

然后我们运行 Digital Rebar 工作负载的 Multideploy.sh 参考脚本,该脚本检查部署文件以提取关键信息。  它基本上自动化了以下步骤

| rebar provider create {“name”:“google-provider”, [secret stuff]}

rebar tenants create {“name”:“cluster01”}

rebar deployments create [contents from cluster01 file] |

deployments create 命令会自动从提供商请求节点。由于我们使用租户并添加了 SSH 密钥,每个学生只能访问自己的集群。完成后,添加 `--destroy` 标志将反向操作节点和部署,但会保留提供商和租户。

我们投入了精力来开发使用 Kubespray 和 Digital Rebar 的运维脚本示例,因为如果我们不能以一致的方式管理差异,那么我们就注定会陷入运维碎片化。  

我很高兴看到并参与社区在云端和本地实现企业级 Kubernetes 运维的进展。这意味着我看到了可共享/可重用自动化正在形成合理的模式。如果你即使在实验规模上部署 Kubernetes,我也强烈建议你关注(或者更好地是,参与协作)这些努力。成为社区的一部分需要更多前期投入,但会随着你获得共享经验和改进的好处而带来回报。

当大规模部署时,如何在不牺牲规模或安全性的前提下,构建一个既可重复又支持多平台的系统?

以 Kubespray 和 Digital Rebar 作为可重复的基础,扩展变得更快更容易。更好的是,直接使用上游可以快速将改进循环回上游。这意味着我们更接近于构建一个专注于 Kubernetes 运维方面并具有 SRE 思维的社区。

如果你对此感兴趣,请加入 Cluster Ops SIGKubesprayDigital Rebar 社区与我们互动。