【flink配置系列】FLINK Local Recovery Enabled TaskManager StatefulSet

Local Recovery Enabled TaskManager StatefulSet

配置文件主要功能

这个配置文件用于部署启用本地恢复(Local Recovery)功能的 Flink TaskManager 的 Kubernetes StatefulSet。

  • 定义了一个名为 flink-config 的 ConfigMap,用于存储 Flink 的配置信息。
  • 在 ConfigMap 中设置了一些关键的配置项,如 JobManager 的 RPC 地址、TaskManager 的任务槽数量、Blob Server 端口等。
  • 定义了一个名为 taskmanager-hl 的 Service,类型为 ClusterIP,并将其与 TaskManager 相关联。
  • 定义了一个名为 flink-taskmanager 的 StatefulSet,指定了与之关联的 Service 名称、副本数和选择器。
  • 在 Pod 模板中定义了一个名为 taskmanager 的容器,使用 apache/flink:latest 镜像。
  • 设置容器的安全上下文,将容器的用户 ID 设置为 9999,并将文件系统组 ID 设置为 9999。
  • 在容器中设置了环境变量和启动参数,其中 -Dtaskmanager.resource-id=$(POD_NAME) 用于指定 TaskManager 的资源 ID。
  • 将容器的两个端口映射到相应的容器端口:6122(RPC)和 6121(Metrics)。
  • 配置了一个活跃探测(liveness probe),通过 TCP Socket 探测容器的 6122 端口,延迟 30 秒后开始探测,每 60 秒进行一次探测。
  • 挂载名为 flink-config-volume 的卷到容器的 /opt/flink/conf/ 目录,该卷来自 ConfigMap flink-config 中的两个文件。
  • 定义了一个名为 pv 的持久卷声明(PersistentVolumeClaim),用于挂载到容器的 /pv 目录。

配置文件加上中文注释

apiVersion: v1
kind: ConfigMap
metadata:
  name: flink-config   # ConfigMap 的名称
  labels:
    app: flink
data:
  flink-conf.yaml: |+   # Flink 的配置信息
    jobmanager.rpc.address: flink-jobmanager
    taskmanager.numberOfTaskSlots: 2
    blob.server.port: 6124
    jobmanager.rpc.port: 6123
    taskmanager.rpc.port: 6122
    state.backend.local-recovery: true   # 启用本地恢复功能
    process.taskmanager.working-dir: /pv    # 设置 TaskManager 工作目录为 /pv

---
apiVersion: v1
kind: Service
metadata:
  name: taskmanager-hl   # Service 的名称
spec:
  clusterIP: None   # ClusterIP 类型,不分配 Cluster IP
  selector:
    app: flink
    component: taskmanager   # 选择标签为 app=flink 和 component=taskmanager 的 Pod

---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: flink-taskmanager   # StatefulSet 的名称
spec:
  serviceName: taskmanager-hl   # 关联的 Service 名称
  replicas: 2   # 设置副本数为 2,启动两个 TaskManager 实例
  selector:
    matchLabels:
      app: flink
      component: taskmanager   # 选择标签为 app=flink 和 component=taskmanager 的 Pod
  template:
    metadata:
      labels:
        app: flink
        component: taskmanager   # 在 Pod 模板中设置标签 app=flink 和 component=taskmanager
    spec:
      securityContext:
        runAsUser: 9999   # 将容器的用户 ID 设置为 9999
        fsGroup: 9999   # 将文件系统组 ID 设置为 9999
      containers:
      - name: taskmanager   # 容器名称为 taskmanager
        image: apache/flink:latest   # 使用 apache/flink:latest 镜像
        env:
          - name: POD_NAME   # 设置环境变量 POD_NAME,获取 Pod 的名称
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
        args: ["taskmanager", "-Dtaskmanager.resource-id=$(POD_NAME)"]   # 启动参数指定 TaskManager 的资源 ID
        ports:
        - containerPort: 6122   # 将容器的 6122 端口映射为 RPC 端口
          name: rpc
        - containerPort: 6121   # 将容器的 6121 端口映射为 Metrics 端口
          name: metrics
        livenessProbe:   # 配置活跃探测
          tcpSocket:
            port: 6122   # 通过 TCP Socket 探测容器的 6122 端口
          initialDelaySeconds: 30   # 延迟 30 秒后开始进行探测
          periodSeconds: 60   # 每 60 秒进行一次探测
        volumeMounts:
        - name: flink-config-volume   # 挂载名为 flink-config-volume 的卷到容器的 /opt/flink/conf/ 目录
          mountPath: /opt/flink/conf/
        - name: pv   # 挂载名为 pv 的持久卷到容器的 /pv 目录
          mountPath: /pv
      volumes:
      - name: flink-config-volume   # 定义名为 flink-config-volume 的卷
        configMap:
          name: flink-config   # 从 ConfigMap flink-config 中获取卷的内容
          items:
          - key: flink-conf.yaml
            path: flink-conf.yaml
          - key: log4j-console.properties
            path: log4j-console.properties
  volumeClaimTemplates:   # 定义持久卷声明
  - metadata:
      name: pv   # 持久卷声明的名称
    spec:
      accessModes: [ "ReadWriteOnce" ]   # 访问模式为 ReadWriteOnce
      resources:
        requests:
          storage: 50Gi   # 请求 50Gi 的存储容量

官方链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值