K8Sは分散スケジューリングタスクAirflowを展開します

K8Sは分散スケジューリングタスクAirflowを展開します

[[437218]]

1. 展開要件

Apache Airflow は以下でテストされています:

注意: MySQL 5.x バージョンでは複数のスケジューラを実行できないか、実行に制限があります。スケジューラのドキュメントを参照してください。 MariaDB はテスト/推奨されていません。

注: Airflow テストには SQLite が使用されます。本番環境では使用しないでください。ローカル開発には、SQLite の最新の安定バージョンを使用することをお勧めします。

PS: この記事では、Airflow 安定バージョン 2.1.4 をデプロイし、Kubernetes はバージョン 1.20.x、PostgreSQL は 12.x を使用し、Helm Charts を使用してデプロイします。

2. Helmチャート構成を生成する

PS: デプロイメントには Helm 3 バージョンを使用してください

  1. # Kubernetes エアフロー名前空間を作成する
  2. $ kubectl名前空間エアフローを作成する
  3.  
  4. # エアフローチャート倉庫ソースを追加
  5. $ helm リポジトリに apache-airflowを追加しますhttps://airflow.apache.org
  6.  
  7. # aiarflowソースを更新
  8. $ helm リポジトリの更新 
  9.  
  10. # エアフローチャートのすべてのバージョンを表示します (ここでは、エアフロー 2.1.4 であるチャート 1.2.0 をデプロイすることを選択します)
  11. $ helm リポジトリを検索 apache-airflow/airflow -l
  12.  
  13. 名前チャートバージョン アプリバージョン 説明
  14. apache-airflow/airflow 1.3.0 2.2.1 Apache Airflow をデプロイするための公式 Helm チャート...
  15. apache-airflow/airflow 1.2.0 2.1.4 Apache Airflow をデプロイするための公式 Helm チャート...
  16. apache-airflow/airflow 1.1.0 2.1.2 Apache Airflow をデプロイするための公式 Helm チャート...
  17. apache-airflow/airflow 1.0.0 2.0.2プラットフォームである Apache Airflow をデプロイするためのHelm チャート...
  18.  
  19. # エアフローチャートの値を.yamlファイルにエクスポートする
  20. $ helm show values ​​apache-airflow/airflow --version 1.2.0 > airflow_1.2.4_values.yaml  

3. エアフロー構成を変更する

3.1 永続ストレージStorageClassを構成する

PS: 高速ストレージにはAlibaba Cloud NASをご利用ください

  1. # StorageClass ファイルを編集する
  2. $ vim alicloud-nas-airflow-test.yaml
  3.  
  4. APIバージョン: storage.k8s.io/v1
  5. 種類: ストレージクラス
  6. メタデータ:
  7. 名前: alicloud-nas-airflow-test
  8. マウントオプション:
  9. - ロックなし、TCP、ポートなし
  10. -vers=3
  11. パラメータ:
  12. ボリュームAs: サブパス
  13. サーバー: "xxxxx.cn-beijing.extreme.nas.aliyuncs.com:/share/airflow/"  
  14. プロビジョナー: nasplugin.csi.alibabacloud.com
  15. 回収ポリシー: 保持
  16.  
  17. # K8Sに応募する
  18. $ kubectl apply -f alicloud-nas-airflow-test.yaml

3.2 エアフロー Dags ストレージ ウェアハウス gitSshKey を構成する

  1. # airflow-ssh-secret.yaml ファイルを編集します。まず、shh 公開キーを git プロジェクト リポジトリに追加する必要があります。
  2. $ vim エアフロー-ssh-シークレット.yaml
  3.  
  4. APIバージョン: v1
  5. 種類: 秘密
  6. メタデータ:
  7. 名前: airflow-ssh-secret
  8. 名前空間: エアフロー
  9. データ:
  10. #キーはgitSshKeyである必要があります
  11. gitSshKey: "ssh 秘密鍵、base64"  
  12.  
  13. # K8Sに応募する
  14. $ kubectl apply -f エアフロー-ssh-secret.yaml

3.3 DockerでPostgreSQL 12をデプロイする

  1. # postgresql ストレージディレクトリを作成する
  2. $ mkdir /data/postgresql_data
  3.  
  4. # 起動ファイルを作成する
  5. $ vim docker-compose.yaml
  6.  
  7. バージョン: "3"  
  8.  
  9. サービス:
  10. エアフロー-Postgres:
  11. 画像: postgres:12
  12. 再起動: 常に
  13. コンテナ名: airflow-postgres
  14. 環境:
  15. TZ: アジア/上海
  16. POSTGRES_USER: エアフロー
  17. POSTGRES_パスワード: Airflow123
  18. ボリューム:
  19. -/data/postgresql_data:/var/lib/postgresql/data
  20. ポート:
  21. - 「5432:5432」  
  22.  
  23. # postgresql dockerを起動する
  24. $ docker-compose アップ -d

3.4 airflow_1.2.4_values.yaml設定を変更する

PS: この記事の airflow_1.2.4_values.yaml 構成ファイルには 3 つの pvc が必要です。サービスは redis、ワーカー (1 つのワーカーのみがデプロイされますが、複数のワーカーをデプロイできます)、dags です。

設定ファイルが長すぎるため、詳細は掲載しておりません。具体的な内容については、以下のリンクをご参照ください。

https://github.com/yangpeng14/DevOps/blob/master/config_dir/airflow_1.2.4_values.yaml

4. Airfolwを展開する

  1. # Airflow の最初の導入
  2. $ helm インストール airflow apache-airflow/airflow --namespace airflow --version 1.2.0 -f airflow_1.2.4_values.yaml  
  3.  
  4. # 将来的にエアフロー設定を変更したい場合は、次のコマンドを使用してください
  5. $ helm アップグレード--install airflow apache-airflow/airflow --namespace airflow --version 1.2.0 -f airflow_1.2.4_values.yaml  

5. Airflow Ingress Nginxアクセスエントリを構成する

  1. # Ingress nginx 設定ファイルを生成する
  2. $ vim エアフローイングレス.yaml
  3.  
  4. APIバージョン: networking.k8s.io/v1
  5. 種類: イングレス
  6. メタデータ:
  7. 名前: エアフロー
  8. 名前空間: エアフロー
  9. 注釈:
  10. kubernetes.io/ingress.class: nginx
  11. nginx.ingress.kubernetes.io/ssl-redirect: "false"  
  12. nginx.ingress.kubernetes.io/proxy-connect-timeout : "60 "  
  13. nginx.ingress.kubernetes.io/proxy-read-timeout : "60 "  
  14. nginx.ingress.kubernetes.io/proxy-send-timeout: "60"  
  15. 仕様:
  16. ルール:
  17. - ホスト: "airflow.example.com"  
  18. http:
  19. パス:
  20. - パス:​​ /
  21. パスタイプ: プレフィックス
  22. バックエンド:
  23. サービス:
  24. 名前: airflow-webserver
  25. ポート:
  26. 番号: 8080
  27.  
  28. # K8Sに応募する
  29. $ kubectl apply -f エアフローイングレス.yaml

6. 参考リンク

1. https://github.com/apache/airflow/tree/2.1.4

2. https://airflow.apache.org/docs/helm-chart/1.2.0/index.html

<<:  インターネット分散アーキテクチャの進化に関する簡単な説明

>>:  チップ不足、エッジコンピューティング、IoTが2022年のIT変革を推進する

推薦する

ウェブマスターの道は厳しい、私たちはどこへ向かうのでしょうか?

急速に発展するインターネットの時代に、忘れることのできない、インターネットへの貢献が計り知れない業界...

中秋節後にウェブサイトの総合的な SEO 最適化分析を行うにはどうすればよいでしょうか?

3日間の中秋節の連休はあっという間に過ぎ、今日が仕事初日です。多くのウェブマスターは連休中も頑張って...

消費者実装ロジック - Kafka 知識システム (IV)

[[410017]]前回の記事では、Kafka ブローカーの実装原理、データ ストレージ構造、メッセ...

ついに誰かが「TCC 分散トランザクション」の実装原理を説明しました!

これまでインターネット上で分散トランザクションに関する記事を数多く目にしてきましたが、そのほとんどは...

エンタープライズ向けモバイルウェブサイト構築ソフトウェアの重要性とそれが市場にもたらす利点

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています企業のモバ...

4月の世界OS市場シェア:Windows 7が49.27%で新たなリーダーに

IDC Review Network (idcps.com) は 5 月 14 日に次のように報告し...

業界ウェブサイト構築・運用分析

今日のインターネットでは、さまざまな業界やグループが基本的に独自の業界ウェブサイトを設立しており、一...

ピークサーバー - 2.4 ドル / 1g メモリ / 2g バースト / 50g ハードディスク / 2T トラフィック

設立されてまだ1年も経っていないpeakserversという会社は、高設定で超低価格のプロモーション...

パフォーマンスが2倍になります! Cloud Native GatewayはTLSハードウェアアクセラレーションをサポート

ネットワーク環境がますます複雑になるにつれて、従来の HTTP プレーンテキスト伝送プロトコルによっ...

エッジコンピューティングで IoT パフォーマンスを向上させるにはどうすればよいでしょうか?

モノのインターネット (IoT) 開発の初期の前提の 1 つは、すべての物理要素間での通信の共有であ...

Mafengwo ビッグデータ プラットフォームにおける Kafka クラスターの最適化とアプリケーション拡張

Kafka は人気のあるメッセージ キュー ミドルウェアです。大量のデータをリアルタイムで処理でき、...

ショックホスティングはどうですか?ダラスデータセンターのVPSの簡単なテスト

shockhosting は、ダラス データ センターで VPS および専用サーバー サービスを提供...

短期的にインクルージョンと重量の利点を改善する方法

インクルージョンはウェブサイトの最適化において非常に重要な要素です。私たちが作成したコンテンツは、ユ...

3年間ウェブサイトを構築してきましたが、何も達成できず、A5の壁に直面しています。

時が経つのは早いものです。A5 に関する記事を最後に書いたのは 1 年前だったと記憶しています。それ...