ToB企服应用市场:ToB评测及商务社交产业平台

标题: Flink 设置3:kubernetes(K8S) 部署 Flink 集群环境 [打印本页]

作者: 滴水恩情    时间: 2024-8-15 19:10
标题: Flink 设置3:kubernetes(K8S) 部署 Flink 集群环境
Flink 部署笔记:

1. Flink ConfigMap


  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4.   name: flink-config
  5.   labels:
  6.     app: flink
  7. data:
  8.   flink-conf.yaml: |+
  9.     jobmanager.rpc.address: flink-jobmanager
  10.     taskmanager.numberOfTaskSlots: 1
  11.     blob.server.port: 6124
  12.     jobmanager.rpc.port: 6123
  13.     taskmanager.rpc.port: 6122
  14.     jobmanager.heap.size: 1024m
  15.     taskmanager.memory.process.size: 1024m
  16.   log4j.properties: |+
  17.     log4j.rootLogger=INFO, file
  18.     log4j.logger.akka=INFO
  19.     log4j.logger.org.apache.kafka=INFO
  20.     log4j.logger.org.apache.hadoop=INFO
  21.     log4j.logger.org.apache.zookeeper=INFO
  22.     log4j.appender.file=org.apache.log4j.FileAppender
  23.     log4j.appender.file.file=${log.file}
  24.     log4j.appender.file.layout=org.apache.log4j.PatternLayout
  25.     log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
  26.     log4j.logger.org.apache.flink.shaded.akka.org.jboss.netty.channel.DefaultChannelPipeline=ERROR, file
复制代码

  1. kubectl create -f flink-configuration-configmap.yaml
复制代码

  1. kubectl get configmap
复制代码
2. JobManager Service


  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: flink-jobmanager
  5. spec:
  6.   type: ClusterIP
  7.   ports:
  8.   - name: rpc
  9.     port: 6123
  10.   - name: blob
  11.     port: 6124
  12.   - name: ui
  13.     port: 8081
  14.   selector:
  15.     app: flink
  16.     component: jobmanager
复制代码

  1. kubectl create -f jobmanager-service.yaml
复制代码
3. JobManager Deployment


  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: flink-jobmanager
  5. spec:
  6.   replicas: 1
  7.   selector:
  8.     matchLabels:
  9.       app: flink
  10.       component: jobmanager
  11.   template:
  12.     metadata:
  13.       labels:
  14.         app: flink
  15.         component: jobmanager
  16.     spec:
  17.       containers:
  18.       - name: jobmanager
  19.         image: flink:1.17.1-scala_2.12-java8
  20.         workingDir: /opt/flink
  21.         command: ["/bin/bash", "-c", "$FLINK_HOME/bin/jobmanager.sh start;\
  22.           while :;
  23.           do
  24.             if [[ -f $(find log -name '*jobmanager*.log' -print -quit) ]];
  25.               then tail -f -n +1 log/*jobmanager*.log;
  26.             fi;
  27.           done"]
  28.         ports:
  29.         - containerPort: 6123
  30.           name: rpc
  31.         - containerPort: 6124
  32.           name: blob
  33.         - containerPort: 8081
  34.           name: ui
  35.         livenessProbe:
  36.           tcpSocket:
  37.             port: 6123
  38.           initialDelaySeconds: 30
  39.           periodSeconds: 60
  40.         volumeMounts:
  41.         - name: flink-config-volume
  42.           mountPath: /opt/flink/conf
  43.         securityContext:
  44.           runAsUser: 9999  # refers to user _flink_ from official flink image, change if necessary
  45.       volumes:
  46.       - name: flink-config-volume
  47.         configMap:
  48.           name: flink-config
  49.           items:
  50.           - key: flink-conf.yaml
  51.             path: flink-conf.yaml
  52.           - key: log4j.properties
  53.             path: log4j.properties
复制代码

  1. kubectl create -f jobmanager-deployment.yaml
复制代码
4. TaskManager Deployment


  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: flink-taskmanager
  5. spec:
  6.   replicas: 2
  7.   selector:
  8.     matchLabels:
  9.       app: flink
  10.       component: taskmanager
  11.   template:
  12.     metadata:
  13.       labels:
  14.         app: flink
  15.         component: taskmanager
  16.     spec:
  17.       containers:
  18.       - name: taskmanager
  19.         image: flink:1.17.1-scala_2.12-java8
  20.         workingDir: /opt/flink
  21.         command: ["/bin/bash", "-c", "$FLINK_HOME/bin/taskmanager.sh start; \
  22.           while :;
  23.           do
  24.             if [[ -f $(find log -name '*taskmanager*.log' -print -quit) ]];
  25.               then tail -f -n +1 log/*taskmanager*.log;
  26.             fi;
  27.           done"]
  28.         ports:
  29.         - containerPort: 6122
  30.           name: rpc
  31.         livenessProbe:
  32.           tcpSocket:
  33.             port: 6122
  34.           initialDelaySeconds: 30
  35.           periodSeconds: 60
  36.         volumeMounts:
  37.         - name: flink-config-volume
  38.           mountPath: /opt/flink/conf/
  39.         securityContext:
  40.           runAsUser: 9999  # refers to user _flink_ from official flink image, change if necessary
  41.       volumes:
  42.       - name: flink-config-volume
  43.         configMap:
  44.           name: flink-config
  45.           items:
  46.           - key: flink-conf.yaml
  47.             path: flink-conf.yaml
  48.           - key: log4j.properties
  49.             path: log4j.properties
复制代码

  1. kubectl create -f taskmanager-deployment.yaml
复制代码
5. 访问Flink UI

5.1 方法一


5.2 方法二


  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: flink-jobmanager-rest
  5. spec:
  6.   type: NodePort
  7.   ports:
  8.   - name: rest
  9.     port: 8081 #Cluster IP 上监听的端口
  10.     targetPort: 8081 #Pod监听的端口
  11.     nodePort: 30081 #k8s节点上监听的端口
  12.   selector:
  13.     app: flink
  14.     component: jobmanager
复制代码

  1. kubectl create -f jobmanager-rest-service.yaml
复制代码

  1. kubectl get svc
复制代码

6. 克制集群

  1. kubectl delete -f jobmanager-rest-service.yaml
  2. kubectl delete -f jobmanager-service.yaml
  3. kubectl delete -f jobmanager-deployment.yaml
  4. kubectl delete -f taskmanager-deployment.yaml
  5. kubectl delete -f flink-configuration-configmap.yaml
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4