【flink on k8s】部署flink-operator

【梳理】k8s使用Operator搭建Flink集群(高可用可选) 本文内容来源于Flink官网,进行翻译、简化、整理,供大家参考~ 阅读详情

1.准备各个配置文件

crd.yaml

apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: flinkapplications.flink.k8s.io
spec:
  group: flink.k8s.io
  names:
    kind: FlinkApplication
    listKind: FlinkApplicationList
    plural: flinkapplications
    singular: flinkapplication
    shortNames:
      - flinkapp
  scope: Namespaced
  version: v1beta1
  versions:
    - name: v1beta1
      served: true
      storage: true
    - name: v1alpha1
      served: true
      storage: false
  validation:
    # openAPIV3Schema is the schema for validating custom objects.
    openAPIV3Schema:
      type: object
      properties:
        spec:
          type: object
          properties:
            image:
              type: string
            imagePullPolicy:
              type: string
              enum: [Always, Never, IfNotPresent]
            imagePullSecrets:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
            serviceAccountName:
              type: string
            securityContext:
              type: object
              properties:
                fsGroup:
                  type: integer
                  minimum: 1
                  maximum: 65535
                runAsGroup:
                  type: integer
                  minimum: 1
                  maximum: 65535
                runAsNonRoot:
                  type: boolean
                runAsUser:
                  type: integer
                  minimum: 1
                  maximum: 65535
                supplementalGroups:
                  type: array
                  items:
                    type: integer
                    minimum: 1
                    maximum: 65535
            jarName:
              type: string
            programArgs:
              type: string
            entryClass:
              type: string
            flinkVersion:
              type: string
            restartNonce:
              type: string
            parallelism:
              type: integer
              minimum: 1
            deleteMode:
              type: string
              enum: [Savepoint, None, ForceCancel]
            allowNonRestoredState:
              type: boolean
            deploymentMode:
              type: string
              enum: [Dual, BlueGreen]
            rpcPort:
              type: integer
              minimum: 1
              maximum: 65535
            blobPort:
              type: integer
              minimum: 1
              maximum: 65535
            queryPort:
              type: integer
              minimum: 1
              maximum: 65535
            metricsQueryPort:
              type: integer
              minimum: 1
              maximum: 65535
            flinkConfig:
              type: object
              properties:
                additionalProperties:
                  type: string
            savepointInfo:
              type: object
              properties:
                savepointLocation:
                  type: string
            savepointPath:
              type: string
            savepointDisabled:
              type: boolean
            maxCheckpointRestoreAgeSeconds:
              type: integer
              minimum: 1
            jobManagerConfig:
              type: object
              properties:
                replicas:
                  type: integer
                  minimum: 1
                offHeapMemoryFraction:
                  type: number
                  minimum: 0
                  maximum: 1
                nodeSelector:
                  type: object
                  properties:
                    additionalProperties:
                      type: string
                tolerations:
                  type: array
                  items:
                    type: object
                    properties:
                      effect:
                        type: string
                      key:
                        type: string
                      operator:
                        type: string
                      tolerationSeconds:
                        type: integer
                        format: int64
                      value:
                        type: string
                envConfig:
                  type: object
                  properties:
                    env:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                          valueFrom:
                            properties:
                              configMapKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                  - key
                                type: object
                              fieldRef:
                                properties:
                                  apiVersion:
                                    type: string
                                  fieldPath:
                                    type: string
                                required:
                                  - fieldPath
                                type: object
                              resourceFieldRef:
                                properties:
                                  containerName:
                                    type: string
                                  divisor: {}
                                  resource:
                                    type: string
                                required:
                                  - resource
                                type: object
                              secretKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                  - key
                                type: object
                            type: object
                        required:
                          - name
                        type: object
                      type: array
                    envFrom:
                      items:
                        properties:
                          configMapRef:
                            properties:
                              name:
                                type: string
                              optional:
                                type: boolean
                            type: object
                          prefix:
                            type: string
                          secretRef:
                            properties:
                              name:
                                type: string
                              optional:
                                type: boolean
                            type: object
                        type: object
                      type: array
                resources:
                  type: object
                  properties:
                    requests:
                      type: object
                      properties:
                        memory:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        cpu:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        storage:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        ephemeral-storage:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                    limits:
                      type: object
                      properties:
                        memory:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        cpu:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        storage:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        ephemeral-storage:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
            taskManagerConfig:
              type: object
              properties:
                taskSlots:
                  type: integer
                  minimum: 1
                offHeapMemoryFraction:
                  type: number
                  minimum: 0
                  maximum: 1
                nodeSelector:
                  type: object
                  properties:
                    additionalProperties:
                      type: string
                tolerations:
                  type: array
                  items:
                    type: object
                    properties:
                      effect:
                        type: string
                      key:
                        type: string
                      operator:
                        type: string

                      tolerationSeconds:
                        type: integer
                        format: int64
                      value:
                        type: string
                envConfig:
                  type: object
                  properties:
                    env:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                          valueFrom:
                            properties:
                              configMapKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                  - key
                                type: object
                              fieldRef:
                                properties:
                                  apiVersion:
                                    type: string
                                  fieldPath:
                                    type: string
                                required:
                                  - fieldPath
                                type: object
                              resourceFieldRef:
                                properties:
                                  containerName:
                                    type: string
                                  divisor: {}
                                  resource:
                                    type: string
                                required:
                                  - resource
                                type: object
                              secretKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                  - key
                                type: object
                            type: object
                        required:
                          - name
                        type: object
                      type: array
                    envFrom:
                      items:
                        properties:
                          configMapRef:
                            properties:
                              name:
                                type: string
                              optional:
                                type: boolean
                            type: object
                          prefix:
                            type: string
                          secretRef:
                            properties:
                              name:
                                type: string
                              optional:
                                type: boolean
                            type: object
                        type: object
                      type: array
                resources:
                  type: object
                  properties:
                    requests:
                      type: object
                      properties:
                        memory:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        cpu:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        storage:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        ephemeral-storage:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                    limits:
                      type: object
                      properties:
                        memory:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        cpu:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        storage:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
                        ephemeral-storage:
                          type: string
                          pattern: ^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$
            volumes:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                required:
                  - name
            volumeMounts:
              type: array
              items:
                type: object
                properties:
                  mountPath:
                    type: string
                  mountPropagation:
                    type: string
                  name:
                    type: string
                  readOnly:
                    type: boolean
                  subPath:
                    type: string
                  subPathExpr:
                    type: string
                required:
                  - name
                  - mountPath
          required:
            - image
            - jarName
            - parallelism
            - entryClass
  subresources:
    status: {}
  additionalPrinterColumns:
    - name: Phase
      type: string
      description: The current state machine phase for this FlinkApplication
      JSONPath: .status.phase
    - name: Cluster Health
      type: string
      description: The health of the Flink cluster
      JSONPath: .status.clusterStatus.health
    - name: Job Health
      type: string
      description: The health of the Flink job
      JSONPath: .status.jobStatus.health
    - name: Healthy TMs
      type: string
      JSONPath: ".status.clusterStatus.healthyTaskManagers"
      priority: 1
    - name: Total TMs
      type: string
      JSONPath: ".status.clusterStatus.numberOfTaskManagers"
      priority: 1
    - name: Job Restarts
      type: integer
      description: Number of times the job has restarted
      JSONPath: .status.jobStatus.jobRestartCount
    - name: Age
      type: date
      JSONPath: .metadata.creationTimestamp

namespace.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: flink-operator

role.yaml

# Create a ClusterRole for flinkk8soperator
# https://kubernetes.io/docs/admin/authorization/rbac/
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: flinkoperator
rules:
 - apiGroups:
    - ""
   resources:
    - pods
   verbs:
    - get
    - list
    - watch
 - apiGroups:
    - ""
   resources:
    - services
   verbs:
    - create
    - get
    - list
    - watch
    - update
    - delete
 - apiGroups:
    - extensions
    - apps
   resources:
    - deployments
    - deployments/status
    - ingresses
    - ingresses/status
   verbs:
    - get
    - list
    - watch
    - create
    - update
    - delete
# Allow Event recording access
 - apiGroups:
    - ""
   resources:
    - events
   verbs:
    - create
    - update
    - patch
# Allow Access to CRD
 - apiGroups:
   - apiextensions.k8s.io
   resources:
   - customresourcedefinitions
   verbs:
   - get
   - list
   - watch
   - create
   - update
# Allow Access to flink applications under flink.k8s.io
 - apiGroups:
   - flink.k8s.io
   resources:
   - flinkapplications
   - flinkapplications/status
   - flinkapplications/finalizers
   verbs:
   - get
   - list
   - watch
   - create
   - update
   - delete
   - patch
---
 #Create a Service Account for flinkk8soperator
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flinkoperator
  namespace: flink-operator

role-binding.yaml

# Create a binding from Role -> ServiceAccount
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: flinkoperator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flinkoperator
subjects:
- kind: ServiceAccount
  name: flinkoperator
  namespace: flink-operator

config.yaml

kind: ConfigMap
apiVersion: v1
metadata:
  name: flink-operator-config
  namespace: flink-operator
data:
  # this will need to be templatized
  config: |-
    operator:
    #替换{ingress_suffix}为你的集群ingress url,如不设置则无ingress
      ingressUrlFormat: "{{$jobCluster}}.{ingress_suffix}"
    logger:
      level: 4

flinkk8soperator.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: flinkoperator
  namespace: flink-operator
  labels:
    app: flinkoperator
spec:
  replicas: 1
  selector:
    matchLabels:
      app: flinkoperator
  template:
    metadata:
      labels:
        app: flinkoperator
        app.kubernetes.io/version: 0.5.0
    spec:
      serviceAccountName: flinkoperator
      volumes:
      - name: config-volume
        configMap:
          name: flink-operator-config
          items:
          - key: config
            path: config.yaml
      containers:
      - name: flinkoperator-gojson
        image: docker.io/lyft/flinkk8soperator:v0.5.0
        command:
        - flinkoperator
        args:
        - --logtostderr
        - --config
        - /etc/flinkoperator/config*/config.yaml
        env:
        - name: OPERATOR_NAME
          value: flinkk8soperator
        imagePullPolicy: IfNotPresent
        ports:
          - containerPort: 10254
        resources:
          requests:
            memory: "4Gi"
            cpu: "4"
          limits:
            memory: "8G"
            cpu: "8"
        volumeMounts:
        - name: config-volume
          mountPath: /etc/flinkoperator/config

flink-operator-custom-resource.yaml

apiVersion: flink.k8s.io/v1beta1
kind: FlinkApplication
metadata:
  name: wordcount-operator-example
  namespace: flink-operator
  annotations:
  labels:
    environment: development
spec:
  image: docker.io/lyft/wordcount-operator-example:{sha}
  deleteMode: None
  flinkConfig:
    taskmanager.heap.size: 200
    taskmanager.network.memory.fraction: 0.1
    taskmanager.network.memory.min: 10m
    state.backend.fs.checkpointdir: file:///checkpoints/flink/checkpoints
    state.checkpoints.dir: file:///checkpoints/flink/externalized-checkpoints
    state.savepoints.dir: file:///checkpoints/flink/savepoints
    web.upload.dir: /opt/flink
  jobManagerConfig:
    resources:
      requests:
        memory: "200Mi"
        cpu: "0.1"
    replicas: 1
  taskManagerConfig:
    taskSlots: 2
    resources:
      requests:
        memory: "200Mi"
        cpu: "0.1"
  flinkVersion: "1.8"
  jarName: "wordcount-operator-example-1.0.0-SNAPSHOT.jar"
  parallelism: 3
  entryClass: "org.apache.flink.WordCount"

2.依次执行以下yaml

kubectl create -f  crd.yaml
kubectl create -f  namespace.yaml
kubectl create -f  role.yaml
kubectl create -f  role-binding.yaml
kubectl create -f  config.yaml
kubectl create -f  flinkk8soperator.yaml

3.执行结束,即可查看相关pod

 kubectl get pods -n flink-operator
kubectl logs {pod-name} -n flink-operator

4.运行一个案例

kubectl create -f  flink-operator-custom-resource.yaml

在这里插入图片描述

flink on k8s部署--kubernetes operator方式&Application Mode方式(附构建flink镜像Dockerfile) 本次部署方案采用flink on k8s,部署方式是flink-kubernetes-operator,部署flink-kubernetes-operator需要helm。我这里使用的是jdk1.8和flink1.13,或者用docker镜像执行flink命令。我使用的是flink1.13,其他版本类似,在docker hub中查询自己所使用版本的基础镜像即可。需要kubernetes version>=1.6,flink version>=1.13。登陆数据库检查产出情况。 阅读详情

相关推荐

Flink on-k8s operator application 模式

flink on k8s operator

刘涛的博客 2001

flink-kubernetes-operator 的简单使用

flink kubernetes operator 学习笔记

阿甘兄 4382

【Flink on k8s】- 9 - 本地部署 Flink kubernetes operator

flink kubernetes operator 版本: 1.4.0helm 版本: 3.1.0flink kubernetes operator 支持的 Flink 版本:v1.13, v1.14, v1.15, v1.16。

欢迎来到我的博客,一起探索代码里的世界! 1450

Flink on K8s 概述

flink on k8s

tianhouquan的专栏 2464

flink部署选型方案以及flink-on-k8s部署

flink部署选型方案以及flink-on-k8s部署

寂夜了无痕的博客 410

Flink on Kubernetes:云原生大数据处理方案全解析

在实时大数据处理成为企业核心竞争力的今天,Flink凭借其低延迟、高吞吐、Exactly-Once的特性成为行业标准,而则是云原生时代容器编排的“操作系统”。当Flink遇到K8s,二者的结合不仅解决了传统大数据部署的资源利用率低、弹性不足、运维复杂等痛点,更开启了云原生实时大数据处理的新纪元。本文将从背景演变核心概念映射技术原理实现实际应用案例未来趋势五大维度,用“工厂+园区”的生活化比喻、一步步的逻辑推理、真实的代码示例,彻底讲透Flink on Kubernetes的底层逻辑与实践路径。

AI Python 编程之道的博客 1145

Flink on Kubernetes Operator:在K8s上部署Flink的权威指南

**[Flink on Kubernetes Operator](https://github.com/GoogleCloudPlatform/flink-on-k8s-operator)** 是由Google Cloud Platform维护的一个开源项目,旨在简化Apache Flink集群在Kubernetes(K8s)环境中的部署和管理过程。通过利用Kubernetes的原生资源管理和自动

gitblog_00423的博客 843

骨架动作识别新突破:CTR-GCN的通道拓扑优化策略解析

本文深入解析了CTR-GCN在骨架动作识别中的通道拓扑优化策略。通过引入通道级拓扑细化,CTR-GCN克服了传统GCN共享拓扑结构的局限性,显著提升了动作识别的准确率。文章详细介绍了CTR-GCN的三大核心组件设计,包括特征变换模块、通道拓扑建模和通道聚合技术,并提供了实战调参经验和模型压缩技巧,为计算机视觉领域的研究者和开发者提供了有价值的参考。

weixin_27310417的博客 192

10分钟上手flink-on-k8s-operator:从部署到提交Flink作业的终极教程

flink-on-k8s-operator是一款强大的Kubernetes operator,专为简化Apache Flink和Beam应用的生命周期管理而设计。本教程将带你快速掌握从部署operator到提交Flink作业的完整流程,让你在10分钟内轻松上手这个高效工具。 ## 📋 准备工作:部署前的必备条件 在开始部署flink-on-k8s-operator之前,请确保你的环境满足以下

gitblog_00584的博客 1054

Python实战:高效稳定采集微信视频号评论的API爬虫方案

网络爬虫是数据采集领域的核心技术,其原理是通过程序模拟浏览器行为,向目标服务器发送HTTP请求并解析响应数据,从而自动化获取网页或接口中的信息。这项技术的核心价值在于能够高效、批量化地收集公开数据,为市场分析、舆情监控和竞品研究提供数据基础。在社交媒体分析、电商价格监控等应用场景中,爬虫技术尤为重要。针对微信视频号这类动态加载的复杂应用,传统的GUI自动化工具(如影刀RPA)常面临性能瓶颈和风控挑战。本文聚焦于通过Python实现**无感采集**,直接与后端**API接口**交互,构建稳定高效的评论数据采集

weixin_30899023的博客 328

从学生项目到工程实践:手把手教你用ATE测试电源芯片的Rdson与漏电流

本文详细介绍了如何将学术级的电源芯片测试方案转化为工业级解决方案,重点讲解使用ATE设备测试Rdson(导通电阻)和漏电流的关键技术。从设备选型、测试夹具设计到量产环境下的工程化实现,提供了实用的优化技巧和常见问题解决方案,帮助工程师提升测试效率和精度。

weixin_42525289的博客 180

从源码到部署:flink-on-k8s-operator开发者指南与贡献实践

flink-on-k8s-operator是一款用于管理Apache Flink和Beam应用生命周期的Kubernetes Operator,本指南将带你从源码构建到部署实践,掌握完整开发流程与贡献方法。 ## 项目架构概览 flink-on-k8s-operator基于Kubernetes [controller-runtime](https://github.com/kubernetes

gitblog_00524的博客 1068

ST-LINK调试STM32H743必看:CubeMX工程中缺失的这行代码导致程序跑飞

本文深入剖析了使用ST-LINK调试STM32H743时,因CubeMX工程中缺失电源电压档位配置代码而导致程序跑飞或出现“Can not access memory”错误的问题。文章解释了H7系列电源与时钟耦合的核心原理,提供了具体的代码修复方案和系统化的调试排查思路,帮助开发者从根本上解决这一常见调试困境。

weixin_29191669的博客 281

flink-on-k8s-operator部署指南:从Helm Chart到生产环境的最佳实践

flink-on-k8s-operator是一个Kubernetes operator,用于管理Apache Flink和Beam应用程序的生命周期。它允许用户通过Kubernetes自定义资源(CR)来定义和管理Flink集群和作业,极大简化了Flink在Kubernetes上的部署和运维流程。 ## 准备工作 ### 环境要求 - 一个运行中的Kubernetes集群(建议1.14+版本

gitblog_00221的博客 706

从零到一:Zephyr RTOS 在 STM32F4 上的移植与实战(含设备树配置详解)

本文详细介绍了如何从零开始将Zephyr RTOS移植到STM32F4开发板,涵盖开发环境搭建、硬件抽象层分析、设备树配置及系统裁剪等关键步骤。通过实战案例,帮助开发者掌握Zephyr RTOS在嵌入式设备中的应用,提升物联网边缘计算设备的开发效率。

weixin_26976635的博客 590

XDMA原理学习(1)——DMA技术详解

DMA 技术是Direct Memory Access的缩写,其意思是“存储器直接访问”。它是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。DMA是所有现代计算机的重要特色,它允许不同速度的硬件设备进行沟通,而不需要依于中央处理器的大量中断负载。否则,中央处理器需要从来源把每一片段的数据复制到寄存器,然后把它们再次写回到新的地方。在这个时间里,中央处理器就无法执行其它的任务。

apple_53311083的博客 8381

flink-on-k8s-operator部署安装及alink集成

flink-on-k8s-operator、Alink集成部署安装 [[Google官方参考文档]]: (Google_README.md) 1. 获取源码 ## 下载源码 git clone https://github.com/leihongyang/flink-on-k8s-operator.git git checkout pinnet 2. 准备镜像 从海外构建的镜像有: FROM gcr.io/flink-operator/flink-operator:latest ## 和 FROM gcr

u010318804的博客 2042

第三章-python基础语法

有C语言基础应该这样学 Python。

qq_46187594的博客 1176

使用Flink Operator部署Flink on k8s方案

通过 Flink Operator 在 Kubernetes 上部署 Flink,可以显著简化 Flink 的运维工作,并充分利用 Kubernetes 的弹性伸缩和高可用性特性。

qq_41067796的博客 2432

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

此时我们的卡顿优化基本完成了,我们应该要考虑内存是否会泄漏,如果大家不知道哪些需要回收可以用leakcanary和android profiler进行内存检测,看代码有没有内存泄漏。

龚礼鹏的博客 2546

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Flink On K8s使用合集

Flink On K8s使用 版本 修订内容 修改人 日期 1.0 初始 刘黎 2020.07.08 1.在K8s上...

tamako0v0的博客 3073

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Flink on Kubernetes (flink-operator) 部署Flink

部署cluster完成,配置svcType 后即可访问,flink web ui,此时jobManager是启动着的 taskmanager随着flink jar进行启动和停止。3、使用initContainers和 containers使用相同的挂载路径,然后使用远程文件下载放到挂载路径中,containers就能获取到该jar包。此处jarURL只得是docker内部路径,且不支持远程路径(http/s3/hdfs),因此需要将jar包放到docker内部。2、可以使用pvc挂载进去。

javaMylife的博客 1947

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

flink-on-k8s-operator完全指南:如何在Kubernetes上轻松管理Apache Flink应用生命周期

flink-on-k8s-operator是一款强大的Kubernetes operator,专门用于简化Apache Flink和Beam应用在Kubernetes集群上的生命周期管理。通过它,用户可以轻松实现Flink集群的部署、扩展、升级和监控等一系列操作,极大降低了在K8s环境中运行Flink应用的复杂度。 ## 为什么选择flink-on-k8s-operator? 在Kuberne

gitblog_01026的博客 379

FlinkCluster自定义资源深度探索:flink-on-k8s-operator的灵魂所在

flink-on-k8s-operator是一个强大的Kubernetes operator,用于管理Apache Flink和Beam应用程序的生命周期。其核心功能围绕着FlinkCluster自定义资源展开,通过自定义资源定义(CRD)实现对Flink集群的全面控制。本文将深入探索FlinkCluster自定义资源的结构、功能和使用方法,帮助您快速掌握这一核心组件。 ## 什么是FlinkC

gitblog_00910的博客 438

Flink on Kubernetes深度解析:原生部署与Operator模式实战指南

metadata:spec:resource:cpu: 1resource:cpu: 2job:维度原生Kubernetes部署Operator模式部署部署复杂度需手动编排多个资源对象(Deployment/Service/ConfigMap)单一FlinkDeployment CR定义全生命周期自动化程度低(需脚本辅助作业提交与监控)高(自动扩缩容、故障恢复、版本升级)资源弹性静态分配,扩缩容需人工干预动态调整,支持基于指标的弹性策略运维成本。

zuiyuelong的博客 1429

用 GoGetter 插件扩展 Kustomize 远程源:任意协议拉取并构建远程 kustomize 层

Kustomize 原生支持 `kustomize build` 直接针对远程 Git 仓库地址构建,但 URL 格式被限制在常见的 Git 仓库规范(HTTPS/SSH `git clone` 地址)之内。本文围绕 kustomize 仓库中的 `examples/goGetterGeneratorPlugin.md` 示例,讲解如何借助 kustomize 的插件(plugin)体系集成 Ha

gitblog_00815的博客 194
上一篇: 【PyTorch深度学习】 第十一讲:RNN基础
下一篇: 【k8s】节点无法调度
玄月无疆
博客等级 码龄9年 34粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值