一次在K8s上运行Flink的实录

本文介绍了如何在Kubernetes(K8s)上使用ConfigMap管理和注入配置,以及Ingress对外提供服务的原理。详细讲解了Flink的部署架构,包括Job Manager和Task Manager,以及它们的配置文件。此外,还探讨了Flink-k8s-operator简化Flink部署的可能性。
摘要由CSDN通过智能技术生成

本文先介绍一下K8s的ConfigMap资源和Ingress的基本概念,然后讲一下如何在K8s上部署Flink,最后看一下Flink的Operator又是怎么编写的

ConfigMap

问题背景:

生产环境可能需要多个Config文件,命令行参数和环境变量进行配置组合,因此容器部署的时候,应该把配置从应用程序的镜像中解耦出来,以保证镜像的可移植性.

ConfigMap是用来存储通用的配置变量的,类似于配置文件,使得用户可以将分布式系统中用于不同模块的环境变量统一到一个对象中进行管理.

他可以看做K8s的一个基本资源类型,是一个键值组类型,存储被Pod或者其他资源对象访问的信息.但与secret相比,主要区别在于其不存储敏感信息,只存储简单的文本信息

简而言之: 在创建pod的时候对configmap进行绑定,pod内的应用可以直接引用ConfigMap的配置,相当于configmap为应用/运行环境封装配置.

创建pod的时候要绑定ConfigMap,通常用于: 设置环境变量的值,设置命令行参数等

ConfigMap的核心是把配置数据注入容器的方式,同时保证这个机制对容器来说是透明的.

ConfigMap可以用来保存单个属性,也可以用来保存整个配置文件或者JSON二进制大对象

eg;

ConfigMap可以包含细粒度的配置项,如:example.property.1;也可以包含粗粒度的配置文件,如:example.property.file

kind: ConfigMap
apiVersion: v1
metadata:
  creationTimestamp: 2016-02-18T19:14:38Z
  name: example-config
  namespace: default
data:
  # example of a simple property defined using --from-literal
  example.property.1: hello
  example.property.2: world
  # example of a complex property defined using --from-file
  example.property.file: |-
    property.1=value-1
    property.2=value-2

Ingress

LoadBalancer和NodePort都是Svc向外暴露服务的方法,那么Ingress有什么不同呢?

根据官方文档,Ingress公开了从集群外部到集群内Services的HTTP和HTTPS路由,流量路由由Ingress资源上定义的规则来控制.

Ingress的作用:

  • 为服务提供外部可访问的URL
  • 流量的负载均衡
  • 虚拟主机服务??

Ingress controller 负责来实现Ingress,经常是使用一个负载均衡器来实现的.

那如果要把HTTP或者HTTPS以外的服务公开给外部的时候,通常使用Service.Type=NodePort或者Service.Type=LoadBalancer

eg:

apiVersion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值