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

推薦する

IBM Feng Liang: ハイブリッドクラウド時代のネイティブセキュリティ

今年の突然の疫病の発生は、企業にとって前例のない「試練」をもたらした。この過程で、私たちはさまざまな...

首都空港はアリババクラウドETアビエーションブレインを初めて導入し、1日1,700便のフライトをスケジュールし、5,000時間を節約

空港のディスパッチャーであれば、毎日 1,700 便の離着陸便が駐機位置を待っています。考慮すべき要...

VMware の革新的なテクノロジーがマルチクラウド ネットワーキングとセキュリティを再定義

VMware (NYSE: VMW) は本日、拡大を続けるネットワークおよびセキュリティ ポートフォ...

ウェブサイトSEOの焦点は最適化ではなく監視です

みなさんこんにちは。私はMuzi Chengzhouです。 Baidu 検索研究開発部の公式ブログの...

クラウドのエンドポイントセキュリティについて知っておくべきこと

クラウド セキュリティは、今日のテクノロジー業界で流行語となっていますが、それには十分な理由がありま...

インテリジェントハードウェアの意味についての簡単な分析

概要: ハードウェア インテリジェンスは、今日最も注目されている開発方向となっています。しかし、現在...

過去2年間の共同購入:資本によって推進された「資金燃焼」競争

Tuanbao.comのCEOである任春雷氏は、春節期間中に「包囲」された最初の共同購入大物となり、...

オートホーム、米国で株式公開を計画:最大1億2000万ドルを調達

新浪科技報、北京時間11月5日朝のニュースによると、中国の自動車情報ウェブサイトAutohomeは本...

企業のマーケティング計画が成果を生まないのはなぜでしょうか?

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

推奨: TmzVPS - $6/2g メモリ/8 コア/100g ハードディスク/2T トラフィック/G ポート/ロサンゼルス/webnx

tmzvps.com の最新の VPS プロモーション情報: 50% オフの割引コード: L5T6Y...

チャンネルプロモーション: より少ない費用でより質の高いボリュームを実現するにはどうすればよいでしょうか?

「インターネット後半」という概念は、2016年に美団の王興CEOによって提唱された。大まかな意味は、...

一部の共同購入企業がJuhuasuanに参加:生き残るか未来を諦めるか

資金と交通量の不足という状況の中で、いくつかの独立した共同購入企業は、敵であり味方でもある Juhu...

Yalo-2.5 USD / 512M RAM / 100G HDD / 10Tフロー

yalo.io は、2009 年に設立されたと主張しています (実際の状況は確認できません)。Goo...

外部リンク構築スキルを向上させる3つの段階

かつて、SEO の同僚が 628K サイト後の Baidu のアルゴリズムの方向性について推測してい...