NYC's Blog - Flink快速了解(4)——NativeKubernetes&HA 的评论
http://niyanchun.com/flink-quick-learning-4-native-kubernetes-ha.html
Flink的1.12.0版本前段时间发布了,又带来了很多新特性,其中有两个跟容器化相关的特性:Native Kubernetes部署方式由之前的实验性(experimental)变为正式特性,也...
-
NYC
http://niyanchun.com/flink-quick-learning-4-native-kubernetes-ha.html/comment-page-1#comment-654
2020-12-27T23:10:08+08:00
我大概知道问题了,之前没注意看,你用的是minikube。你用docker images命令是在你的mac上执行的,而不是在minikube创建的虚机(即k8s的node)里面执行的对吧?如果是这样的话,那也是不行的,pod是运行在node上的,所以它是检查node上面有没有这个镜像,而不是你的mac主机。如果是这个问题,方法一:你可以登录到node上面去打镜像;方法二:把你打的镜像推送到某个registry去,然后从这里拉取。
-
蟋蟀
http://niyanchun.com/flink-quick-learning-4-native-kubernetes-ha.html/comment-page-1#comment-653
2020-12-27T22:36:12+08:00
只是在本地测试,我生成的镜像名称叫flink:1.12.0-scala_2.12-java8,启动flink集群的命令是./bin/kubernetes-session.sh \-Dkubernetes.container.image=flink:1.12.0-scala_2.12-java8 \
-Dkubernetes.rest-service.exposed.type=NodePort \
-Dtaskmanager.numberOfTaskSlots=2 \
-Dkubernetes.cluster-id=flink-session-cluster结果显示 Create flink session cluster flink-session-cluster successfully, JobManager Web Interface: http://192.168.99.100:32247但用kubectl get pods命令查看显示pod一直处理ContainerCreating状态长达数分钟。再通过kubectl describe pod xxx查看,显示有两处error:MountVolume.SetUp failed for volume "flink-config-volume" : configmap "flink-config-flink-session-cluster" not foundMountVolume.SetUp failed for volume "hadoop-config-volume" : configmap "hadoop-config-flink-session-cluster" not foundFailed to pull image "flink:1.12.0-scala_2.12-java8": rpc error: code = Unknown desc = Error response from daemon: manifest for flink:1.12.0-scala_2.12-java8 not found: manifest unknown: manifest unknownError: ImagePullBackOffError: ErrImagePull然而通过docker images命令查看该镜像的确是存在的REPOSITORY TAG IMAGE ID CREATED SIZEflink 1.12.0-scala_2.12-java8 f7dd9b9e020b 12 hours ago 642MB还请看看是哪里出了问题?谢谢!
-
NYC
http://niyanchun.com/flink-quick-learning-4-native-kubernetes-ha.html/comment-page-1#comment-651
2020-12-27T13:32:29+08:00
docker build构建的镜像是在你本地的(就跟你docker pull下来的镜像一样)。你并没有把他docker push到某个仓库里面去,所以用docker pull是拉不下来的(因为远程仓库就是没有这个镜像),也就会报你说的错误。现在是这样:如果你只是本地测试,那么这个镜像你本地已经有了,不需要docker pull,直接使用即可。flink提交任务时默认的拉取镜像策略是IfNotPresent,你本地已经有了,它会直接使用,不会docker pull。也就是默认你就直接提交任务就行。如果你要在其它环境/机器上面测试,那你就要把这个镜像push到一个registry去,比如docker hub,然后在其它机器上面才能docker pull拉取。
-
蟋蟀
http://niyanchun.com/flink-quick-learning-4-native-kubernetes-ha.html/comment-page-1#comment-650
2020-12-27T13:14:48+08:00
我在mac机器上安装好了minikube,并按照上述步骤成功构建了flink 1.12版本的docker image,使用docker images命令能够列出新构建的镜像,REPOSITORY TAG IMAGE ID CREATED SIZEflink 1.12.0-scala_2.12-java8 f7dd9b9e020b 3 hours ago 642MB然而在执行命令 docker pull flink:1.12.0-scala_2.12-java8 时报如下错误:Error response from daemon: manifest for flink:1.12.0-scala_2.12-java8 not found: manifest unknown: manifest unknown导致后面用kubernetes session部署flink作业失败。请问该错误应该如何解决?谢谢!