AmazonEKSを使ったKubernetes環境を作ってみる(Windows)

  • このエントリーをはてなブックマークに追加

はじめに

・動作環境
WindowsでkubernetesもDocker for windows経由でインストール。
kubectlもインストール済み 公式のGetting started通りにやっていきます。
相変わらずAWSのドキュメントは初学者に易しくない
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/getting-started.html

Goal

AWS上のkubernetesクラスターとローカル環境を繋ぐところまでやってみます。

EKSの利用権限を持ったIAMロールを作成

kubernetesがEKSを通してリソースの作成ができるように権限を付与したロールを作成します コンソールからIAMを開き
ロール→ロールの作成でEKSを選択し、次へ
そのまま次へ
そのまま次へ
ロールに名前をつけます。ここでは「EksServiceRole」とします

AWSクラスターVPCの作成

IAMから CloudFormationに移動
右上のリージョンを「アジアパシフィック(東京)」に変更
「新しいスタックの作成」ボタンをクリック
AmazonS3テンプレートURLの指定を選択し、以下のURLを入力して、次へ
https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-11-07/amazon-eks-vpc-sample.yaml
スタックの名前を「eks-vpc」に設定、他はデフォルト値のまま、次へ

そのまま次へ、
最後に確認ページに遷移するので、作成ボタンを押下

aws-iam-authenticatorのインストール

以下をダウンロードし、環境変数のPATHが通っているところに配置 https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/windows/amd64/aws-iam-authenticator.exe
コマンドラインで確認
設定ができていればhelpが表示される

EKSクラスターの作成

理解が足りていないのだけど、
公式のEKSとは?の画像を見る限り、これでkubernetes masterが作られるんでしょう
CloudFormationからEKSのメニューに移動
左メニューのEKSを選択後、Create Clusterを選択
  • ClusterName : 任意の名前
  • Kubernetes version : 最新のやつ
  • Role Name : 前の手順で作成したIAMロールを選択
  • VPC : 前の手順で作成したAWS EKSクラスターVPCを選択
  • Subnet : VPCを選択すると自動で選択されるので操作不要
  • SecurityGroup : 前の手順でAWS EKSクラスターVPCを作成した際に生成されるセキュリティーグループ

EKSのkubectlを設定する

AWS CLIが必要になってきます。
インストール方法はこちらが分かりやすかったので参考にさせていただきました
https://www.skyarch.net/blog/?p=7583
以下コマンドでAWSでやりとりする際のアカウント情報等を設定。
以下のコマンドを実行し、kubectlに作成したeksクラスターを紐づけていきます 以下コマンドでkubernetesのcontextに追加され、
currentに設定されていることがわかります 以降はkubectlコマンドで操作できます。

EKSワーカーノードを作成する

※前提 
EKSがEC2インスタンスの生成をするため、
事前にEC2のキーペアの作成が必要です。 
EC2のメニューから作成しましょう。 CloudFormationメニューを開く
スタックの作成をクリック S3 テンプレート URL の指定に以下を入力して「次へ」
https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-11-07/amazon-eks-nodegroup.yaml
  • Stack name: 任意の名前、ここでは「eks-worker」と設定
  • Cluster Name:前の手順で作成したeksクラスターの名前。
  • ClusterControlPlaneSecurityGroup: AWSクラスターVPC作成の手順で作成されたセキュリティグループID (下に小さくVPC名が出てるのでわかるはず)
  • NodeGroupName:任意の名前、ここでは「eks-worker-node-group」と設定
  • NodeAutoScalingGroupMinSize:ワーカーノードの Auto Scaling グループがスケールインする最小ノード数。 デフォルトのまま
  • NodeAutoScalingGroupMaxSize:ワーカーノードの Auto Scaling グループがスケールアウトする最大ノード数。デフォルトのまま
  • NodeInstanceType:ワーカーノードのインスタンスタイプ。
  • NodeImageId:各リージョンに合わせたAMIを設定する必要がある。ここを「Amazon EKS-optimized AMI」でページ内検索するとリージョン毎の表があるのでそこから自分のリージョンのものを入力
  • KeyName: 起動後に、SSH を使用してワーカーノードに接続するときに使用できる Amazon EC2 SSH キーペアの名前を入力
  • VpcId: AWSクラスターVPC作成の手順で作成されたVPC ID (下に小さくVPC名が出てるのでわかるはず)
  • Subnets: AWSクラスターVPC作成の手順で作成されたSubnet ID (下に小さくVPC名が出てるのでわかるはず)
※ NodeInstanceTypeにt2.microを指定したい場合
t2.smallしか選択できないじゃん!
無料枠があるのでt2.microを使いたい!って人もいると思うのでメモ。
↑でS3テンプレートに指定したyamlを直接ダウンロードし、以下のように編集します
当手順の最初の画面で「テンプレートをAmazonS3にアップロード」で編集したファイルを選択すると次画面で選べるようになります。
ただ、リソース不足でpodの起動に失敗することもしばしば、、、
「次へ」を選択し、作成を選ぶ

ワーカーノードとVPCクラスターを結合する

まずは以下のyamlをダウンロード https://amazon-eks.s3-us-west-2.amazonaws.com/cloudformation/2018-11-07/aws-auth-cm.yaml
以下の内容になっているので
rolearnの値を編集する CloudFormationのメニューを開き、EKSワーカーを選択し、出力タブを開く
そこに表示されている「NodeInstanceRole」の値に置き換える
値を置き換えたら下記コマンドで反映する 成功するとnodeが確認できるようになる あとはローカルでリソース作っていたときの容量でやれるはず、、、
一旦ここまで。
  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*