Kubnernetes入門書(AWS EKS)をやっていきなりつまづいた
GW初日でKubnernetes入門しようかと書籍を購入してみたのですが
AWS側の仕様変更でいきなりつまづいたので書いてみます
書籍
Kubernetes on AWS~アプリケーションエンジニア 本番環境へ備える
エラー内容
書籍通り、EKSクラスターを作成。
その後、
$ kubectl get nodes
No resources found.
EKSクラスターに接続するできるか確認するために打鍵するように記載があったのですが、どうやらエラーの模様・・・
原因
EKSクラスターを構築する方法ですが、執筆時点ではMC(マネジメントコンソール)とeksctlというCLIの2パターン存在するようです。
書籍ではeksctlで作成するのですが、実際はコマンドの引数に応じてCloudFormationサービスがいい感じに諸々作成してくれるので、デバッグがEKS初心者には中々厳しかったです。。。
リンク先の英文を見ると
Upcoming Changes to IP Assignment for EKS Managed Node Groups
Starting April 20, 2020 April 22,2020, we’ll be updating the behavior of managed nodes groups to no longer assign public IPs to nodes. After this date, public IP assignment must be controlled via the subnet settings where the node is instantiated.
This change will only affect new managed node groups created on or after April 20th April 22nd, the behavior of existing managed node groups will not change.
どうやら、いままではデフォルトでパブリックIPアドレスを自動でEC2に割り当てていたのをやめたみたいです。
今後はVPC(サブネット)の自動割り当てIPの設定でコントロールしてくれとのこと。
ノード用のEC2をみると、確かにプライベートIPしか採番されていなかったです。
おそらくパブリックIPがないので、ローカルPCからNodeへの疎通が取れないのが原因だった模様。
改善
1. サブネットの自動割り当てIPを有効化
VPCの画面から、サブネットを選択して「自動割り当てIP設定の変更」を選択
※ちなみにMCではなく、NW周り用のスタックテンプレートを修正して、UpdateStackでも良いかと思います。
2. EC2を再作成(ASG)
確かパブリックIPはEC2を再作成しないと割り当てしてくれなかった気がしたので、
AutoScalingGroup経由でEC2を再作成。
(EC2の停止→起動で行けたような気もしますが、確認しませんでした。。。
試してみていけなればこの手順でお願いします)
「希望キャパシティ」「最小」を0にして保存します。
しばらくすると、グループ内のEC2を0にしてくれます。
その後、再度「希望キャパシティ」「最小」を元の数値に戻して保存すると
EC2が新しく作成されます。
3.確認
無事にパブリックIPがEC2に割当たった状態で
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-1-150.ap-northeast-1.compute.internal Ready <none> 5m13s v1.14.9-eks-1f0ca9
ip-192-168-2-63.ap-northeast-1.compute.internal Ready <none> 5m17s v1.14.9-eks-1f0ca9
ようやく見えました。。。。。
##最後に
書籍内でVPC周りは用意されたCFnテンプレートで作成するので、AWSの知識が薄い方はつらいのかなーと思い執筆してみました。
EKSはAWSサービス複数を自動で管理してくれるサービスのようなので、何かエラーがあるときは各々のサービスにある程度知識がないとついらんだなー感じましたw。
この書籍を2020/05以降購入された方は必ず突き当たると思われるので、是非ご参考に!!!!