在AWS EC2上运行Kubernetes

工具

kubernetes 1.6不再支持kube-up

kube-up.sh是启动集群的传统工具,已被弃用,完全从kubernetes 1.6中删除。

需要的条件

  1. 这仅适用于kubernetes 1.5及更早版本。考虑切换到支持的选项之一。
  2. 需要一个AWS帐户。可以访问http://aws.amazon.com创建使用
  3. 安装和配置AWS Command Line Interface
  4. 建议使用具有访问全部AWS API的帐户进行安装。

注意:此脚本默认使用“default”AWS配置文件,你可以使用AWS_DEFAULT_PROFILE环境变量显式设置AWS配置文件:

export AWS_DEFAULT_PROFILE=myawsprofile

开启群集

支持的程序: get-kube

#Using wget
export KUBERNETES_PROVIDER=aws; wget -q -O - https://get.k8s.io | bash
#Using cURL
export KUBERNETES_PROVIDER=aws; curl -sS https://get.k8s.io | bash

注:这个脚本调用cluster/kube-up.sh,它使用 cluster/aws/config-default.sh.来调用cluster/aws/util.sh

这个过程大约需要5到10分钟。一旦集群启动,您的主节点和节点(s)的IP地址将被打印,以及关于在集群中运行的缺省服务的信息(监视、日志、dns)。User credentials和security tokens是在 ~/.kube/config中编写的,它将需要使用CLI或HTTP Basic Auth。

默认情况下,该脚本将us-west-2a(Oregon)中提供一个新的VPC和一个4个node 的k8s集群,并在Debian上运行EC2实例。你可以覆盖config-default.sh中定义的变量,改变这种行为的方式如下:

export KUBE_AWS_ZONE=eu-west-1c
export NUM_NODES=2
export MASTER_SIZE=m3.medium
export NODE_SIZE=m3.medium
export AWS_S3_REGION=eu-west-1
export AWS_S3_BUCKET=mycompany-kubernetes-artifacts
export KUBE_AWS_INSTANCE_PREFIX=k8s
...

如果没有指定master和minion的sizes,脚本将尝试根据${NUM_NODES}来猜测master和工作节点的sizes。在1.3版本中,这些默认值是:

  • 对于master及小于5个nodes 的集群,它将使用一个 m3.medium,对于6-10个nodes,它将使用一个m3.large; 对于11-100个nodes,它将使用m3.xlarge。
  • 对于工作节点,小于50个节点的集群,它将使用一个t2.micro,对于50到150个节点之间的集群,它将使用一个t2.small,具有大于150个节点的集群,它将使用a t2.medium。

警告:要注意的是,t2实例每小时接收的CPU credits 是有限的,可能不适用于始终运行的CPU的集群。作为一个粗略的估计,考虑15 pods/node,通过一个t2.large实例(instances)可以处理,

在Kubernetes的早期版本中,我们将master 节点默认为一个t2类实例,但是发现当master节点耗尽内存或CPU时,这可能会出现一些奇葩的问题。如果集群用于测试,你可以指定export MASTER_SIZE=t2.micro。

对于生产中使用,我们建议export MASTER_SIZE=m3.medium和 export NODE_SIZE=m3.medium。如果使用的节点增加,请注意,一个m3.large实例具有比两个m3.medium实例更多的存储空间,价格却变化不大。

我们通常建议在m4实例上使用m3实例,因为m3实例包括本地实例存储。从历史上来看,本地实例存储比AWS更加可靠,性能应该更加稳定。

如果使用m4实例,或其他没有本地实例存储的实例类型,则可能需要增加该NODE_ROOT_DISK_SIZE值,尽管默认值为32可能足以满足m4系列中较小的实例类型。

该脚本还将尝试创建或重新使用“kubernetes”的keypair ,以及IAM配置文件名为“kubernetes-master”和“kubernet-minion”。

注意:如果使named 为“kubernetes”的现有keypair ,则必须将AWS_SSH_KEY key 设置为private key。

开始使用

命令行管理工具:kubectl

kubectl启动集群后会在工作站中留下一个Kubernetes directory,另外,可以从此页面下载最新的Kubernetes版本。

接下来,将二进制文件夹添加PATH中来访问kubectl:

# OS X
export PATH=<path/to/kubernetes-directory>/platforms/darwin/amd64:$PATH

# Linux
export PATH=<path/to/kubernetes-directory>/platforms/linux/amd64:$PATH

了解kubectl更多信息,参考:kubectl手册

在默认情况下,kubectl将使用在集群启动期间生成的kubeconfig文件,用于对API进行身份验证。要了解更多信息,请参考: kubeconfig files

示例

一个简单的nginx示例来开启你的集群之路。

“Guestbook”应用程序是你的集群之路另一个Kubernetes示例: guestbook example

有关更完整的应用程序,请查看 examples directory

扩展集群

不支持通过kubectl添加和删除节点。但仍然可以通过在安装过程中创建的自动扩展组的“Desired’ 和 ‘Max”属性来手动调整节点数量。

卸载集群

cluster/kube-down.sh

Support Level

IaaS Provider Config. Mgmt OS Networking Docs Conforms Support Level
AWS kops Debian k8s (VPC) docs Community (@justinsb)
AWS CoreOS CoreOS flannel docs Community

更多信息,请参考Table of solutions

继续学习

有关管理和使用Kubernetes集群的更多详细信息,请参阅Kubernetes文档