Я выполнил инструкции на this page, чтобы построить и развернуть Mesos. Я сделал это на Ubuntu Trusty VM с 1 мастером Mesos и 1 подчиненным. Следующие команды - это то, что я использовал для запуска Mesos.Kubernetes on 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, чтобы развернуть Кубернетес. После строительства Кубернетеса-Мезоса я использовал следующие команды для развертывания Кубернетеса.
$ 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
и т.д.d контейнер работает.
$ 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 стручок, 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, но продолжает оставаться ДЕКЛАРИРОВАННЫМ. Если я запустил mesos-execute --master=10.0.2.15:5050 --name=echo --command="echo 'hello world'" --containerizer=docker --docker_image=ubuntu:14.04
, он может развернуть образ Docker с префиксом «mesos-» и запустить команду. Таким образом, контейнер Docker работает правильно.
Моя версия k8sm v1.2.0-alpha.8, версия mesos 0.27.1. Вот часть scheduler.log: http://pastebin.com/M0FSsa1i –