0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2(Amazon Linux 2023)にkubeadmでkubernetesクラスターを構築してみる(node準備編)

Posted at

ubuntu・CentOS・Amazon Linux2でkubernetesクラスターを構築した記事は多くありますが、Amazon Linux2023(FedoraベースOS)では少ない気がしたので、kubernetesクラスターの仕組み理解と共にnode準備編、mater-node編とworker-node編の全3回に分けて構築してみたいと思います。

構成図

構成図.png

環境

  • vpc CIDR: 10.0.0.0/21
  • os: Amazon Linux2023
  • インスタンスタイプ
    • master-node: t3.small
    • worker-node: t3.medium
  • ECSボリューム(master node):
    • master node: 10GB
    • worker node: 20GB
  • kubernetes version: v1.27
  • コンテナランタイム: containerd (v1.7.11)

インスタンスタイプを選定するのに参考にしたドキュメント

作業内容

  1. セキュリティグループを2つ作成する
    1. master-node用のセキュリティグループを作成する
    2. worker-node用のセキュリティグループを作成する
    3. master-node用のセキュリティグループにwoker-nodeのネットワークインターフェイスを追加する
  2. master-nodeを作成する
  3. worker-nodeを作成する
  4. 各Nodeのhostを変更する(option)

1. セキュリティグループを2つ作成する

master-nodeとworker-nodeのセキュリティグループは使い回しでも検証なら問題ないのですが、今回はmaster-nodeとworker-nodeでそれぞれで解放すべきPortを理解する為に別々に作成します。
公式ドキュメントには以下のような表があります。

Screen Shot 2023-12-18 at 9.45.10.png

今回は必要最低限なPortのみを解放する方針で以下のように設定します。

  • master-node
    • 6443 (woker-nodeがkubernetes APIと通信する為に解放します)
    • 10250 (woker-nodeにmetrics-serverをdeployした場合などにkubelet APIと通信する為に解放します)
  • worker-node
    • 10250 (master-nodeがwoker-nodeのkubelet APIと通信する為に解放します)
    • 30000-32767 (nodePortとして解放します、ターゲットグループのPortとかになります)

他の表に記載されているポートはmaster-node内での通信となるので特にPortは解放しませんが、インストールするPluginに合して適時解放して下さい。

1-1. master-node用のセキュリティグループを作成する

  1. kubernetesクラスターを構築するのにSSHをしないといけないので22ポートを解放して下さい。ソースは0.0.0.0でもいいですし、接続元が自宅からのみなら自宅のGIPでも問題ないです。

Screen Shot 2023-12-18 at 9.59.34.png

1-2. worker-node用のセキュリティグループを作成する

ここで作成したセキュリティグループはwoker-node共通で使う想定です。

  1. 1-1で作成したセキュリティグループidをコピーする
  2. 30000-32767ポートをソースをvpc CIDRにし解放する
  3. 10250ポートをソースを1-1で作成したセキュリティグループidにし解放する
  4. 22ポートをソースを1-1で作成したセキュリティグループidにし解放する

※ ソースをセキュリティグループidに設定しているのはセキュリティグループに関連付けられたネットワークインターフェイス単位でトラフィック許可を管理しworker-nodeが増えた場合にも増えたwoker-nodeのipを随時セキュリティグループに追加する手間を省く為になります。

Screen Shot 2023-12-18 at 10.02.58.png

1-3. master-node用のセキュリティグループにwoker-nodeのネットワークインターフェイスを追加する

  1. 2-1で作成したセキュリティグループidをコピーする
  2. 10250ポートをソースを2-1で作成したセキュリティグループidにし解放する
  3. 6443ポートをソースを2-1で作成したセキュリティグループidにし解放する

Screen Shot 2023-12-18 at 10.15.39.png

2. master-nodeを作成する

  1. 名前とタグ: 任意の名前
  2. Application and OS Images: Amazon Linux 2023 AMI
  3. アーキテクチャ: 64ビット(x86)
  4. インスタンスタイプ: t3.small
  5. キーペア: 任意のキーペア
  6. ネットワーク
    1. VPC: 任意のVPC
    2. サブネット: 任意のpublic subnet
    3. パブリック IP の自動割り当て: 有効化
    4. ファイアウォール (セキュリティグループ): ファイアウォール (セキュリティグループ)を選択し、1-1で作成したセキュリティグループを選択する
  7. ストレージを設定: 10GB

3. worker-nodeを作成する

アプリケーションを稼働させる想定で、インスタンスタイプとストレージを設定をmaster-nodeより少し上げます。

  1. 名前とタグ: 任意の名前
  2. Application and OS Images: Amazon Linux 2023 AMI
  3. アーキテクチャ: 64ビット(x86)
  4. インスタンスタイプ: t3.medium
  5. キーペア: 任意のキーペア
  6. ネットワーク
    1. VPC: 任意のVPC
    2. サブネット: 任意のprivate subnet
    3. パブリック IP の自動割り当て: 無効化
    4. ファイアウォール (セキュリティグループ): ファイアウォール (セキュリティグループ)を選択し、2-1で作成したセキュリティグループを選択する
  7. ストレージを設定: 20GB

4. 各Nodeのhostを変更する(option)

EC2の場合hostnameはip-xxx-xxx-xxx-xxx.ap-northeast-1.compute.internalみたいになっており、kubernetesクラスター作成要件のユニークなhostnameは満たしていますが、変更したい方向けに変更方法も記載します。※ 変更しなくても問題はありません

  • hostnameの変更
$ hostnamectl set-hostname master-node
  • hostsへ自ホストを追加
$ vim /etc/hosts

#vim editerが開いたら
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6
#以下追加
<private_ip> master-node
  • os再起動
    ※ コンソールからでも大丈夫です。
$ shutdown -r now

※ woker-nodeのhostnameを変更したら忘れずにmster-nodeの/etc/hostsに追加をして下さい。

$ vim /etc/hosts

#vim editerが開いたら
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6
#以下追加
<worker_node_private_ip> <worker_node_hostname>

まとめ

今回はnode準備編として、master-nodeとworker-nodeのインスタンスを構築しました。
本番運用も想定しセキュリティー的に必要最低限のポートを判断する過程でコンポーネント間の通信理解が深まりました。
次回から今回構築したnodeにkubernetesクラスターを構築していきたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?