I am afraid only the state handle is stored in the ConfigMap. The real
state data is stored in
the distributed storage configured via "high-availability.storageDir". I
believe you could find
more information in this class KubernetesStateHandleStore[1].

How could you find that the checkpointing information is stored twice? It
should not happen.

[1].
https://github.com/apache/flink/blob/5f7e0dc96547fdb2f82f903ee48bf43b47ca4ae0/flink-kubernetes/src/main/java/org/apache/flink/kubernetes/highavailability/KubernetesStateHandleStore.java#L53


Best,
Yang

Boris Lublinsky <boris.lublin...@lightbend.com> 于2020年12月20日周日 上午12:49写道:

> Thanks Yang,
> This is still confusing.
> I did more experiments and see that checkpointing information is stored
> twice - in config map and in high-availability.storageDir
> Do we need this duplication?
> Do we need to specify high-availability.storageDir as defined in
> https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/ha/kubernetes_ha.html#example-configuration
> Or just specifying
>
> high-availability: 
> org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory
>
> Is sufficient?
>
>
>
> On Dec 17, 2020, at 10:09 PM, Yang Wang <danrtsey...@gmail.com> wrote:
>
> The latest successful checkpoint pointer is stored in the ConfigMap, as
> well as the JobGraph pointer.
> They could help us recover the running jobs before you delete the K8s
> deployment. If the HA ConfigMaps
> are deleted, then when you create a Flink cluster with the same
> cluster-id, it could not recover from the latest
> successful checkpoint automatically.
>
> Best,
> Yang
>
>
>
>
> Boris Lublinsky <boris.lublin...@lightbend.com> 于2020年12月18日周五 上午11:42写道:
>
>> Also re reading
>> https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/ha/kubernetes_ha.html#high-availability-data-clean-up
>>
>> This does not seem right:
>> To keep HA data while restarting the Flink cluster, simply delete the
>> deployment (via kubectl delete deploy <cluster-id>). All the Flink
>> cluster related resources will be deleted (e.g. JobManager Deployment,
>> TaskManager pods, services, Flink conf ConfigMap). HA related ConfigMaps
>> will be retained because they do not set the owner reference. When
>> restarting the cluster, all previously running jobs will be recovered and
>> restarted from the latest successful checkpoint.
>>
>> Last successful checkpoint is not in the config maps, but rather on
>> persistent volume. Config map can be safely deleted. If you restart JM, it
>> will create a new leader anyways., So I would suggest to add owner
>> reference there
>>
>>
>> On Dec 17, 2020, at 8:49 PM, Yang Wang <danrtsey...@gmail.com> wrote:
>>
>> Hi Boris,
>>
>> Thanks for your follow up response and trying the new KubernetesHAService.
>>
>> 1. It is a valid bug. We are not setting the service account for
>> TaskManager pod. Before the KubernetesHAService is introduced, it works
>> fine because the TaskManager does not need to access the K8s resource(e.g.
>> ConfigMap) directly. I have created a ticket[1] to support setting service
>> account for TaskManager.
>> 2. If you directly delete the JobManager deployment, then the HA related
>> ConfigMap will be retained. It is a by-design behavior. Because the job
>> does not go to a terminal state(SUCCEED, FAILED, CANCELED), we need this
>> cluster could recover in the future. If all the jobs in the application
>> reach to the terminal state, all the HA related ConfigMaps will be cleaned
>> up automatically. You could cancel the job and verify that. Refer here[2]
>> for more information.
>>
>> For the PVC based storage, if it could support multiple read-write then
>> the KubernetesHAService should work. Actually, it feels like a distributed
>> storage.
>>
>> [1]. https://issues.apache.org/jira/browse/FLINK-20664
>> [2].
>> https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/ha/kubernetes_ha.html
>>
>> Best,
>> Yang
>>
>> Boris Lublinsky <boris.lublin...@lightbend.com> 于2020年12月18日周五 上午7:16写道:
>>
>>> And K8 native HA works,
>>> But there are 2 bugs in this implementation.
>>>
>>> 1. Task manager pods are running as default user account, which fails
>>> because it does not have access to config maps to get endpoint’s
>>> information. I had to add permissions to default service account to make it
>>> work. Ideally both JM and TM pods should run under the same service
>>> account.
>>> 2. When a Flink application is deleted, it clears the main config map,
>>> but not the ones used for leader election
>>>
>>>
>>> And finally it works fine with PVC based storage, as long as it is
>>> read-write many
>>>
>>>
>>> On Dec 15, 2020, at 8:40 PM, Yang Wang <danrtsey...@gmail.com> wrote:
>>>
>>> Hi Boris,
>>>
>>> What is -p 10?
>>>
>>> It is same to --parallelism 10. Set the default parallelism to 10.
>>>
>>> does it require a special container build?
>>>
>>> No, the official flink docker image could be used
>>> directly. Unfortunately, we do not have the image now. And we are trying to
>>> figure out.
>>> You could follow the instructions below to have your own image.
>>>
>>>
>>> git clone https://github.com/apache/flink-docker.git
>>> git checkout dev-master./add-custom.sh -u 
>>> https://apache.website-solution.net/flink/flink-1.12.0/flink-1.12.0-bin-scala_2.11.tgz
>>>  -n flink-1.12.0cd dev/flink-1.12.0-debiandocker build . -t 
>>> flink:flink-1.12.0docker push flink:flink-1.12.0
>>>
>>>
>>> This is if I use HDFS for save pointing, right? I can instead use PVC -
>>>> based save pointing, correct?
>>>
>>> It is an example to storing the HA related data to OSS(Alibaba Cloud
>>> Object Storage, similar to S3). Since we require a distributed storage, I
>>> am afraid you could not use a PVC here. Instead, you could using a minio.
>>>
>>> Can I control the amount of standby JMs?
>>>
>>> Currently, you could not control the number of JobManagers. This is only
>>> because we have not introduce a config option for it. But you could do it
>>> manually via `kubectl edit deploy <clusterID>`. It should also work.
>>>
>>> Finally, what is behavior on the rolling restart of JM deployment?
>>>
>>> Once a JobManager terminated, it will lose the leadership and a standby
>>> one will take over. So on the rolling restart of JM deployment, you will
>>> find that the leader switches multiple times and your job also restarts
>>> multiple times. I am not sure why you need to roll the JobManager
>>> deployment. We are using deployment for JobManager in Flink just because we
>>> want the JobManager to be launched once it crashed. Another reason for
>>> multiple JobManagers is to get a faster recovery.
>>>
>>>
>>> Best,
>>> Yang
>>>
>>>
>>> Boris Lublinsky <boris.lublin...@lightbend.com> 于2020年12月16日周三 上午9:09写道:
>>>
>>>> Thanks Chesney for your quick response,
>>>> I read documentation
>>>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-144%3A+Native+Kubernetes+HA+for+Flink#FLIP144:NativeKubernetesHAforFlink-NativeK8s
>>>> <https://cwiki.apache.org/confluence/display/FLINK/FLIP-144:+Native+Kubernetes+HA+for+Flink#FLIP144:NativeKubernetesHAforFlink-NativeK8s>
>>>> More carefully and found the sample, I was looking for:
>>>>
>>>> ./bin/flink run-application -p 10 -t kubernetes-application
>>>> -Dkubernetes.cluster-id=k8s-ha-app1 \
>>>> -Dkubernetes.container.image=flink:k8s-ha \
>>>> -Dkubernetes.container.image.pull-policy=Always \
>>>> -Djobmanager.heap.size=4096m -Dtaskmanager.memory.process.size=4096m \
>>>> -Dkubernetes.jobmanager.cpu=1 -Dkubernetes.taskmanager.cpu=2
>>>> -Dtaskmanager.numberOfTaskSlots=4 \
>>>> -Dhigh-availability=org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory
>>>> \
>>>> -Dhigh-availability.storageDir=oss://flink/flink-ha \
>>>> -Drestart-strategy=fixed-delay
>>>> -Drestart-strategy.fixed-delay.attempts=10 \
>>>> -Dcontainerized.master.env.ENABLE_BUILT_IN_PLUGINS=flink-oss-fs-hadoop-1.12.jar
>>>> \
>>>> -Dcontainerized.taskmanager.env.ENABLE_BUILT_IN_PLUGINS=flink-oss-fs-hadoop-1.12.jar
>>>> \
>>>> local:///opt/flink/examples/streaming/StateMachineExample.jar
>>>>
>>>> A couple of questions about it:
>>>>
>>>> ./bin/flink run-application -p 10 -t used to be ./bin/flink run-application
>>>> -t. What is -p 10?
>>>> -Dkubernetes.container.image=flink:k8s-ha does it require a special
>>>> container build?
>>>>
>>>> -Dhigh-availability.storageDir=oss://flink/flink-ha \
>>>> -Dcontainerized.master.env.ENABLE_BUILT_IN_PLUGINS=flink-oss-fs-hadoop-1.12.jar
>>>> \
>>>> -Dcontainerized.taskmanager.env.ENABLE_BUILT_IN_PLUGINS=flink-oss-fs-hadoop-1.12.jar
>>>> \
>>>>
>>>> This is if I use HDFS for save pointing, right? I can instead use PVC -
>>>> based save pointing, correct?
>>>>
>>>> Also I was trying to understand, how it works, and from the
>>>> documentation it sounds like there is one active and one or
>>>> more standby JMs. Can I control the amount of standby JMs?
>>>>
>>>> Finally, what is behavior on the rolling restart of JM deployment?
>>>>
>>>>
>>>>
>>>>
>>>> On Dec 15, 2020, at 10:42 AM, Chesnay Schepler <ches...@apache.org>
>>>> wrote:
>>>>
>>>> Unfortunately no; there are some discussions going on in the 
>>>> docker-library/official-images
>>>> PR <https://github.com/docker-library/official-images/pull/9249> that
>>>> have to be resolved first, but currently these would require changes on the
>>>> Flink side that we cannot do (because it is already released!). We are not
>>>> sure yet whether we can get the PR accepted and defer further changes to
>>>> 1.12.1 .
>>>>
>>>> On 12/15/2020 5:17 PM, Boris Lublinsky wrote:
>>>>
>>>> Thanks.
>>>> Do you have ETA for docker images?
>>>>
>>>>
>>>> On Dec 14, 2020, at 3:43 AM, Chesnay Schepler <ches...@apache.org>
>>>> wrote:
>>>>
>>>> 1) It is compiled with Java 8 but runs on Java 8 & 11.
>>>> 2) Docker images are not yet published.
>>>> 3) It is mentioned at the top of the Kubernetes HA Services
>>>> documentation that it also works for the native Kubernetes integration.
>>>>
>>>> *Kubernetes high availability services can only be used when deploying
>>>> to Kubernetes. Consequently, they can be configured when using **standalone
>>>> Flink on Kubernetes
>>>> <https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/resource-providers/standalone/kubernetes.html>**
>>>> or the *
>>>> *native Kubernetes integration
>>>> <https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/resource-providers/native_kubernetes.html>
>>>> *
>>>>
>>>> From what I understand you only need to configure the 3 listed options;
>>>> the documentation also contains an example configuration
>>>> <https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/ha/kubernetes_ha.html#example-configuration>
>>>> .
>>>>
>>>> On 12/14/2020 4:52 AM, Boris Lublinsky wrote:
>>>>
>>>> It is great that Flink 1.12 is out. Several questions:
>>>>
>>>> 1. Is official Flink 1.12 distribution
>>>> https://flink.apache.org/downloads.html specifies Scala versions, but
>>>> not Java versions. Is it Java 8?
>>>> 2. I do not see any 1.12 docker images here
>>>> https://hub.docker.com/_/flink. Are they somewhere else?
>>>> 3 Flink 1.12 introduces Kubernetes HA support
>>>> https://ci.apache.org/projects/flink/flink-docs-stable/deployment/ha/kubernetes_ha.html,
>>>> but Flink native Kubernetes support
>>>> https://ci.apache.org/projects/flink/flink-docs-release-1.12/deployment/resource-providers/native_kubernetes.html
>>>>  has
>>>> no mentioning of HA. Are the 2 integrated? DO you have any examples of
>>>> starting HA cluster using Flink native Kubernetes?
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to