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変革を推進する

推薦する

最適化されたウェブマスターの垂直思考をお持ちですか?

ウェブサイトの最適化は、もはや神秘的なものではありません。多くのウェブマスターは、大量の外部リンクを...

タオバオストアにおける悪質な競争を防ぐための戦略の分析

競争は常にライバル関係にあり、それはオンラインストア経営の世界に鮮明に反映されています。この言葉は伝...

NameServer、Zookeeper、違いが分からない

[[386520]]この記事はWeChatの公開アカウント「大宇賢人」から転載したもので、著者は大宇...

Weiboマーケティング活動を効果的に行うにはどうすればいいですか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス要点1: ルールは明確か...

sharktech: 1~10Gbps トリプルネットワーク直接接続無制限トラフィックサーバー、60G 高防御内蔵、7 月のプロモーションで 50% オフ

Sharktechはプロモーションを実施しています(2018年7月)。今回は1Gbpsの帯域幅から1...

Alibaba Cloudは、クラウド上で5分でデータベースのバックアップを完了できるデータベースバックアップサービスDBSの正式商用化を発表

アリババクラウドは7月11日、データベースバックアップサービス「DBS」が正式に商用利用を開始したと...

ウェブサイトモデルの推奨: 電子商取引の「購入前に試す」モデルが増加中

北京時間6月20日、海外メディアの報道によると、専門家の予測によれば、オンラインショッピングの市場規...

クラウドサービス利用の課題: 間違ったアーキテクチャは硬直性と失敗を意味する

クラウドサービスの移行作業は膨大です。残念ながら、私たちはオンプレミス展開でのこれまでの経験という狭...

チケット代理店のウェブサイトは生き残るために低価格の罠を仕掛ける:激しい競争で利益を上げるのが困難

最近、多くの消費者が、航空券代理店のウェブサイトによる詐欺的な販売に遭遇しています。これらの代理店は...

海外プロモーションに必須、世界の広告チャネル最新ランキング!

AppsFlyerは9月24日、2019年上半期のベストモバイルメディアチャネルのランキングを掲載し...

解決策と欠点: WeChat はマーケティング ツールからどれくらい遠いのでしょうか?

鋭い武器はその鋭さで知られ、第二に血を流します。武術の世界で最も有名な武器は、龍殺しの剣と天剣です。...

Hadoop 分散ストレージと従来の SQL ストレージの比較とストレージ操作の説明

Google は急速に増加するデータ処理に対処するための一連のアルゴリズムを開発しました。その後、誰...

ケーススタディ: ウェディング写真サイトのユーザーエクスペリエンスを向上させる方法

最近、私はウェディング フォトグラフィーの Web サイトを最適化しており、インターネット上で友好的...

eHiレンタカーの人事異動:3か月以内に複数の上級幹部が辞任

北京の記者、李卓中国第2位のレンタカー会社であるeHi Car Rentalは、経営陣の異例の人事異...

福建省南部の靴産業における電子商取引のビジネスはゆっくりではあるが着実に成長している。

もしあなたが3年前に何をすべきか知っていたら、何千年もの間裕福で繁栄していたでしょう。将来を把握する...