eksctlコマンドは、EKSを構築する専用のCLIです。
eksctlコマンドを使うことにより、関連するVPCやポリシーなどのリソースも自動で作成してくれますので、
簡単にEKSクラスターを作成できます。
eksctlコマンドを利用する場合、AWS CLIとkubectlコマンドもインストールされている必要があります。
# aws --version aws-cli/2.1.4
参考:AWS CLIの使い方
# aws configure AWS Access Key ID [None]: ************* AWS Secret Access Key [None]: ************* Default region name [None]: ap-northeast-1 #東京リージョンの場合
# curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp # mv /tmp/eksctl /usr/local/bin # eksctl version 0.31.0
$ eksctl get cluster NAME REGION eks-sample ap-northeast-1
# curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.8/2020-09-18/bin/linux/amd64/kubectl # mv ./kubectl /usr/local/bin # chmod +x /usr/local/bin/kubectl # kubectl version --short --client Client Version: v1.18.8-eks-7c9bda
$ aws eks --region リージョン update-kubeconfig --name クラスター名 $ cat ~/.kube/config #作成されたファイルの確認
kubectl get svc kubectl get nodes kubectl get nodes -o wide kubectl get pod -o wide kubectl get service
eksctl create cluster --help
--vpc-private-subnets=subnet-xxxxxxxx,subnet-xxxxxxxx \ --vpc-public-subnets=subnet-xxxxxxxx,subnet-xxxxxxxx \
eksctl create cluster \ --name=test-cluster \ #クラスタ名 --region=ap-northeast-1 \ #リージョン --version=1.18 \ #バージョン --node-type=t3.medium \ #Workerインスタンスタイプ --nodes=2 \ #Workerノード数 --nodes-min=2 \ #Workerオートスケール最小 --nodes-max=2 \ #Workerオートスケール最大 --node-volume-size=20 #Workerディスクサイズ
$ eksctl create cluster \ --vpc-cidr 10.0.0.0/16 \ --vpc-nat-mode HighlyAvailable \ --name eks-sample \ --version 1.14 \ --nodegroup-name ng-sample \ --node-type t3.large \ --nodes 3 \ --nodes-min 2 \ --nodes-max 4
https://dev.classmethod.jp/articles/getting-started-amazon-eks-with-eksctl/
$ eksctl create cluster \ --vpc-cidr 10.0.0.0/16 \ --name eks-sample \ --region ap-northeast-1 \ --version 1.14 \ --nodegroup-name sample-workers \ --node-type t2.small \ --nodes 1 \ --nodes-min 1 \ --nodes-max 3 \ --managed
eksctl create cluster \ --name eks-sample \ --version 1.14 \ --region ap-northeast-1 \ --zones ap-northeast-1a,ap-northeast-1c,ap-northeast-1d \ --nodegroup-name eks-sample-node \ --node-type m5.large \ --nodes 3 \ --nodes-min 3 \ --nodes-max 4 \ --alb-ingress-access \ --asg-access
https://qiita.com/purini-to/items/89cf41ed6ac02c1114bc
https://kun432.hatenablog.com/entry/what-aws-resources-eksctl-create
$ eksctl create cluster \ --name eks-test \ --vpc-public-subnets $PUBSUBNET1,$PUBSUBNET2 \ --vpc-private-subnets $PRVSUBNET1,$PRVSUBNET2 \ --region ap-northeast-1 \ --version 1.17 \ --nodegroup-name eks-nodegroup \ --node-private-networking \ --ssh-access \ --node-type t2.small \ --nodes 2 \ --nodes-min 2 \ --nodes-max 5 \ --ssh-public-key=xxx_key
https://tech.smartcamp.co.jp/entry/eksctl-handson
$ eksctl get cluster NAME REGION eks-sample ap-northeast-1
$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 10h $ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 172.20.0.1 <none> 443/TCP 10m
$ kubectl get nodes NAME STATUS ROLES AGE VERSION ip-10-0-0-130.ap-northeast-1.compute.internal Ready <none> 5m v1.14.7-eks-1861c5
eksctlで以下のIAMロールが作成されます
eksctl delete cluster --name クラスタ名
$ eksctl delete cluster \ --name eks-sample \ --wait
https://qiita.com/purini-to/items/89cf41ed6ac02c1114bc
eksctl create cluster -f <yaml file>
cluster.yaml
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: eks-sample region: ap-northeast-1 # yamlならコメントも記載できます。 # MultiAZ availabilityZones: ["ap-northeast-1a", "ap-northeast-1c", "ap-northeast-1d"] nodeGroups: - name: eks-sample-node instanceType: m5.large # 3AZ保つための最低数 desiredCapacity: 3 minSize: 3 maxSize: 10 iam: withAddonPolicies: autoScaler: true albIngress: true
eksctl create cluster -f cluster.yaml
cluster.yml
nodeGroups: - name: eks-sample-node ..... # プライベートネットワークにノードグループを作成 - name: eks-sample-private-node instanceType: m5.large desiredCapacity: 3 minSize: 3 maxSize: 10 privateNetworking: true
eksctl create nodegroup --config-file=cluster.yaml --include='eks-sample-private-node'
https://kun432.hatenablog.com/entry/what-aws-resources-eksctl-create
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: eks-test region: ap-northeast-1 version: "1.17" vpc: id: "vpc-0dd338ecf29863c55" cidr: "10.0.0.0/16" subnets: private: ap-northeast-1c: id: "subnet-aaaaaaaaaaaaaaaa" cidr: "10.0.0.0/24" ap-northeast-1d: id: "subnet-bbbbbbbbbbbbbbbb" cidr: "10.0.1.0/24" public: ap-northeast-1c: id: "subnet-cccccccccccccccc" cidr: "10.0.2.0/24" ap-northeast-1d: id: "subnet-dddddddddddddddd" cidr: "10.0.3.0/24" managedNodeGroups: - name: eks-ng-blue instanceType: t2.small desiredCapacity: 2 minSize: 2 maxSize: 5 privateNetworking: true ssh: publicKeyName: xxx_key allow: true labels: {role: worker} tags: nodegroup-role: worker