Хотя k8s может перезапустить неисправный модуль Flink, как Flink может восстановить его состояние для восстановления?
Из документации Flink мы имеем:
Контрольные точки позволяют Flink, чтобы восстановить состояние и позиции в потоках, чтобы дать приложению ту же семантику, что и безотказное выполнение.
Это означает, что вам необходимо иметь Check Storage , смонтированный в ваши стручки, чтобы иметь возможность восстановить состояние.
В Kubernetes вы можете использовать Постоянные тома для обмена данными между вашими модулями.
На самом деле существует множество поддерживаемых плагинов, см. здесь .
Вы можете иметь больше реплик TaskManager
, но в Kubernetes вам не нужно заботиться о HA для JobManager
, так как вы можете использовать Kubernetes self- исцеление развертывание.
Чтобы использовать самовосстановление развертывание в Kubernetes, вам просто нужно создать развертывание и установить для replica
значение 1
, например:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- name: http
containerPort: 80
imagePullPolicy: IfNotPresent
Наконец, вы можете проверить эти ссылки, чтобы помочь вам настроить Flink в Kubernetes:
running- apache -flink-on-kubernetes
Кластер заданий Flink в Kubernetes
Развертывания Flink Kubernetes
Запуск Flink в Kubernetes с помощью KUDO