Kops:更便捷的使用Kubernetes
对于那些第一次接触Kubernetes(通常被称为k8s)并且想独自运行他们自己的第一个pods,services和deployments的人来说,通常存在很多的指南,例如可以使用Minikube在他们自己的电脑上设置和安装k8s。这也被认为是初次接触Kubernetes时的一种比较好的方式,到最后,这些文章会介绍如何将他们的应用栈发布到生产环境中。通常运行在一个类似Google Cloud Platform(GCP)或者Amazon Web Services(AWS)的云环境中可能会更利于使用kops。
介绍一下Kops
Kops被描述为“用最容易的方式启动和运行生产级别的k8s集群” ,正好与Kelsey Hightower的文章 “Kubernetes the Hard Way”相对。 相对而言,我建议如果你想更倾向于使用,或想更好地了解使用k8s的容器编排,那么就应该尝试一下该教程,并在设置过程中执行每一个步骤。
虽然用户创建Kubernetes的高可用性集群的过程经常会被认为是“困难的方式”,但是kops可以将大部分流程自动化。它将执行至少8个任务,这其中包括在集群中创建子网和DHCP参数,自动分组你的主节点和工作节点,为这些节点读取配置文件信息, IAM定义和创建属于你的实例的EBS卷,进行网络设置安全组的配置。
安装Kops和创建一个集群
使用本教程,首先需要在AWS上创建一个账户,然后安装AWS CLI。同样你也可以安装kops在你自己的机器上。针对MacOS的用户,可以使用Homebrew:
$ brew update && brew install kops
针对Linux用户:
$ wget https://github.com/kubernetes/kops/releases/download/1.6.1/kops-linux-amd64
$ chmod +x kops-linux-amd64
$ mv kops-linux-amd64 /usr/local/bin/kops
现在,我们将基于AWS Route53 DNS服务使用k8s来创建一个子域名。我使用的子域名是 kubernetes.mydomain.com,并且创建了一个主机区域:
$ aws route53 create-hosted-zone —name kubernetes.mydomain.com —caller-reference 1
这将返回关于主机区域的信息,包括域名服务器的DelegationSet.。我选择了.com作为顶级域名,并且输入我们的域名注册为NS记录。
我们同样需要创建一个S3存储,使kops可以为我们的集群存储配置信息:
$ aws s3 mb s3://clusters.kubernetes.mydomain.com
现在,如果你只控制一个集群,我们应该在你的当前shell环境或者你的bash设置中声明一个变量:
$ export KOPS_STATE_STORE=s3://clusters.kubernetes.mydomain.com
酷!我们已经准备好配置和运行集群:
$ kops create cluster —zones=us-west-2c us-west-2c.kubernetes.mydomain.com
你也可以指定特殊的参数例如使用—network-cidr来设置子网参数,或者使用—vpc参数来设置你的AWS VPC。
使Kops开始工作
当一切都可以脚本化和自动化操作时,可以在不需要任何输入的情况下让Kops去执行这些任务。然而,如果你想去尝试自己做一些配置,通过”kops edit cluster $CLUSTER_NAME”命令,将会在你的电脑上打开Vim编辑器,允许你去编辑那些用于创建集群的.yml配置文件。同上,使用命令”kops edit ig —name=$CLUSTER_NAME”将会设置节点的分组,或者使用”using kops edit ig —name=$CLUSTER_NAME $ZONE”命令来设置主节点的分组。
你将会为现在的结果而感到高兴,因为现在不会使创建基础设施的费用超过你的预期,输入命令”kops update cluster”,并且使用参数—yes将会执行任务并且创建已经配置好的集群。再花费些时间将你的DNS记录指向其他的DNS服务器后,Route53将会响应请求的结果。当输入命令”kubectl get pods”后,可以看到你的k8s集群基础设施已经运行起来。当你看到没有找到任何资源时,你可以准备开始去创建deployments/replica sets。