Kubernetes设置
本页介绍如何在Kubernetes上部署Flink作业和会话群集。
设置Kubernetes
请按照Kubernetes的设置指南来部署Kubernetes集群。如果您想在本地运行Kubernetes,我们建议您使用MiniKube。
注意:如果使用MiniKube,请确保minikube ssh 'sudo ip link set docker0 promisc on'
在部署Flink群集之前执行。否则,Flink组件无法通过Kubernetes服务自行引用自己。
Kubernetes上的Flink会话群集
Flink会话群集作为长期运行的Kubernetes部署执行。请注意,您可以在会话群集上运行多个Flink作业。部署群集后,需要将每个作业提交到群集。
Kubernetes中的基本Flink会话群集部署有三个组件:
- 部署/作业运行JobManager
- 部署TaskManagers池
- 公开JobManager的REST和UI端口的服务
在Kubernetes上部署Flink会话群集
使用会话群集的资源定义,使用以下kubectl
命令启动群集:
kubectl create -f jobmanager-service.yaml
kubectl create -f jobmanager-deployment.yaml
kubectl create -f taskmanager-deployment.yaml
然后,您可以通过kubectl proxy
以下方式访问Flink UI :
kubectl proxy
在终端中运行- 导航到HTTP://本地主机:8001/API/V1/命名空间/默认/服务/Flink-jobmanager:UI/代理服务器在您的浏览器要终止Flink会话群集,请使用
kubectl
:
kubectl delete -f jobmanager-deployment.yaml
kubectl delete -f taskmanager-deployment.yaml
kubectl delete -f jobmanager-service.yaml
Kubernetes上的Flink工作集群
Flink作业集群是运行单个作业的专用集群。这项工作是镜像的一部分,因此,不需要额外的工作提交。
创建特定于作业的镜像
Flink作业集群映像需要包含启动集群的作业的用户代码jar。因此,需要为每个作业构建专用的容器镜像。请按照这些说明构建Docker镜像。
在Kubernetes上部署Flink作业集群
要在Kubernetes上部署作业集群,请按照这些说明进行 算子操作。
高级群集部署
GitHub上提供了早期版本的Flink Helm图表。
附录
会话群集资源定义
部署定义使用flink:latest
可在Docker Hub上找到的预构建映像。该映像是从这个Github存储库构建的。
jobmanager-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: flink-jobmanager
spec:
replicas: 1
template:
metadata:
labels:
app: flink
component: jobmanager
spec:
containers:
- name: jobmanager
image: flink:latest
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
taskmanager-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: flink-taskmanager
spec:
replicas: 2
template:
metadata:
labels:
app: flink
component: taskmanager
spec:
containers:
- name: taskmanager
image: flink:latest
args:
- taskmanager
ports:
- containerPort: 6121
name: data
- containerPort: 6122
name: rpc
- containerPort: 6125
name: query
env:
- name: JOB_MANAGER_RPC_ADDRESS
value: flink-jobmanager
jobmanager-service.yaml
apiVersion: v1
kind: Service
metadata:
name: flink-jobmanager
spec:
ports:
- name: rpc
port: 6123
- name: blob
port: 6124
- name: query
port: 6125
- name: ui
port: 8081
selector:
app: flink
component: jobmanager