本文超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否未变得不正确。

Kubernetes 社区每周 Hangout 纪要 - 2015 年 7 月 10 日

Kubernetes 贡献社区每周都会通过 Google Hangouts 进行线上会议。我们希望任何感兴趣的人都能了解该论坛中讨论的内容。

以下是今天会议的纪要

  • Eric Paris:将 salt 替换为 ansible(如果我们愿意的话)
    • 在 contrib 中,有一个用 ansible 编写的配置工具
    • 重写的目标是尽可能消除云提供商的东西
    • salt 设置会在脚本中进行大量设置,然后使用 salt 设置环境
      • 这意味着像生成证书之类的事情在 GCE/AWS/Vagrant 上的完成方式不同
    • 对于 ansible,一切都必须在 ansible 中完成
    • Ansible 背景
      • 没有客户端
      • 配置程序 ssh 进入机器并在机器上运行脚本
      • 您定义了集群的外观,运行脚本,它会一次性设置所有内容
      • 如果您在配置文件中进行一项更改,ansible 会重新运行所有内容(这并不总是可取的)
      • 使用 jinja2 模板
    • 使用最少的软件创建机器,然后使用 ansible 使该机器进入可运行状态
      • 设置所有附加组件
    • 消除配置程序 shell 脚本
    • 完整的集群设置目前大约需要 6 分钟
      • 带有一些软件包的 CentOS
      • 重新部署到集群需要 25 秒
    • Eric 的问题
      • 特定于提供商的配置在哪里?
        • ansible 配置所做的唯一网络设置是 flannel;您可以将其关闭
      • init 与 systemd 呢?
        • 应该能够在代码中支持而没有任何问题(尚未实现)
    • 讨论
      • 为什么不将设置工作推送到容器或 kubernetes 配置中?
        • 要引导集群,请删除 kubelet 和清单
      • 运行 kubelet 并配置网络应该是唯一的要求。我们可以剪切一个预先配置好的机器映像,减去数据包(证书等)
        • 如果尚未安装 kubelet 和 docker,ansible 脚本将安装它们
      • 每个操作系统(RedHat、Debian、Ubuntu)都可以有不同的镜像。我们可以将其视为构建过程的一部分,而不是安装过程的一部分。
      • 裸机也需要解决方案。
      • 赞成总体目标——减少 salt 配置中的特殊配置
      • 除 kubelet 之外的所有内容都应在容器内运行(最终 kubelet 也应如此)
        • 在容器中运行并不能减少我们目前拥有的复杂性
        • 但它确实更清楚地定义了代码期望的接口
      • 这些工具(Chef、Puppet、Ansible)将二进制分发与配置混为一谈
        • 容器更清楚地将这些问题分开
      • mesos 部署尚未完全自动化,但 mesos 部署完全不同:kubelet 被放置在现有 mesos 集群之上
        • bash 脚本允许 mesos 开发人员查看每个云提供商正在做什么并重新使用相关位
        • 逆向工程曲线很大,但 bash 至少是可读的,而不是 salt
      • Openstack 也使用不同的部署
      • 我们需要一个有据可查的步骤列表(例如创建证书),这些步骤对于建立集群是必要的
        • 这将使我们能够跨云提供商进行比较
        • 我们应该尽可能减少步骤数
        • Ansible 有 241 个步骤来启动集群
  • 1.0 代码冻结
    • 我们如何摆脱代码冻结?
    • 这是下周的主题,但预览是我们会缓慢移动而不是完全打开消防水带
      • 我们希望在保持 HEAD 和 1.0 分支稳定的同时尽快清除积压
      • 积压了近 300 个 PR,但在冻结期间也开发了各种并行功能分支
    • 今天发布了一个 cherry pick 版本 (1.0.1),修复了一些问题
    • 下周我们将讨论补丁发布的节奏