AlmaLinuxでKubernetes(k8s)環境を構築

Linux

はじめに

本記事では、AlmaLinuxを使用して、Kubernetes(k8s)環境を構築する方法について記載いたします。
ここでは、Control Plainノード×1台とWorkerノード×1台のシンプルな環境を構築します。

環境

  • OS
    AlmaLinux release 9.5 (Teal Serval)
  • Container Runtime Interface(CRI)
    Containerd v2.0.4
  • Kubernetes(k8s)
    v1.32
  • Container Network Interface(CNI)
    calico v3.29.2

Kubernetes(k8s)環境

  • Control-Planeノード
    ホスト名:cp
    IPアドレス:192.168.10.50
  • Workerノード
    ホスト名:worker01
    IPアドレス:192.168.10.51
  • Podネットワーク
    CIDR:192.168.20.0/24

事前準備

SELinuxの設定

1.SELinuxの設定を「permissive」に変更します。

2.変更を反映するため、AlmaLinuxを再起動します。

firewalldの無効化

ここでは、firewalldを無効化します。

IPv4 packet forwardingの有効化

1.IPv4パケットのフォワーディングを有効化します。

2.設定を反映します。

3.「net.ipv4.ip_forward = 1」に設定されていることを確認します。

swapの設定

1.swapを無効化します。

2.「/etc/fstab」を以下のとおり、編集します。

Container Runtime Interface (CRI)のインストール

ここでは、CRIとして「containerd」を使用します。

Containerdのインストール

1.「Containerd」のアーカイブファイルをダウンロードします。

2.ダウンロードしたアーカイブファイルを展開します。ここでは、「/usr/local」に展開します。

3.systemdを使用するため、「containerd.service」をダウンロードします。

4.ダウンロードしたファイルをコピーします。

5.リロードした後、「containerd」サービスを有効化します。

runcのインストール

1.「runc」バイナリファイルをダウンロードします。

2.「/usr/local/sbin/runc」にインストールします。

Container Network Interface(CNI) pluginsのインストール

1.「CNI plugins」ファイルをダウンロードします。

2.「/opt/cni/bin」に展開します。

systemd cgroup driverの設定

1.「config.toml」を作成します。

2.「systemd cgroup driver」を使用するように、「/etc/containerd/config.toml」を編集します。

3.変更内容を反映するため、「containerd」を再起動します。

kubeadmのインストール

1.「Kubernetes」リポジトリを「yum」リポジトリに追加します。

2.「kubelet」、「kubeadm」、「kubectl」をインストールします。

Control-Planeノードの構築

Clusterの作成

「kubeadm」コマンドを使用して、Clusterを作成します。
コントロールプレーンノードの共有エンドポイントとして、ホスト名(DNS名)を使用します。
ここでは、名前解決の方法として、「hosts」ファイルを使用します。

1.「/etc/hosts」ファイルを編集します。

2.名前解決ができることを確認します。

3,コントロールプレーンを初期化します。
  ここでは、「pod network cidr」を「192.168.20.0/24」とします。
  ※このCIDRは、Container Network Interface(CNI)で指定するCIDRと一致させる必要があります。

4.メッセージに記載されている通り、一般ユーザーでコマンドを実行できるようにします。

5.コントロールプレーンの稼働確認を行います。
  「STATUS」が「NotReady」となっていますが、これは、「Container Network Interface(CNI)」がインストールされていないためです。

Container Network Interface(CNI)のインストール

「Pod」が相互に通信できるようにするためには、Container Network Interface(CNI)ベースの「Pod」ネットワークアドオンを実装する必要があります。
ここでは、「Calico」を実装します。

1.Tigeraオペレーター定義ファイルをダウンロードします。

2.Tigeraオペレーターとカスタムリソース定義をインストールします。

3.Tigeraオペレーターの確認を行います。

4.カスタムリソースファイルをダウンロードします。

5.ダウンロードした「custom-resources.yaml」を編集します。
  「pod network CIDR」を「kebeadm init」で指定した「192.168.20.0/24」に修正します。

6.カスタムリソース定義に基づいて、「Calico」をインストールします。

7.インストール確認を行います。
  すべての「STATUS」が「Running」となれば完了です。

8.コントロールプレーン(Node)の状態を確認します。
  「STATUS」が「Ready」となっていることを確認します。

9.Podの状態を確認します。
  すべての「STATUS」が「Running」となっていることを確認します。

Workerノードの構築

WorkerノードをClusterに追加する前に、Control-Planeノードで行った以下の作業を行います。

  • 事前準備
  • 「containerd」のインストール
  • 「runc」のインストール
  • 「CNI plugins」のインストール
  • 「systemd cgroup driver」の設定
  • 「kubeadmのインストール」

Workerノードの追加

Control-Planeノードの構築で実行した「kubeadm init」コマンドの結果に記載されているコマンドを実行します。

Clusterに参加します。

Control-Planeノードでworkerノードが追加されていることを確認します。

以上で終了です。

タイトルとURLをコピーしました