在Mesos的Kubernetes,没有合适的报价

我按照这个页面上的说明来构build和部署Mesos。 我在有1个Mesos主站和1个从站的Ubuntu Trusty VM上做了这个。 以下命令是我用来运行Mesos的。

$ mesos-master --ip=10.0.2.15 --work_dir=/var/lib/mesos --log_dir=/var/log/mesos $ mesos-slave --master=10.0.2.15:5050 --containerizers=docker,mesos 

所有三个testing都没有错误信息。

然后我跟着这个页面部署Kubernetes。 在构buildKubernetes-Mesos之后,我使用以下命令来部署Kubernetes。

 $ export KUBERNETES_MASTER_IP=10.0.2.15 $ export KUBERNETES_MASTER=http://${KUBERNETES_MASTER_IP}:8888 $ docker run -d --hostname $(uname -n) --name etcd \ -p 4001:4001 -p 7001:7001 quay.io/coreos/etcd:v2.0.12 \ --listen-client-urls http://0.0.0.0:4001 \ --advertise-client-urls http://${KUBERNETES_MASTER_IP}:4001 

etcd容器正在运行。

 $ export PATH="$(pwd)/_output/local/go/bin:$PATH" $ export MESOS_MASTER=10.0.2.15:5050 $ cat <<EOF >mesos-cloud.conf [mesos-cloud] mesos-master = ${MESOS_MASTER} EOF $ km apiserver \ --address=${KUBERNETES_MASTER_IP} \ --etcd-servers=http://${KUBERNETES_MASTER_IP}:4001 \ --service-cluster-ip-range=10.10.10.0/24 \ --port=8888 \ --cloud-provider=mesos \ --cloud-config=mesos-cloud.conf \ --secure-port=0 \ --v=1 >apiserver.log 2>&1 & $ km controller-manager \ --master=${KUBERNETES_MASTER_IP}:8888 \ --cloud-provider=mesos \ --cloud-config=./mesos-cloud.conf \ --v=1 >controller.log 2>&1 & $ km scheduler \ --address=${KUBERNETES_MASTER_IP} \ --mesos-master=${MESOS_MASTER} \ --etcd-servers=http://${KUBERNETES_MASTER_IP}:4001 \ --mesos-user=root \ --api-servers=${KUBERNETES_MASTER_IP}:8888 \ --cluster-dns=10.10.10.10 \ --cluster-domain=cluster.local \ --v=2 >scheduler.log 2>&1 & 

日志似乎是正确的,没有错误信息。

kubectl get services显示:

 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE k8sm-scheduler 10.10.10.50 <none> 10251/TCP 1m kubernetes 10.10.10.1 <none> 443/TCP 2m 

然后我创build了一个简单的nginx pod, kubectl get pods总是显示它正在等待。 kubectl get events显示:

 FIRSTSEEN LASTSEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE 2m 47s 9 nginx Pod Warning FailedScheduling {default-scheduler } Error scheduling: No suitable offers for pod/task 

这是什么意思没有合适的报价/任务 ? 在Mesos的日志中,我看到Mesos一直在向Kubernetes框架发送报价,但一直保持DECLINED状态。 如果我运行mesos-execute --master=10.0.2.15:5050 --name=echo --command="echo 'hello world'" --containerizer=docker --docker_image=ubuntu:14.04它可以部署一个Docker镜像“mesos-”前缀并运行该命令。 所以看起来Docker集装箱工作正常。

Kubernetes-Mesos会因为几个原因而拒绝提供:

  1. 报价中的资源不满足启动Pod任务所需的最低限度。 在给定的从机上启动的第一个任务需要除了任务资源之外的执行器资源。
  2. 报价中的资源与调度程序不兼容。 如果您启动框架,启动任务,终止调度程序进程,然后用不同的标志重新启动调度程序,就会发生这种情况。 一些调度器标志会影响用来启动执行程序的命令行。 解决这个问题的最快捷方式是删除任何正在运行的pod,并手动清除已经在从服务器上运行的不兼容的执行程序进程。
  3. apiserverregistry中的节点信息有问题。

你正在运行什么版本的k8sm? 主? 您可以尝试增加调度程序日志的详细程度( – v = 3),然后将调度程序的副本转储到pastebin或其他类似的东西上,以便进行分析。 在没有日志的情况下排除这种情况通常很困难。

这听起来像是进来的报价不能满足Kubernetes的需求。 你必须找出你的框架需要什么,然后比较那些被拒绝的报价。