2014-09-09 2 views
3

Я хотел бы создать контейнер кубернете, который содержит 2 контейнера, оба с разными изображениями, поэтому я могу запустить оба контейнера вместе.Как написать конфигурацию kubernetes pod для запуска двух контейнеров

В настоящее время я попробовал следующую конфигурацию:

{ 
    "id": "podId", 
    "desiredState": { 
    "manifest": { 
     "version": "v1beta1", 
     "id": "podId", 
     "containers": [{ 
     "name": "type1", 
     "image": "local/image" 
     }, 
     { 
     "name": "type2", 
     "image": "local/secondary" 
     }] 
    } 
    }, 
    "labels": { 
    "name": "imageTest" 
    } 
} 

Однако, когда я исполняю kubecfg -c app.json create /pods я получаю следующее сообщение об ошибке:

F0909 08:40:13.028433 01141 kubecfg.go:283] Got request error: request [&http.Request{Method:"POST", URL:(*url.URL)(0xc20800ee00), Proto:"HTTP/1.1", ProtoMajor:1, ProtoMinor:1, Header:http.Header{}, B 
ody:ioutil.nopCloser{Reader:(*bytes.Buffer)(0xc20800ed20)}, ContentLength:396, TransferEncoding:[]string(nil), Close:false, Host:"127.0.0.1:8080", Form:url.Values(nil), PostForm:url.Values(nil), Multi 
partForm:(*multipart.Form)(nil), Trailer:http.Header(nil), RemoteAddr:"", RequestURI:"", TLS:(*tls.ConnectionState)(nil)}] failed (500) 500 Internal Server Error: {"kind":"Status","creationTimestamp": 
null,"apiVersion":"v1beta1","status":"failure","message":"failed to find fit for api.Pod{JSONBase:api.JSONBase{Kind:\"\", ID:\"SSH podId\", CreationTimestamp:util.Time{Time:time.Time{sec:63545848813, nsec 
:0x14114e1, loc:(*time.Location)(0xb9a720)}}, SelfLink:\"\", ResourceVersion:0x0, APIVersion:\"\"}, Labels:map[string]string{\"name\":\"imageTest\"}, DesiredState:api.PodState{Manifest:api.ContainerMa 
nifest{Version:\"v1beta1\", ID:\"podId\", Volumes:[]api.Volume(nil), Containers:[]api.Container{api.Container{Name:\"type1\", Image:\"local/image\", Command:[]string(nil), WorkingDir:\"\", Ports:[]ap 
i.Port(nil), Env:[]api.EnvVar(nil), Memory:0, CPU:0, VolumeMounts:[]api.VolumeMount(nil), LivenessProbe:(*api.LivenessProbe)(nil)}, api.Container{Name:\"type2\", Image:\"local/secondary\", Command:[]string(n 
il), WorkingDir:\"\", Ports:[]api.Port(nil), Env:[]api.EnvVar(nil), Memory:0, CPU:0, VolumeMounts:[]api.VolumeMount(nil), LivenessProbe:(*api.LivenessProbe)(nil)}}}, Status:\"\", Host:\"\", HostIP:\"\ 
", PodIP:\"\", Info:api.PodInfo(nil), RestartPolicy:api.RestartPolicy{Type:\"RestartAlways\"}}, CurrentState:api.PodState{Manifest:api.ContainerManifest{Version:\"\", ID:\"\", Volumes:[]api.Volume(nil 
), Containers:[]api.Container(nil)}, Status:\"\", Host:\"\", HostIP:\"\", PodIP:\"\", Info:api.PodInfo(nil), RestartPolicy:api.RestartPolicy{Type:\"\"}}}","code":500} 

Как я могу изменить конфигурацию соответствующим образом?

Выполнение кубернетов на бродячих vm (yungsang/coreos).

+0

Вы были в состоянии решить эту проблему? Теперь это немного устарело - v1 может решить вашу проблему. – aronchick

+0

Я больше не использую это, поэтому я не знаю. Да, его довольно старый теперь, поэтому он может быть исправлен – mangusbrother

ответ

2

Ошибка здесь: «не удалось найти нужную». Обычно это происходит, когда у вас конфликт портов (повторите попытку и используйте то же самое hostPort или, возможно, у вас нет рабочих узлов/миньонов.

Я бы предложил вам использовать файл Vagrant, который находится в Kubernetes git repo (см. http://kubernetes.io), поскольку мы пытаемся убедиться, что работа с Kubernetes очень активно развивается. Если вы хотите, чтобы он работал с одиночной машиной CoreOS, я предлагаю вам перейти на IRC (#google -containers на Freenode) и попытаться войти в контакт с Kelsey Хайтауэр.

+0

Vagrantfile не работает, поскольку он искал файлы в дистрибутиве linux, и я нахожусь в окнах – mangusbrother

2

Ваш стручок файл спецификации выглядит как недействительный. Согласно http://kubernetes.io/v1.0/docs/user-guide/walkthrough/README.html#multiple-containers, действительный несколько контейнеров стручок спецификации должны нравится этот

apiVersion: v1 
kind: Pod 
metadata: 
    name: www 
spec: 
    containers: 
    - name: nginx 
    image: nginx 
    volumeMounts: 
    - mountPath: /srv/www 
     name: www-data 
     readOnly: true 
    - name: git-monitor 
    image: kubernetes/git-monitor 
    env: 
    - name: GIT_REPO 
     value: http://github.com/some/repo.git 
    volumeMounts: 
    - mountPath: /data 
     name: www-data 
    volumes: 
    - name: www-data 
    emptyDir: {} 

Последний документ в http://kubernetes.io/docs/user-guide/walkthrough/#multiple-containers

Смежные вопросы