■ はじめに
https://dk521123.hatenablog.com/entry/2023/03/05/235755
で、Windowsのローカル上に、Apache Flink の環境構築したのだが Kubernetes (Amazon EKS) で構築することになったので 予習として、自分のローカル上に構築してみる。
目次
【1】Kubernetes によるApache Flink構築の種類 1)Standalone Mode 2)Native Mode 3)Kubernetes Operator 【2】設定環境 【3】設定手順 0)Kubernetesクラスタの起動 1)Helmのインストール 2)Flink Kubernetes operatorのインストール 3)コンテナイメージの作成 4)FlinkDeployment の apply 5)ポートフォワーディングの設定
【1】Kubernetes によるApache Flink構築の種類
1)Standalone Mode 2)Native Mode 3)Kubernetes Operator
1)Standalone Mode
* 各コンポーネント(JobManager、Taskamanager)のPodそれぞれが起動し続ける
2)Native Mode
* Flink Job毎にTask ManagerのPodが立ち上がり、Jobの終了に伴いそのPodも終わる
3)Kubernetes Operator
* 監視・対応をするOperatorが常駐し、必要なコンポーネントを管理
【2】設定環境
* OS: Ubuntu 20.04 (Windows10のWSL2上) * K8S: minikube v1.30.1
【3】設定手順
* 今回は、「Kubernetes Operator」で構築してみる
0)Kubernetesクラスタの起動
環境の確認
# Validate minikube minikube version # Validate kubectl kubectl version
Kubernetesクラスタ(Minikube)を起動
# Minikube の稼働状況を確認 minikube status minikube start
1)Helmのインストール
* Helm のインストールおよび詳細については、以下の関連記事を参照のこと
Kubernetes ~ 基本編 / Helm ~
https://dk521123.hatenablog.com/entry/2023/05/11/000840
2)Flink Kubernetes operatorのインストール
helm repo add flink-operator-repo https://downloads.apache.org/flink/flink-kubernetes-operator-1.4.0/ # 「"flink-operator-repo" has been added to your repositories」って言われる helm install flink-kubernetes-operator flink-operator-repo/flink-kubernetes-operator # 以下のように出力される # NAME: flink-kubernetes-operator # LAST DEPLOYED: Tue May 9 23:52:21 2023 # NAMESPACE: default # STATUS: deployed # REVISION: 1 # TEST SUITE: None
3)コンテナイメージの作成
[1] 実行したいjarを用意
# 今回は、サンプルの「WordCount.jar」を使用する mkdir flink cd flink # Apache Flink Download (See https://flink.apache.org/downloads/) wget https://dlcdn.apache.org/flink/flink-1.17.0/flink-1.17.0-bin-scala_2.12.tgz # Unzip tar xvzf flink-1.17.0-bin-scala_2.12.tgz # Copy WordCount.jar cp ./flink-1.17.0/examples/streaming/WordCount.jar ./ # To confirm WordCount.jar ls -l
[2] Dockerfileを作成する
vi Dockerfile
# 内容は、以下の「Dockerfile」を参照
Dockerfile
https://flink.apache.org/downloads/
FROM flink:1.17.0 ENV FLINK_PLUGINS_DIR=/opt/flink/plugins COPY WordCount.jar $FLINK_PLUGINS_DIR/hadoop-fs/
[3] コンテナイメージを作成する
docker image build -t flink-with-word-count:v.0.0.1 . # minikubeで動かす場合は、build後に以下を行う minikube image load flink-with-word-count:v.0.0.1 # 「Killed」と出力
4)FlinkDeployment の apply
[2] FlinkDeploymentファイルを作成する
vi kubernetes-operator-for-flink.yml # 内容は、以下「kubernetes-operator-for-flink.yml」を参照
kubernetes-operator-for-flink.yml
apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-example spec: image: flink-with-word-count:v.0.0.1 imagePullPolicy: Never flinkVersion: v1_17 flinkConfiguration: taskmanager.numberOfTaskSlots: "2" serviceAccount: flink jobManager: resource: memory: "2048m" cpu: 1 taskManager: resource: memory: "2048m" cpu: 1 job: jarURI: local:////opt/flink/plugins/hadoop-fs/WordCount.jar parallelism: 2
[2] FlinkDeploymentファイルをapply
kubectl apply -f kubernetes-operator-for-flink.yml # 「flinkdeployment.flink.apache.org/basic-example created」が出力
[3] 動作確認
# Podの確認(Runningになるまで時間かかるかも) kubectl get pod # 詳細が知りたい場合は、以下。 kubectl describe pods # Serviceの確認 kubectl get service
5)ポートフォワーディングの設定
kubectl port-forward svc/basic-example-rest 8081
参考文献
https://qiita.com/KentOhwada_AlibabaCloudJapan/items/2f68a913925012dfaa76
https://zenn.dev/notrogue/articles/73a919cb192b2a
https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-release-1.5/docs/try-flink-kubernetes-operator/quick-start/
関連記事
Apache Flink ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/03/01/235100
Apache Flink ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/05/235755
Apache Flink ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/29/000000
Apache Flink ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/07/23/161621
Kubernetes ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2020/04/27/224624
Kubernetes ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/05/04/013529
Kubernetes ~ 基本編 / kubectlコマンド ~
https://dk521123.hatenablog.com/entry/2022/01/12/110555
Kubernetes ~ 基本編 / Helm ~
https://dk521123.hatenablog.com/entry/2023/05/11/000840
Amazon EKS ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/02/23/000000