本文先介绍一下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

本文介绍了如何在Kubernetes(K8s)上使用ConfigMap管理和注入配置,以及Ingress对外提供服务的原理。详细讲解了Flink的部署架构,包括Job Manager和Task Manager,以及它们的配置文件。此外,还探讨了Flink-k8s-operator简化Flink部署的可能性。
最低0.47元/天 解锁文章
4601

被折叠的 条评论
为什么被折叠?



