你整个流程理由有两个问题: 1. 镜像找不到 原因应该是和minikube的driver设置有关,如果是hyperkit或者其他vm的方式,你需要minikube ssh到虚拟机内部查看镜像是否正常存在
2. JM链接无法访问 2020-12-27 22:08:12,387 INFO org.apache.flink.kubernetes.KubernetesClusterDescriptor [] - Create flink session cluster session001 successfully, JobManager Web Interface: http://192.168.99.100:8081 我猜你上面的这行log应该不是你贴出来的命令打印的,因为你给的命令是NodePort方式,打印出来的JM地址不应该是8081端口的。 只要你在minikube上提交的任务加上kubernetes.rest-service.exposed.type=NodePort,并且JM能起来,打印出来的JM地址就是可以访问的 当然你也可以手动拼接出来这个链接,minikube ip拿到APIServer地址,然后用kubectl get svc 去查看你创建的Flink Session Cluster对应的rest svc的NodePort,拼起来访问就好了 Best, Yang 陈帅 <[email protected]> 于2020年12月27日周日 下午10:51写道: > > 本人第一次尝试在k8s上部署flink,版本用的是1.12.0,jdk是1.8.0_275,scala是2.12.12,在我的mac机器上安装有minikube单机环境,以下是实验步骤: > > > git clone > https://github.com/apache/flink-dockercdflink-docker/1.12/scala_2.12-java8-debian > docker build --tag flink:1.12.0-scala_2.12-java8 . > > > cd flink-1.12.0 > ./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 > > > 显示JM启起来了,但无法通过web访问 > > 2020-12-27 22:08:12,387 INFO > org.apache.flink.kubernetes.KubernetesClusterDescriptor [] - Create > flink session cluster session001 successfully, JobManager Web Interface: > http://192.168.99.100:8081 > > > > > 通过 `kubectl get pods` 命令查看到pod一直处理ContainerCreating状态 > > NAME READY STATUS > RESTARTS AGE > > flink-session-cluster-858bd55dff-bzjk2 0/1 > ContainerCreating 0 5m59s > > kubernetes-dashboard-1608509744-6bc8455756-mp47w 1/1 Running > 0 6d14h > > > > > 于是通过 `kubectl describe pod > flink-session-cluster-858bd55dff-bzjk2`命令查看详细,结果如下: > > > > > Name: flink-session-cluster-858bd55dff-bzjk2 > > Namespace: default > > Priority: 0 > > Node: minikube/192.168.99.100 > > Start Time: Sun, 27 Dec 2020 22:21:56 +0800 > > Labels: app=flink-session-cluster > > component=jobmanager > > pod-template-hash=858bd55dff > > type=flink-native-kubernetes > > Annotations: <none> > > Status: Pending > > IP: 172.17.0.4 > > IPs: > > IP: 172.17.0.4 > > Controlled By: ReplicaSet/flink-session-cluster-858bd55dff > > Containers: > > flink-job-manager: > > Container ID: > > Image: flink:1.12.0-scala_2.12-java8 > > Image ID: > > Ports: 8081/TCP, 6123/TCP, 6124/TCP > > Host Ports: 0/TCP, 0/TCP, 0/TCP > > Command: > > /docker-entrypoint.sh > > Args: > > native-k8s > > $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-console.xml > -Dlog4j.configuration=file:/opt/flink/conf/log4j-console.properties > -Dlog4j.configurationFile=file:/opt/flink/conf/log4j-console.properties > org.apache.flink.kubernetes.entrypoint.KubernetesSessionClusterEntrypoint > -D jobmanager.memory.off-heap.size=134217728b -D > jobmanager.memory.jvm-overhead.min=201326592b -D > jobmanager.memory.jvm-metaspace.size=268435456b -D > jobmanager.memory.heap.size=1073741824b -D > jobmanager.memory.jvm-overhead.max=201326592b > > State: Waiting > > Reason: ImagePullBackOff > > Ready: False > > Restart Count: 0 > > Limits: > > cpu: 1 > > memory: 1600Mi > > Requests: > > cpu: 1 > > memory: 1600Mi > > Environment: > > _POD_IP_ADDRESS: (v1:status.podIP) > > HADOOP_CONF_DIR: /opt/hadoop/conf > > Mounts: > > /opt/flink/conf from flink-config-volume (rw) > > /opt/hadoop/conf from hadoop-config-volume (rw) > > /var/run/secrets/kubernetes.io/serviceaccount from > default-token-s47ht (ro) > > Conditions: > > Type Status > > Initialized True > > Ready False > > ContainersReady False > > PodScheduled True > > Volumes: > > hadoop-config-volume: > > Type: ConfigMap (a volume populated by a ConfigMap) > > Name: hadoop-config-flink-session-cluster > > Optional: false > > flink-config-volume: > > Type: ConfigMap (a volume populated by a ConfigMap) > > Name: flink-config-flink-session-cluster > > Optional: false > > default-token-s47ht: > > Type: Secret (a volume populated by a Secret) > > SecretName: default-token-s47ht > > Optional: false > > QoS Class: Guaranteed > > Node-Selectors: <none> > > Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s > > node.kubernetes.io/unreachable:NoExecute op=Exists for > 300s > > Events: > > Type Reason Age From Message > > ---- ------ ---- ---- ------- > > Normal Scheduled 21m default-scheduler > Successfully assigned default/flink-session-cluster-858bd55dff-bzjk2 to > minikube > > Warning FailedMount 21m (x2 over 21m) kubelet > MountVolume.SetUp failed for volume "flink-config-volume" : configmap > "flink-config-flink-session-cluster" not found > > Warning FailedMount 21m (x2 over 21m) kubelet > MountVolume.SetUp failed for volume "hadoop-config-volume" : configmap > "hadoop-config-flink-session-cluster" not found > > Normal Pulling 13m (x4 over 21m) kubelet Pulling > image "flink:1.12.0-scala_2.12-java8" > > Warning Failed 13m (x4 over 15m) kubelet Failed 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 unknown > > Normal BackOff 13m (x5 over 15m) kubelet Back-off > pulling image "flink:1.12.0-scala_2.12-java8" > > Warning Failed 11m (x5 over 15m) kubelet Error: > ErrImagePull > > Warning Failed 100s (x53 over 15m) kubelet Error: > ImagePullBackOff > > > > > 一开始怀疑本地镜像没有生成,于是通过 `docker images` 命令查看 > > REPOSITORY TAG > IMAGE ID CREATED SIZE > > flink > 1.12.0-scala_2.12-java8 f7dd9b9e020b 12 hours ago 642MB > > > > > > 显示镜像的确是存在的,这就奇怪了,为什么从本地pull镜像会失败呢?是哪里有问题了吗?minikube下,如何从本地web访问到k8s上运行的flink集群dashboard呢? > > 第一次用k8s,还请各位指点,谢谢! > > > > > > > > >
