LoginSignup
1
2

オンプレ環境の Kubernetes に MetalLB を使って Load Balancer Type の Service を使えるようにしてみる。

Last updated at Posted at 2023-10-17

今回は自宅の Kubernetes クラスターMetalLB を導入してみました。

環境

今回の環境は下記のとおりです。

開発端末

  • OS: Windows 11 Pro
  • CPU: Intel Core i7-9750H
  • メモリ: 64GB
  • GPU: NVIDIA GeForce RTX 2070 Max-Q

Kubernetes クラスター

  • Master Node:Raspberry Pi 4 (8GB) x3
  • Worker Node:Raspberry Pi 4 (8GB) ×3
  • Worker Node:Raspberry Pi 400 (4GB) ×1
  • Load Balancer:MetalLB
  • Helm:v3.12.3
  • NFS Server:Raspberry Pi 4 (4GB)
  • ルーター: NanoPi R5C(OS:FriendlyWrt)

※NanoPi R5C および FriendlyWrt については下記を参考にしてください。

MetalLB の導入

MetalLB を導入するにあたって、 Helm を利用しています。
なお、 Raspberry PiHelm を導入する方法については、下記の記事を参考にしてください。

root ユーザーに昇格

事前に root ユーザーに昇格しておきます。

su root

ARP の許可設定

変更前の確認を行い、異なる箇所を出力します。

kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e ""s/strictARP: false/strictARP: true/"" | \
kubectl diff -f - -n kube-system

変更を適用します。

kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e ""s/strictARP: false/strictARP: true/"" | \
kubectl apply -f - -n kube-system

作業ユーザーに戻る

exit

リポジトリの追加

リポジトリの追加を行います。

sudo helm repo add metallb https://metallb.github.io/metallb

Helm チャートリポジトリの更新

リポジトリの追加を行ったので、チャートリポジトリの最新情報を取得するために更新を行います。

sudo helm repo update

MetalLB のインストール

helm install コマンドを利用して、 MetalLB のインストールを行います。

sudo helm install metallb metallb/metallb -n metallb-system \
    --namespace metallb-system --create-namespace

定義ファイル保存ディレクトリの作成

IPアドレスプールの定義ファイルを保存するためのディレクトリを作成します。

mkdir -p ~/kubernetes/metallb

IPアドレスプールの定義ファイルの作成

IPアドレスプールの定義ファイルを作成します。

sudo nano ~/kubernetes/metallb/ipaddresspool.yml
ipaddresspool.yml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  name: default
  namespace: metallb-system
spec:
  addresses:
  - 192.168.10.200-192.168.10.254
  autoAssign: true
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: default
  namespace: metallb-system
spec:
  ipAddressPools:
  - default

addresses192.168.10.200-192.168.10.255 の部分はご自身のネットワーク環境にあわせて変更してください。

IPアドレスプールのデプロイ

IPアドレスプールの定義ファイルを作成したら、デプロイします。

sudo kubectl apply -f ~/kubernetes/metallb/ipaddresspool.yml	

参考文献

下記のサイトを参考にさせて頂きました。

1
2
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
1
2