使用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。由于存在各种困难和障碍,目前正在四处奋斗。关于这个问题,将在以后的机会中撰写文章。

追加记录

好像也有利用现有的虚拟私有云来构建集群的选项!试一试吧!

广告
将在 10 秒后关闭
bannerAds