代码仓库
代码已同步到GitHub
https://github.com/turbo-duck/flink-demo
背景介绍
单机模式
我们在上一章中验证了它,但是如果我们想要真正执行它,我们需要将它发送到服务器并执行它。
集群模式
在上一章中,我们看到使用Docker进行部署(以方便测试)。同时,还使用容器编排工具docker-compose进行集群模式部署。
快速测试1 x JobManager + 1 x TaskManager 集群模式1 x JobManager + 3 x TaskManagerHA 模式2 x JobManager + Zookeeper + 3 x TaskManager
不过用上面的docker-compose编排方式,还是在一台机器上。在实际生产环境中,您可能需要同时部署多台机器。最优的解决方案是动态扩容和动态缩容,最大限度地提高资源利用率。
云原生部署
首先,确保您拥有Kubernetes,然后您可以尝试使用yaml 进行部署,以利用Rancher 的可视化来简化您的体验。最后,在生产环境中,可以使用Helm + Flink Operator 来大大简化流程。
Yaml
JobManager
需要开放的端口有:
这是完整的Yaml:
apiVersion: 应用程序/v1
kind: 状态集
元数据:
注释:
field.cattle.io/creatorId: u-s4mkr
field.cattle.io/publicEndpoints: \'[{\’地址\’:[\’10.10.52.11\’],\’端口\’:31120,\’协议\’:\’TCP\’,\’serviceName\’:\’flink-server:jobmanager-nodeport\’,\’allNodes\’ :true},{\’地址\’:[\’10.10.52.11\’],\’端口\’:30985,\’协议\’:\’TCP\’,\’serviceName\’:\’flink-server:jobmanager-nodeport\’,\’allNodes\’:true},{\’地址\’:[\’10.10.52.11\’],\’端口\’:30166,\’协议\’:\’TCP\’,\’服务名称\’:\’flink-server:jobmanager-nodeport\’,\’allNodes\’:true}]\’
创建时间戳: \’2023-06-08T08:49:14Z\’
第: 代21
标签:
诺曼
工作负载.user.cattle.io/workloadselector: statefulSet-flink-server-jobmanager
管理领域:
– apiVersion: 应用程序/v1
现场类型: 现场V1
现场V1:
f: 元数据:
f: 注释:
. {}
f:field.cattle.io/creatorId: {}
f:field.cattle.io/publicEndpoints: {}
f: 标签:
. {}
f:cattle.io/creator: {}
f:workload.user.cattle.io/workloadselector: {}
f: 规格:
f:podManagementPolicy: {}
f: 副本: {}
f:revisionHistoryLimit: {}
f:selector: {}
f: 服务名称: {}
f: 模板:
f: 元数据:
f: 注释:
. {}
f:cattle.io/timestamp: {}
f:field.cattle.io/ports: {}
f: 标签:
. {}
f:workload.user.cattle.io/workloadselector: {}
f: 规格:
f: 容器:
k:{\’名称\’:\’作业管理器\’}:
. {}
f:args: {}
f:env:
. {}
k:{\’名称\’:\’JOB_MANAGER_RPC_ADDRESS\’}:
. {}
f: 名称: {}
f:value: {}
f: 图像: {}
f:imagePullPolicy: {}
f: 名称: {}
f: 端口:
. {}
k:{\’容器端口\’:6123,\’协议\’:\’TCP\’}:
. {}
f: 容器端口: {}
f: 名称: {}
f: 协议: {}
k:{\’容器端口\’:6124,\’协议\’:\’TCP\’}:
. {}
f: 容器端口: {}
f: 名称: {}
f: 协议: {}
k:{\’容器端口\’:8081,\’协议\’:\’TCP\’}:
. {}
f: 容器端口: {}
f: 名称: {}
f: 协议: {}
f: 资源: {}
f: 安全上下文:
. {}
f:allowPrivilegeEscalation: {}
f: 能力: {}
f: 特权: {}
f:readOnlyRootFilesystem: {}
f:runAsNonRoot: {}
f:stdin: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:tty: {}
f:dnsConfig: {}
f:dnsPolicy: {}
f:restartPolicy: {}
f: 调度程序名称: {}
f:securityContext: {}
f:terminationGracePeriodSeconds: {}
f: 更新策略:
f:type: {}
经理: 牧场主
操作:更新
time: \’2023-06-08T11:20:03Z\’
– apiVersion: 应用程序/v1
现场类型: 现场V1
现场V1:
f: 状态:
f: 冲突次数: {}
f:currentReplicas: {}
f:currentRevision: {}
f:observedGeneration: {}
f:readyReplicas: {}
f: 副本: {}
f: 更新修订版: {}
f: 更新副本: {}
manager: kube-controller-manager
操作:更新
time: \’2024-06-27T01:24:45Z\’
name: 职位经理
命名空间: flink 服务器
资源版本:\’126393476\’
uid: 461079aa-69f6-423e-85b7-36fdc5c513e7
规格:
podManagementPolicy: OrderedReady
复制品: 1
修订历史限制: 10
选择器:
匹配标签:
工作负载.user.cattle.io/workloadselector: statefulSet-flink-server-jobmanager
服务名称: 工作经理
模板:
元数据:
注释:
牛.io/timestamp: \’2023-06-08T11:18:06Z\’
field.cattle.io/ports: \'[[{\’containerPort\’:8081,\’dnsName\’:\’jobmanager-nodeport\’,\’hostPort\’:0,\’kind\’:\’NodePort\’,\’名称\’:\’jm81\’,\’协议\’ :\’TCP\’,\’sourcePort\’:31120},{\’containerPort\’:6123,\’dnsName\’:\’jobmanager-nodeport\’,\’hostPort\’:0,\’kind\’:\’NodePort\’,\’名称\’:\’jm23\’,\’协议\’:\’TCP\’},{\’containerPort\’:6124,\’dnsName\’:\’jobmanager-nodeport\’,\’hostPort\’:0,\’kind\’:\’NodePort\’,\’名称\’:\’jm24\’,\’协议\’:\’TCP \’}]]\’
创建时间戳: null
标签:
工作负载.user.cattle.io/workloadselector: statefulSet-flink-server-jobmanager
规格:
集装箱:
-args:
– 职位经理
环境:
– name: JOB_MANAGER_RPC_ADDRESS
value: 工作经理
图片: 10.10.52.8/Flink/Flink
imagePullPolicy: 始终
name: 职位经理
端口:
– 集装箱港口: 8081
姓名: jm81
协议: TCP
– 集装箱港口: 6123
姓名: jm23
协议: TCP
– 集装箱港口: 6124
姓名: jm24
协议: TCP
资源: {}
安全上下文:
允许权限升级: 假
功能: {}
特权: 假
readOnlyRootFilesystem: 假
runAsNonRoot: 假
stdin: 真
TerminationMessagePath: /dev/termination-log
TerminationMessagePolicy: 文件
tty: 正确
dnsConfig: {}
dnsPolicy: 集群优先
总是重启策略:
调度程序名称: 默认调度程序
securityContext: {}
宽限期结束秒数: 30
更新策略:
type:滚动更新
状态:
碰撞次数: 0
当前副本: 1
当前版本: jobmanager-6ddbf8767b
观察代数: 21
女士复制品: 1
复制品: 1
updateRevision: JobManager-6ddbf8767b
更新副本: 1
TaskManager
需要开放的端口有:
这是完整的Yaml:
apiVersion: 应用程序/v1
kind: 状态集
元数据:
注释:
field.cattle.io/creatorId: u-s4mkr
field.cattle.io/publicEndpoints: \'[{\’地址\’:[\’10.10.52.11\’],\’端口\’:31538,\’协议\’:\’TCP\’,\’serviceName\’:\’flink-server:taskmanager-nodeport\’,\’allNodes\’ :true},{\’地址\’:[\’10.10.52.11\’],\’端口\’:30067,\’协议\’:\’TCP\’,\’serviceName\’:\’flink-server:taskmanager-nodeport\’,\’allNodes\’:true}]\’
创建时间戳: \’2023-06-08T08:49:30Z\’
第: 代10
标签:
诺曼
工作负载.user.cattle.io/workloadselector: statefulSet-flink-server-taskmanager
管理领域:
– apiVersion: 应用程序/v1
现场类型: 现场V1
现场V1:
f: 元数据:
f: 注释:
. {}
f:field.cattle.io/creatorId: {}
f:field.cattle.io/publicEndpoints: {}
f: 标签:
. {}
f:cattle.io/creator: {}
f:workload.user.cattle.io/workloadselector: {}
f: 规格:
f:podManagementPolicy: {}
f: 副本: {}
f:revisionHistoryLimit: {}
f:selector: {}
f: 服务名称: {}
f: 模板:
f: 元数据:
f: 注释:
. {}
f:cattle.io/timestamp: {}
f:field.cattle.io/ports: {}
f:field.cattle.io/publicEndpoints: {}
f: 标签:
. {}
f:workload.user.cattle.io/workloadselector: {}
f: 规格:
f: 容器:
k:{\’名称\’:\’任务管理器\’}:
. {}
f:args: {}
f:env:
. {}
k:{\’名称\’:\’JOB_MANAGER_RPC_ADDRESS\’}:
. {}
f: 名称: {}
f:value: {}
f: 图像: {}
f:imagePullPolicy: {}
f: 名称: {}
f: 端口:
. {}
k:{\’容器端口\’:6121,\’协议\’:\’TCP\’}:
. {}
f: 容器端口: {}
f: 名称: {}
f: 协议: {}
k:{\’容器端口\’:6122,\’协议\’:\’TCP\’}:
. {}
f: 容器端口: {}
f: 名称: {}
f: 协议: {}
f: 资源: {}
f: 安全上下文:
. {}
f:allowPrivilegeEscalation: {}
f: 特权: {}
f:readOnlyRootFilesystem: {}
f:runAsNonRoot: {}
f:stdin: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:tty: {}
f:dnsPolicy: {}
f:restartPolicy: {}
f: 调度程序名称: {}
f:securityContext: {}
f:terminationGracePeriodSeconds: {}
f: 更新策略:
f:type: {}
经理: 牧场主
操作:更新
time: \’2023-06-08T11:20:40Z\’
– apiVersion: 应用程序/v1
现场类型: 现场V1
现场V1:
f: 状态:
f: 冲突次数: {}
f:currentReplicas: {}
f:currentRevision: {}
f:observedGeneration: {}
f:readyReplicas: {}
f: 副本: {}
f: 更新修订版: {}
f: 更新副本: {}
manager: kube-controller-manager
操作:更新
时间: \’2024-06-
27T01:24:58Z\”
name: taskmanager
namespace: flink-server
resourceVersion: \”126393537\”
uid: 9ddfa3b3-b497-43af-9bb6-af83ffa0aed3
spec:
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
workload.user.cattle.io/workloadselector: statefulSet-flink-server-taskmanager
serviceName: taskmanager
template:
metadata:
annotations:
cattle.io/timestamp: \”2023-06-08T11:19:53Z\”
field.cattle.io/ports: \'[[{\”containerPort\”:6121,\”dnsName\”:\”taskmanager-nodeport\”,\”kind\”:\”NodePort\”,\”name\”:\”tm21\”,\”protocol\”:\”TCP\”},{\”containerPort\”:6122,\”dnsName\”:\”taskmanager-nodeport\”,\”kind\”:\”NodePort\”,\”name\”:\”tm22\”,\”protocol\”:\”TCP\”}]]\’
field.cattle.io/publicEndpoints: \'[{\”addresses\”:[\”10.10.52.11\”],\”allNodes\”:true,\”port\”:31538,\”protocol\”:\”TCP\”,\”serviceId\”:\”flink-server:taskmanager-nodeport\”},{\”addresses\”:[\”10.10.52.11\”],\”allNodes\”:true,\”port\”:30067,\”protocol\”:\”TCP\”,\”serviceId\”:\”flink-server:taskmanager-nodeport\”}]\’
creationTimestamp: null
labels:
workload.user.cattle.io/workloadselector: statefulSet-flink-server-taskmanager
spec:
containers:
– args:
– taskmanager
env:
– name: JOB_MANAGER_RPC_ADDRESS
value: jobmanager
image: 10.10.52.8/flink/flink
imagePullPolicy: Always
name: taskmanager
ports:
– containerPort: 6121
name: tm21
protocol: TCP
– containerPort: 6122
name: tm22
protocol: TCP
resources: {}
securityContext:
allowPrivilegeEscalation: false
privileged: false
readOnlyRootFilesystem: false
runAsNonRoot: false
stdin: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
tty: true
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
updateStrategy:
type: RollingUpdate
status:
collisionCount: 0
currentReplicas: 1
currentRevision: taskmanager-6fd48fdb8d
observedGeneration: 10
readyReplicas: 1
replicas: 1
updateRevision: taskmanager-6fd48fdb8d
updatedReplicas: 1
测试效果
控制台
(根据自己的情况)
http://10.10.52.11:31120/#/overview
扩容TaskManager
当我们对 TaskManager 进行扩容的时候,这里我扩展了 5个,正在逐步扩容,完毕之后 ,我们可以对应观察到控制台中的:
HA模式
同样的操作,你需要在 K8s 集群中用如下的方案来做高可用方案:
3 x JobManagerN x TaskManagerZookeeper
#以上关于Flink的相关内容来源网络仅供参考,相关信息请以官方公告为准!
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92495.html