Skip to main content

Flink Upgrade (Cross-Version)

  1. Delete ConfigMap and clean up flink Job list

    Execute script to delete ConfigMap in batches:

    If words like configmap "md-flink" deleted are not output, it means the namespace is wrong or ConfigMap does not exist, please check again.

    #Template: Please replace <namespace> with the actual namespace of your flink deployment
    for i in $(kubectl -n <namespace> get cm | awk '$1~"md-flink"{print $1}'); do kubectl -n <namespace> delete cm $i; done

    #Example (namespace is flink):
    for i in $(kubectl -n flink get cm | awk '$1~"md-flink"{print $1}'); do kubectl -n flink delete cm $i; done
  2. Import the image of the corresponding architecture into all Flink nodes (Offline Package Download)

    crictl pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-flink:version
  3. Modify configuration file

    Modify the image version used by flink-jobmanager and flink-taskmanager services in flink.yaml

    - name: jobmanager
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-flink:version
    - name: taskmanager
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-flink:version
    When upgrading to v1.19.710, click to view more adjustment details of flink.yaml
    1. Delete all original configuration items starting with metrics, and add the following Kafka indicator reporting configuration (please replace the Kafka address according to the actual environment):

      metrics.job.status.enable: STATE
      metrics.reporters: kafka_reporter,kafka_reporter_running,kafka_reporter2,kafka_reporter_running2
      metrics.reporter.kafka_reporter.factory.class: org.apache.flink.metrics.kafka.KafkaReporterFactory
      metrics.reporter.kafka_reporter.bootstrap.servers: 192.168.10.7:9092,192.168.10.8:9092,192.168.10.9:9092 #kafka address
      metrics.reporter.kafka_reporter.chunk.size: 20000
      metrics.reporter.kafka_reporter.interval: 60s
      metrics.reporter.kafka_reporter.filter.metrics: numRecordsIn,numRecordsOut,runningTime
      metrics.reporter.kafka_reporter.topic: flink_metrics_counter
      metrics.reporter.kafka_reporter.taskNamePrefix: HDP0x5c2_
      metrics.reporter.kafka_reporter_running.factory.class: org.apache.flink.metrics.kafka.KafkaReporterFactory
      metrics.reporter.kafka_reporter_running.bootstrap.servers: 192.168.10.7:9092,192.168.10.8:9092,192.168.10.9:9092 #kafka address
      metrics.reporter.kafka_reporter_running.chunk.size: 20000
      metrics.reporter.kafka_reporter_running.interval: 60s
      metrics.reporter.kafka_reporter_running.filter.metrics: RUNNINGState
      metrics.reporter.kafka_reporter_running.topic: flink_metrics_gauge
      metrics.reporter.kafka_reporter_running.taskNamePrefix: HDP0x5c2_
      metrics.reporter.kafka_reporter2.factory.class: org.apache.flink.metrics.kafka.KafkaReporterFactory
      metrics.reporter.kafka_reporter2.bootstrap.servers: 192.168.10.7:9092,192.168.10.8:9092,192.168.10.9:9092 #kafka address
      metrics.reporter.kafka_reporter2.chunk.size: 20000
      metrics.reporter.kafka_reporter2.interval: 60s
      metrics.reporter.kafka_reporter2.filter.metrics: numRecordsIn,numRecordsOut,runningTime
      metrics.reporter.kafka_reporter2.topic: flink_metrics_counter-hdp
      metrics.reporter.kafka_reporter2.taskNamePrefix: HDP0x5c2_
      metrics.reporter.kafka_reporter_running2.factory.class: org.apache.flink.metrics.kafka.KafkaReporterFactory
      metrics.reporter.kafka_reporter_running2.bootstrap.servers: 192.168.10.7:9092,192.168.10.8:9092,192.168.10.9:9092 #kafka address
      metrics.reporter.kafka_reporter_running2.chunk.size: 20000
      metrics.reporter.kafka_reporter_running2.interval: 60s
      metrics.reporter.kafka_reporter_running2.filter.metrics: RUNNINGState
      metrics.reporter.kafka_reporter_running2.topic: flink_metrics_gauge-hdp
      metrics.reporter.kafka_reporter_running2.taskNamePrefix: HDP0x5c2_
    2. Find the kind: Role configuration section and add patch permissions to the configmaps resource under the rules.verbs field.

      kind: Role
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
      name: configmap-access
      namespace: default
      rules:
      - apiGroups: [""]
      resources: ["configmaps"]
      verbs: ["update", "get", "watch", "list", "create", "edit", "delete", "patch"] #Add patch permission here
  4. Restart the service

    kubectl apply -f flink.yaml
  5. After the upgrade is completed, please manually reopen/publish the relevant tasks in the synchronization task list, and the synchronization tasks will resume normal operation.