Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
本篇快速入门介绍了如何在 AWS 上轻松安装 Kubernetes 集群。
本篇使用了一个名为 kops
的工具。
kops 是一个自用的供应系统:
如果您有不同的观点,您可能更喜欢使用 kubeadm 作为构建工具来构建自己的集群。kops 建立在 kubeadm 工作的基础上。
您必须安装 kubectl 才能使 kops 工作。
从下载页面下载 kops(从源代码构建也很容易):
在 macOS 上:
curl -OL https://github.com/kubernetes/kops/releases/download/1.10.0/kops-darwin-amd64
chmod +x kops-darwin-amd64
mv kops-darwin-amd64 /usr/local/bin/kops
# 您也可以使用 Homebrew 安装 kops
brew update && brew install kops
在 Linux 上:
wget https://github.com/kubernetes/kops/releases/download/1.10.0/kops-linux-amd64
chmod +x kops-linux-amd64
mv kops-linux-amd64 /usr/local/bin/kops
kops 在集群内部都使用 DNS 进行发现操作,因此您可以从客户端访问 kubernetes API 服务器。
kops 对集群名称有明显的要求:它应该是有效的 DNS 名称。这样一来,您就不会再使集群混乱, 可以与同事明确共享集群,并且无需依赖记住 IP 地址即可访问群集。
您应该使用子域名来划分集群。作为示例,我们将使用域名 useast1.dev.example.com
。
然后,API 服务器端点域名将为 api.useast1.dev.example.com
。
Route53 托管区域可以服务子域名。您的托管区域可能是 useast1.dev.example.com
,还有 dev.example.com
甚至 example.com
。
kops 可以与以上任何一种配合使用,因此通常您出于组织原因选择不同的托管区域。
例如,允许您在 dev.example.com
下创建记录,但不能在 example.com
下创建记录。
假设您使用 dev.example.com
作为托管区域。您可以使用正常流程 或者使用诸如 aws route53 create-hosted-zone --name dev.example.com --caller-reference 1
之类的命令来创建该托管区域。
然后,您必须在父域名中设置您的 DNS 记录,以便该域名中的记录可以被解析。在这里,您将在 example.com
中为 dev
创建 DNS 记录。
如果它是根域名,则可以在域名注册机构配置 DNS 记录。例如,您需要在购买 example.com
的地方配置 example.com
。
这一步很容易搞砸(这是问题的第一大原因!) 如果您安装了 dig 工具,则可以通过运行以下步骤再次检查集群是否配置正确:
dig DNS dev.example.com
您应该看到 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 存储桶export KOPS_STATE_STORE=s3://clusters.dev.example.com
操作,然后 kops 将默认使用此位置。
我们建议将其放入您的 bash profile 文件或类似文件中。运行 "kops create cluster" 以创建您的集群配置:
kops create cluster --zones=us-east-1c useast1.dev.example.com
kops 将为您的集群创建配置。请注意,它_仅_创建配置,实际上并没有创建云资源 - 您将在下一步中使用 kops update cluster
进行配置。
这使您有机会查看配置或进行更改。
它打印出可用于进一步探索的命令:
kops get cluster
kops edit cluster useast1.dev.example.com
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 useast1.dev.example.com --yes
这需要几秒钟的时间才能运行,但实际上集群可能需要几分钟才能准备就绪。每当更改集群配置时,都会使用 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