1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

raspiでk3sクラスタを構築してairflowをデプロイしてみた

Posted at

概要

以下の構成でraspiでk3sクラスタを構築しその上にairflowをデプロイしたのでメモ

前提知識

  • k3s
    • 概要:
      K3s は、その小 さなシングルバイナリ、ネイティブ ARM サポート、および本番環境に適した高可用性アーキテクチャに より、エッジシステムでクラスターを自動初期化および維持する理想的な Kubernetes ディストリビュー ションです。(公式サイト参照)
    • 採用理由:
      k8sをkubeadmなどを利用してインストールするよりも簡便にインストールできるため今回こちらを採用
  • airflow
    • 概要:
      Apache Airflowは、データエンジニアリングパイプライン用のオープンソースのワークフロー管理プラットフォームである。2014年10月[1]にAirbnbで開発が始まり、ますます複雑化する社内のワークフローを管理するためのソリューション
      (wikipedia参照)
    • 採用理由:
      業務で触るため...+自宅のnature remoなどのデータを溜め込んでみたいと思っておりバッチ処理をさせるため
  • longhorn
    • 概要:
      Longhornは複数のサーバ内のストレージをソフトウェアで束ね、仮想的に巨大なストレージを構成。ユーザーはその仮想的なストレージに対してボリュームサイズやIOPS性能、レプリカ数などを指定し、仮想マシンやコンテナにマウントして利用を開始することができます。
      (public-keyサイト参照)
    • 採用理由:
      k3sではデフォルトだとlocal-pathのストレージを使用する形になっているが、それだと冗長性に難があるので分散ストレージを採用

構成

  • サーバー
    • raspi4×4
  • OS
    • raspberry Pi OS (32-bit)
  • k8sクラスタ
    • k3s:v1.24.14+k3s1

tmp.drawio.png

1.raspiのセットアップ

1-1 OSのインストール

Raspberry pi imagerを使いRaspberry Pi OS (32-bit)をインストール

1-2 apt upgradeを実行
sudo apt upgrade
1-3 cgroupの有効化
sudo vi /boot/cmdline.txt

/boot/cmdline.txt に cgroup_memory=1 cgroup_enable=memory を追加

2.k3sのインストール

2-1 control-planeへのk3sインストール

公式サイトのインストール手順をもとにcontrol-planeをインストール

※longhornがk8sのv1.2.5に1.2.5に対応していないためk3sもそれ以前のバージョンを指定している

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.24.14+k3s1 sh -
2-2 worker-nodeへのk3sインストール

同じく公式サイトのインストール手順を元にworker-nodeをインストール

 curl -sfL https://get.k3s.io |   INSTALL_K3S_VERSION=v1.24.14+k3s1   K3S_URL=https://{Controll-Planeのip}:6443   K3S_TOKEN={TOKEN}   sh -

3.helmのインストール

公式サイトのスクリプトからのインストール方法を選択
https://helm.sh/ja/docs/intro/install/

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

4.longhornのインストール

4-1.longhornのインストール

下記のコマンドでlonghornをインストールする

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.3.0/deploy/longhorn.yaml
4-2 longhornをデフォルトStorageClassに設定

こちらの記事を参考にデフォルトのStorageClassを変更

5.airflowのインストール

control-planeにて下記のコマンドを実行。
公式サイトのhelmを使用。執筆時点で最新のv1.9.0をインストール

helm repo add apache-airflow https://airflow.apache.org
helm upgrade --install airflow apache-airflow/airflow --namespace airflow --create-namespace

6. uiへのアクセス

control-planeで以下のコマンドを実行し、同一NWの端末からブラウザでhttp://{control-planeのip}:8080へアクセス。

 kubectl port-forward svc/airflow-webserver 8080:8080 --address="0.0.0.0" -n airflow

下記のUIが表示されるのでid/passを入れてログイン(デフォルトだとadmin/adminになっている)
スクリーンショット 2023-06-04 18.53.08.png

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?