使用eksctl在东京区域尝试EKS
如果你在想想想使用EKS,但又沒有東京區域的話,我想很多人都會有這樣的想法吧?
亚马逊EKS已支持东京区域。
也可以通过了解如何使用Amazon EKS并理解其运作方式来开始使用。
因为听说有一个叫做 eksctl 的工具可以快速构建 EKS,所以我立刻尝试了一下。
eksctl 安装
$ brew install weaveworks/tap/eksctl
$ eksctl version
[ℹ] version.Info{BuiltAt:"", GitCommit:"", GitTag:"0.1.15"}
使用 eksctl 创建集群。
$ eksctl create cluster \
--name cluster-name \
--region ap-northeast-1 \
--nodes 2 \
--nodes-min 1 \
--nodes-max 2 \
--node-type t2.medium \
--version=1.10 \
--tags environment=staging
大约只需要10分钟就能完成!
有什么被制造了?
您可以查看由get cluster创建的集群和区域。
$ eksctl get cluster
NAME REGION
cluster-name ap-northeast-1
Kubernetes的配置信息也被写入到了 ~/.kube/config 中。
$ cat ~/.kube/config
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: xxxxxxxxxxxxx
server: https://xxxxxxxxxxxxxxxxxxxx.ap-northeast-1.eks.amazonaws.com
name: cluster-name.ap-northeast-1.eksctl.io
...
目前的kubectl的目标已经更改为创建的eks。
在使用docker-for-mac kubernetes的方面,您可以通过 get-contexts 来确认切换的情况。
$ kubectl config get-contexts
CURRENT NAME CLUSTER
* account@cluster-name.ap-northeast-1.eksctl.io cluster-name.ap-northeast-1.eksctl.io
docker-for-desktop docker-for-desktop-cluster
顺便提一下,在恢复时,您可以使用”use-context”命令。
$ kubectl config use-context docker-for-desktop
$ kubectl config use-context account@cluster-name.ap-northeast-1.eksctl.io
实际上创建了指定数量的工作节点来移动图像。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-000-000-000-000.ap-northeast-1.compute.internal Ready <none> 11m v1.10.11
ip-000-000-000-000.ap-northeast-1.compute.internal Ready <none> 11m v1.10.11
在亚马逊云计算平台上
将创建VPC和子网。
- eksctl-cluster-name-cluster/VPC
将创建 CloudFormation。
-
- eksctl-cluster-name-nodegroup-0
- eksctl-cluster-name-cluster
创建了 eks 集群(主节点)。
- cluster-name
创建 EC2 实例(工作节点)。
- cluster-name-0-Node x2
将会创建一个EC2安全组。
-
- eksctl-cluster-name-nodegroup-0/SG
- eksctl-cluster-name-cluster/ControlPlaneSecurityGroup
启动教程的留言簿应用程序。
创建 Redis 主从复制控制器
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-controller.json
replicationcontroller "redis-master" created
创建 Redis 主服务器服务
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-master-service.json
service "redis-master" created
创建Redis的从节点复制控制器
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-slave-controller.json
replicationcontroller "redis-slave" created
创建一个 Redis 从节点服务
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/redis-slave-service.json
service "redis-slave" created
创建一个客人留言记录复制控制器。
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/guestbook-controller.json
replicationcontroller "guestbook" created
创建留言簿服务
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/kubernetes/v1.10.3/examples/guestbook-go/guestbook-service.json
service "guestbook" created
确认已经创建的复制控制器和服务。
$ kubectl get rc
NAME DESIRED CURRENT READY AGE
guestbook 3 3 3 25s
redis-master 1 1 1 2m
redis-slave 1 1 1 2m
$ kubectl get svc
guestbook LoadBalancer 10.100.58.17 xxx.ap-northe... 3000:32540/TCP 44s
kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 32m
redis-master ClusterIP 10.100.72.41 <none> 6379/TCP 1m
redis-slave ClusterIP 10.100.240.246 <none> 6379/TCP 1m
guestbookはロードバランサを挟んでアクセスできるようになっており、ec2を見てみるとロードバランサが作成されていました。
等待外部IP被创建后,在3000端口进行访问。
$ kubectl get services -o wide
打掃
删除在Kubernetes上创建的应用程序。
$ kubectl delete rc/redis-master rc/redis-slave rc/guestbook svc/redis-master svc/redis-slave svc/guestbook
删除已创建的聚类。
$ eksctl delete cluster \
--name cluster-name \
--region ap-northeast-1
思考或感受
使用eksctl可以非常快速地构建EKS。由于有各种选项可供选择,所以感觉很不错。
不过,虽然我想在现有的VPC中创建EKS环境,但现在似乎需要手动进行各种定制,而不是使用eksctl创建新的VPC。
默认情况下,eksctl create cluster会实例化一个专用的VPC,以避免与任何现有资源发生干扰,原因有多种,包括安全性,同时也因为在现有的VPC中检测所有的设置是具有挑战性的。
因为准备开始使用Amazon EKS,所以需要创建新的VPC。由于存在各种困难和障碍,目前正在四处奋斗。关于这个问题,将在以后的机会中撰写文章。
追加记录
好像也有利用现有的虚拟私有云来构建集群的选项!试一试吧!