Guys, I just created a simple PR https://github.com/apache/flink/pull/14005 <https://github.com/apache/flink/pull/14005> allowing me to mount different K8 resources - PVCs, Secrets, configmaps
> On Nov 6, 2020, at 6:37 AM, Yang Wang <danrtsey...@gmail.com> wrote: > > Actually, in our document, we have provided a command[1] to create the > service account. > It is similar to your yaml file. > $ kubectl create clusterrolebinding flink-role-binding-default > --clusterrole=edit --serviceaccount=default:default > > Unfortunately, we could not support mounting a PVC. We plan to do it in pod > template[2], > but there's not much progress so far. But I think Flink could support NFS > directly[3]. > Could you have a try to configure the checkpoint path to a NFS path? > > Moreover, in our production environment, we are using S3/AliyunOSS for the > checkpointing > storage. Flink has provided the filesystem plugins in the $FLINK_HOME/opt > directory. > > > [1]. > https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/deployment/native_kubernetes.html#rbac > > <https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/deployment/native_kubernetes.html#rbac> > [2]. https://issues.apache.org/jira/browse/FLINK-15656 > <https://issues.apache.org/jira/browse/FLINK-15656> > [3]. > https://ci.apache.org/projects/flink/flink-docs-stable/ops/filesystems/#local-file-system > > <https://ci.apache.org/projects/flink/flink-docs-stable/ops/filesystems/#local-file-system> > > Best, > Yang > > > Boris Lublinsky <boris.lublin...@lightbend.com > <mailto:boris.lublin...@lightbend.com>> 于2020年11月4日周三 上午2:42写道: > Thanks a lot, > This helped a lot. > And I did make it work. It probably would of help if documentation, > explicitly gave an example of role/rolebinding, something like: > > kubectl apply -f - <<EOF > apiVersion: rbac.authorization.k8s.io/v1 <http://rbac.authorization.k8s.io/v1> > kind: Role > metadata: > name: flink-role > namespace: default > rules: > - apiGroups: ["", "apps"] > resources: ["deployments", "pods"] > verbs: ["get", "list", "watch", "create", "update", "delete"] > --- > apiVersion: rbac.authorization.k8s.io/v1 <http://rbac.authorization.k8s.io/v1> > kind: RoleBinding > metadata: > name: flink-role-binding > namespace: default > subjects: > - kind: ServiceAccount > name: flink > roleRef: > kind: Role > name: flink-role > apiGroup: rbac.authorization.k8s.io <http://rbac.authorization.k8s.io/> > EOF > > > And now I see that I do not really need operator, can do it much simpler with > this approach. > > The only remaining question is how I can mount additional PVC for > checkpointing. When running on K8, we typically use NFS, mount it to the pods > and specify location in Flink-config.yaml. > > DO you have an example somewhere of doing this? > > >> On Nov 3, 2020, at 7:02 AM, Yang Wang <danrtsey...@gmail.com >> <mailto:danrtsey...@gmail.com>> wrote: >> >> You could follow the guide[1] here to output the logs to the console so that >> it could be accessed via "kubectl logs". And from 1.12. we will make this as >> default. >> >> [1]. >> https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/deployment/native_kubernetes.html#log-files >> >> <https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/deployment/native_kubernetes.html#log-files> >> >> >> Best, >> Yang >> >> Chesnay Schepler <ches...@apache.org <mailto:ches...@apache.org>> >> 于2020年11月3日周二 下午5:32写道: >> 1) -Dkubernetes.namespace >> 2) The -D syntax is actually just a way to specify configurations options >> from the command-line. As such, the configuration page >> <https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/config.html#kubernetes> >> lists all options. >> 3) if the diff between the configurations isn't too big you could maybe have >> a shared base config, and specify the special options on the command-line >> (see 2)). But if you truly need a separate file, then I don't think there is >> another way than the one you described. >> 4) yes, the configuration is stored as a config map. >> >> On 11/3/2020 12:17 AM, Boris Lublinsky wrote: >>> Hi, >>> I was trying to follow instructions >>> https://ci.apache.org/projects/flink/flink-docs-stable/ops/deployment/native_kubernetes.html >>> >>> <https://ci.apache.org/projects/flink/flink-docs-stable/ops/deployment/native_kubernetes.html> >>> but non e of them really worked. >>> >>> For session I tried: >>> >>> /Users/boris/Support/flink-1.11.2/bin/flink run-application -t >>> kubernetes-application \ >>> -Dkubernetes.cluster-id=flink-native-k8s-application \ >>> -Dtaskmanager.memory.process.size=4096m \ >>> -Dkubernetes.taskmanager.cpu=2 \ >>> -Dtaskmanager.numberOfTaskSlots=4 \ >>> -Dkubernetes.container.image=flink:1.11.2-scala_2.12 \ >>> local:///opt/flink/examples/batch/WordCount.jar <> >>> >>> And for application >>> >>> /Users/boris/Support/flink-1.11.2//bin/kubernetes-session.sh \ >>> -Dkubernetes.cluster-id=flink-native-k8s-session \ >>> -Dtaskmanager.memory.process.size=4096m \ >>> -Dkubernetes.taskmanager.cpu=2 \ >>> -Dtaskmanager.numberOfTaskSlots=4 \ >>> -Dresourcemanager.taskmanager-timeout=3600000 >>> >>> >>> Both were trying to create JM deployment, but in both cases the actual >>> container creation failed with no explanation >>> >>> >>> Thats the only log that I can see: >>> >>> kubectl logs flink-native-k8s-application-5d686d5457-lnttw >>> Start command : /bin/bash -c $JAVA_HOME/bin/java -classpath >>> $FLINK_CLASSPATH -Xmx1073741824 -Xms1073741824 >>> -XX:MaxMetaspaceSize=268435456 -Dlog.file=/opt/flink/log/jobmanager.log >>> -Dlogback.configurationFile=file:/opt/flink/conf/logback.xml <> >>> -Dlog4j.configurationFile=file:/opt/flink/conf/log4j.properties <> >>> org.apache.flink.kubernetes.entrypoint.KubernetesApplicationClusterEntrypoint >>> 1> /opt/flink/log/jobmanager.out 2> /opt/flink/log/jobmanager.err >>> >>> A couple of additional questions: >>> >>> 1. Is there a way to specify namespace where the deployment is created? >>> 2. Is there a list of -D parameters that can be specified? >>> 3. If I want a custom Flink-conf.yaml, for every invocation, do I have to >>> create it in separate location and then use something like >>> FLINK_CONF_DIR=/Users/boris/Support/flink-1.11.2/conf for every run? Or >>> there is a simpler way? >>> 4. If I understand correctly, this creates a config-map that is actually >>> used. >> >