Mesos 上的 Kubernetes,没有合适的报价
Kubernetes on Mesos, no suitable offer available
我按照 this page 上的说明构建和部署 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
三个测试全部完成,没有错误消息。
然后我跟着this page部署了Kubernetes。在构建 Kubernetes-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 容器是 运行ning.
$ 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
然后我创建了一个简单的 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
pod/task没有合适的报价是什么意思?在 Mesos 的日志中,我看到 Mesos 不断向 Kubernetes 框架发送报价,但一直被拒绝。如果我 运行 mesos-execute --master=10.0.2.15:5050 --name=echo --command="echo 'hello world'" --containerizer=docker --docker_image=ubuntu:14.04
它可以部署带有 "mesos-" 前缀和 运行 命令的 Docker 图像。所以看起来 Docker containerizer 工作正常。
听起来好像进来的报价不能满足 Kubernetes 的需求。你必须找出你的框架需要什么,然后将其与被拒绝的提议进行比较。
Kubernetes-Mesos 将出于以下几个原因拒绝报价:
- 优惠中的资源不满足启动 pod 任务所需的最低要求。在给定 slave 上启动的第一个 pod-task 除了 pod-task 资源之外还需要 executor 资源。
- 优惠中的资源与调度程序不兼容。如果您启动框架,启动任务,终止调度程序进程,然后使用不同的标志重新启动调度程序,就会发生这种情况;一些调度程序标志会影响用于启动执行程序的命令行。解决这个问题的最快方法是删除任何 运行 pods 并手动终止从属服务器上已经 运行 的不兼容的执行程序进程。
- apiserver 注册表中的节点信息有问题。
你是什么版本的 k8sm 运行?掌握?您可以尝试增加调度程序日志的详细程度 (--v=3),然后将调度程序日志的副本转储到 pastebin 或其他类似的地方,以便可以分析它们。如果没有日志,通常很难对此类情况进行故障排除。
我按照 this page 上的说明构建和部署 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
三个测试全部完成,没有错误消息。
然后我跟着this page部署了Kubernetes。在构建 Kubernetes-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 容器是 运行ning.
$ 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
然后我创建了一个简单的 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
pod/task没有合适的报价是什么意思?在 Mesos 的日志中,我看到 Mesos 不断向 Kubernetes 框架发送报价,但一直被拒绝。如果我 运行 mesos-execute --master=10.0.2.15:5050 --name=echo --command="echo 'hello world'" --containerizer=docker --docker_image=ubuntu:14.04
它可以部署带有 "mesos-" 前缀和 运行 命令的 Docker 图像。所以看起来 Docker containerizer 工作正常。
听起来好像进来的报价不能满足 Kubernetes 的需求。你必须找出你的框架需要什么,然后将其与被拒绝的提议进行比较。
Kubernetes-Mesos 将出于以下几个原因拒绝报价:
- 优惠中的资源不满足启动 pod 任务所需的最低要求。在给定 slave 上启动的第一个 pod-task 除了 pod-task 资源之外还需要 executor 资源。
- 优惠中的资源与调度程序不兼容。如果您启动框架,启动任务,终止调度程序进程,然后使用不同的标志重新启动调度程序,就会发生这种情况;一些调度程序标志会影响用于启动执行程序的命令行。解决这个问题的最快方法是删除任何 运行 pods 并手动终止从属服务器上已经 运行 的不兼容的执行程序进程。
- apiserver 注册表中的节点信息有问题。
你是什么版本的 k8sm 运行?掌握?您可以尝试增加调度程序日志的详细程度 (--v=3),然后将调度程序日志的副本转储到 pastebin 或其他类似的地方,以便可以分析它们。如果没有日志,通常很难对此类情况进行故障排除。