文章目錄
1. 實驗環境
Kubernetes集羣:
3臺4G的虛擬機,CentOS 7.7版本
kubernetes集羣的版本:
Kubernetes v1.16.0
k8s 1.16 和 k8s 1.15 的區別:
k8s 1.16 版本以後 Deployment 的 api 改變了,所以再來一遍
2. 集羣搭建
2.1 k8s1.16 版本的 Yaml 配置
k8s 1.16 版本以後,Deployment 的 apiVersion 變爲了 apps/v1 , 並且需要在spec 中加入 selector.matchLabels.app
2.1.1 JobManager Yaml 配置
主要提供運行JobManager組件鏡像的參數配置,包括JobManager自身的參數,例如RPC端口等配置信息:
apiVersion: apps/v1
kind: Deployment
metadata:
name: flink-jobmanager
spec:
selector:
matchLabels:
app: flink
replicas: 1
template:
metadata:
labels:
app: flink
component: jobmanager
spec:
containers:
- name: jobmanager
image: flink:1.9
args:
- jobmanager
ports:
- containerPort: 6123
name: rpc
- containerPort: 6124
name: blob
- containerPort: 6125
name: query
- containerPort: 8081
name: ui
env:
- name: JOB_MANAGER_RPC_ADDRESS
value: flink-jobmanager
2.1.2 TaskManager Yaml 配置
主要提供運行TaskManager組件的參數配置,以及TaskManager自身的參數,例如RPC端口等配置信息:
apiVersion: apps/v1
kind: Deployment
metadata:
name: flink-taskmanager
spec:
selector:
matchLabels:
app: flink
replicas: 3
template:
metadata:
labels:
app: flink
component: taskmanager
spec:
containers:
- name: taskmanager
image: flink:1.9
args:
- taskmanager
ports:
- containerPort: 6121
name: data
- containerPort: 6122
name: rpc
- containerPort: 6125
name: query
env:
- name: JOB_MANAGER_RPC_ADDRESS
value: flink-jobmanager
2.1.3 JobManagerServices 配置
主要爲Flink Session 集羣提供對外的RestApi和UI地址,使得用戶可以通過Flink UI 的方式訪問集羣並獲取任務和監控信息,配置文件如下:
apiVersion: v1
kind: Service
metadata:
name: flink-jobmanager
spec:
type: NodePort
ports:
- name: rpc
port: 6123
- name: blob
port: 6124
- name: query
port: 6125
- name: ui
port: 8081
nodePort: 30001
selector:
app: flink
component: jobmanager
2.2 啓動Flink Session Cluster
當各個組件服務配置文件定義完畢後,就可以通過使用以下Kubectl命令,創建Flink Session Cluster,集羣啓動完成後就可以通過JobManagerServices中配置的WebUI端口訪問 Flink Web 頁面。
kubectl create -f jobmanager-service.yaml
kubectl create -f jobmanager-deployment.yaml
kubectl create -f taskmanager-deployment.yaml
使用如下命令,查看pod:
kubectl get pods -o wide
然後訪問Flink 的 Web UI 界面:
2.3 停止Flink Session Cluster
kubectl delete-f jobmanager-service.yaml
kubectl delete -f jobmanager-deployment.yaml
kubectl delete -f taskmanager-deployment.yaml