0%

Flink on kubernetes

1 kubernetes

架构图

1.1 pod

Pod 是 Kubernetes 定义的“容器运行模型”,Docker(或 containerd)只是把模型落地成 Linux 进程的工具。 Pod 运行时不安装操作系统;容器只携带用户态环境,所有 Pod 都运行在宿主机同一个 Linux 内核之上。

docker runc 使用的是:Linux namespaces 或 cgroups

Pod 可以认为是容器的封装,一个 Pod 中可以存在一个或者多个容器

1.2 Namespace

Namespace 是 kubernetes 系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离

默认情况下,kubernetes 集群中的所有的 Pod 都是可以相互访问的。但是在实际中,可能不想让两个 Pod 之间进行互相的访问,那此时就可以将两个 Pod 划分到不同的 namespace 下。kubernetes 通过将集群内部的资源分配到不同的 Namespace 中,可以形成逻辑上的”组”,以方便不同的组的资源进行隔离使用和管理。

1.3 Deployment

2 Flink on k8s

https://juejin.cn/post/7038404897628225573

https://juejin.cn/post/7199235461045960759

https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main/docs/concepts/architecture/

2.1.1 Application模式

2.1.2 Session模式

2.1.3 峰峦(pre-job模式)

模式 原理 优点 缺点 对我们
Application模式 每个作业各有一个JM 1. 资源隔离,负载均衡保证
2. 作业间彼此独立,互不影响
Session模式 所有作业共享一个JM 资源隔离差,作业间相互影响
峰峦Pre-job模式

2.2 Kubernetes vs Yarn

what is Kubernetes API? how to use?
what is 峰峦?

2.3 Oceanus/Flink调度峰峦资源

2.4 Kubernetes调度过程

K8S不仅能将用户提供的单个容器运行起来,将其对外暴露出去提供服务。还提供了:路由网关、集群监控、灾难恢复,以及应用的水平扩展等能力。

2.5 [参考文献]

  1. 一文讲明白K8S各核心架构组件
  2. 【2022年度技术突破奖】弹性·峰峦云原生大数据平台项目团队