工具
- Kubernetes Operations - K8s安装、升级和管理。支持在AWS中运行Debian,Ubuntu,CentOS和RHEL。
- CoreOS Tectonic 包括开源的 Tectonic Installer,它在AWS上使用Container Linux节点创建Kubernetes集群。
- CoreOS,Kubernetes Incubator维护一个CLI工具,kube-aws,它使用了Container Linux节点创建和管理Kubernetes集群,使用了AWS工具:EC2、CloudFormation和Autoscaling。
kubernetes 1.6不再支持kube-up
kube-up.sh是启动集群的传统工具,已被弃用,完全从kubernetes 1.6中删除。
需要的条件
- 这仅适用于kubernetes 1.5及更早版本。考虑切换到支持的选项之一。
- 需要一个AWS帐户。可以访问http://aws.amazon.com创建使用
- 安装和配置AWS Command Line Interface
- 建议使用具有访问全部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文档。
《在AWS EC2上运行Kubernetes》有53个想法