使用 Kops 安装 Kubernetes

    kops 是一个自用的供应系统:

    • 全自动安装流程
    • 使用 DNS 识别集群
    • 自我修复:一切都在自动扩展组中运行
    • 支持多种操作系统(如 Debian、Ubuntu 16.04、CentOS、RHEL、Amazon Linux 和 CoreOS) - 参考
    • 支持高可用 - 参考 high_availability.md
    • 可以直接提供或者生成 terraform 清单 - 参考

    如果你有不同的观点,你可能更喜欢使用 kubeadm 作为构建工具来构建自己的集群。kops 建立在 kubeadm 工作的基础上。

    前提条件

    你必须安装 才能使 kops 工作。

    安装

    下载页面下载 kops(从源代码构建也很容易):

    在 macOS 上:

    在 Linux 上:

    (2/5) 为你的集群创建一个 route53 域名

    kops 在集群内部都使用 DNS 进行发现操作,因此你可以从客户端访问 kubernetes API 服务器。

    kops 对集群名称有明显的要求:它应该是有效的 DNS 名称。这样一来,你就不会再使集群混乱, 可以与同事明确共享集群,并且无需依赖记住 IP 地址即可访问群集。

    你应该使用子域名来划分集群。作为示例,我们将使用域名 useast1.dev.example.com。 然后,API 服务器端点域名将为 api.useast1.dev.example.com

    假设你使用 dev.example.com 作为托管区域。你可以使用 或者使用诸如 aws route53 create-hosted-zone --name dev.example.com --caller-reference 1 之类的命令来创建该托管区域。

    然后,你必须在父域名中设置你的 DNS 记录,以便该域名中的记录可以被解析。 在这里,你将在 example.com 中为 创建 DNS 记录。 如果它是根域名,则可以在域名注册机构配置 DNS 记录。 例如,你需要在购买 example.com 的地方配置 example.com

    这一步很容易搞砸(这是问题的第一大原因!) 如果你安装了 dig 工具,则可以通过运行以下步骤再次检查集群是否配置正确:

    你应该看到 Route53 分配了你的托管区域的 4 条 DNS 记录。

    kops 使你即使在安装后也可以管理集群。为此,它必须跟踪已创建的集群及其配置、所使用的密钥等。 此信息存储在 S3 存储桶中。S3 权限用于控制对存储桶的访问。

    多个集群可以使用同一 S3 存储桶,并且你可以在管理同一集群的同事之间共享一个 S3 存储桶 - 这比传递 kubecfg 文件容易得多。 但是有权访问 S3 存储桶的任何人都将拥有对所有集群的管理访问权限,因此你不想在运营团队之外共享它。

    因此,通常每个运维团队都有一个 S3 存储桶(而且名称通常对应于上面托管区域的名称!)

    在我们的示例中,我们选择 dev.example.com 作为托管区域,因此让我们选择 clusters.dev.example.com 作为 S3 存储桶名称。

    • 导出 AWS_PROFILE 文件(如果你需要选择一个配置文件用来使 AWS CLI 正常工作)
    • 使用 aws s3 mb s3://clusters.dev.example.com 创建 S3 存储桶

    (4/5) 建立你的集群配置

    运行 “kops create cluster” 以创建你的集群配置:

    kops 将为你的集群创建配置。请注意,它_仅_创建配置,实际上并没有创建云资源 - 你将在下一步中使用 kops update cluster 进行配置。 这使你有机会查看配置或进行更改。

    它打印出可用于进一步探索的命令:

    • 使用以下命令列出集群:kops get cluster
    • 使用以下命令编辑该集群:
    • 使用以下命令编辑你的节点实例组:kops edit ig --name = useast1.dev.example.com nodes
    • 使用以下命令编辑你的主实例组:kops edit ig --name = useast1.dev.example.com master-us-east-1c

    如果这是你第一次使用 kops,请花几分钟尝试一下! 实例组是一组实例,将被注册为 kubernetes 节点。 在 AWS 上,这是通过 auto-scaling-groups 实现的。你可以有多个实例组。 例如,如果你想要的是混合实例和按需实例的节点,或者 GPU 和非 GPU 实例。

    运行 “kops update cluster” 以在 AWS 中创建集群:

    这需要几秒钟的时间才能运行,但实际上集群可能需要几分钟才能准备就绪。 每当更改集群配置时,都会使用 kops update cluster 工具。 它将对配置进行的更改应用于你的集群 - 根据需要重新配置 AWS 或者 kubernetes。

    例如,在你运行 kops edit ig nodes 之后,然后运行 kops update cluster --yes 应用你的配置,有时你还必须运行 kops rolling-update cluster 立即回滚更新配置。

    如果没有 --yes 参数,kops update cluster 操作将向你显示其操作的预览效果。这对于生产集群很方便!

    探索其他附加组件

    请参阅附加组件列表探索其他附加组件, 包括用于 Kubernetes 集群的日志记录、监视、网络策略、可视化和控制的工具。

    • 删除集群:kops delete cluster useast1.dev.example.com --yes