Этот блог возможен из-за этого твита!
Kubernetes — это система оркестрации с открытым исходным кодом от Google для контейнеров Docker. Он управляет контейнеризованными приложениями на нескольких хостах и предоставляет базовые механизмы для развертывания, обслуживания и масштабирования приложений.
Это позволяет пользователю предоставлять декларативные примитивы для желаемого состояния, например «нужно 5 серверов Couchbase». Механизмы самовосстановления Kubernetes, такие как автоматический перезапуск, перепланирование и репликация контейнеров, затем обеспечивают выполнение этого состояния. Пользователь просто определяет состояние, а Kubernetes гарантирует, что это состояние всегда выполняется в кластере.
Ключевые понятия Kubernetes объясняет ключевые понятия Kubernetes.
Эта серия блогов, состоящая из нескольких частей, покажет, как запустить Couchbase на Kubernetes несколькими способами. Первая часть начинается с простой настройки с использованием Vagrant.
Начало работы с Kubernetes
Существует несколько способов запуска Kubernetes, но я нашел самый простой (не обязательно предсказуемый) способ запустить Vagrant .
- Загрузите последнюю версию Kubernetes , 1.1.8 на момент написания этой статьи, и разверните архив.
- Запустите кластер Kubernetes как:
1234
cdkubernetesexportKUBERNETES_PROVIDER=vagrant./cluster/kube-up.shЭто показывает вывод как:
01020304050607080910111213141516171819202122232425kubernetes-1.1.8 > ./kubernetes/cluster/kube-up.sh... Starting cluster using provider: vagrant... calling verify-prereqs... calling kube-upBringing machine'master'up with'virtualbox'provider...Bringing machine'minion-1'up with'virtualbox'provider...==> master: Importing base box'kube-fedora21'.... . .Validate output:NAME STATUS MESSAGE ERRORcontroller-manager Healthy ok nilscheduler Healthy ok niletcd-0 Healthy {"health":"true"} niletcd-1 Healthy {"health":"true"} nilCluster validation succeededDone, listing cluster services:Kubernetes master is running at https://10.245.1.2Heapster is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/heapsterKubeDNS is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-dnsKubeUI is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-uiGrafana is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-grafanaInfluxDB is running at https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb
Запустите Couchbase на кластере Kubernetes
Самый простой способ запустить контейнер Docker в Kubernetes — использовать команду kubectl run .
Использование команды:
|
1
|
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags] |
Команда запускает определенный образ, возможно, реплицированный. Репликация образа осуществляется путем создания контроллера репликации для управления созданными контейнерами.
Полный список параметров для запуска этой команды можно увидеть с помощью:
|
1
|
./cluster/kubectl.sh run --help |
Контейнер Docker Couchbase объясняет другой контейнер Docker для Couchbase. Для этого блога мы будем использовать arungupta/couchbase как он предварительно настроен.
|
1
|
./cluster/kubectl.sh run couchbase --image=arungupta/couchbase |
Это показывает вывод:
|
1
|
replicationcontroller "couchbase" created |
Выходные данные подтверждают, что контроллер репликации создан. Давайте проверим это:
|
1
2
3
|
./kubernetes/cluster/kubectl.sh get rcCONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS AGEcouchbase couchbase arungupta/couchbase run=couchbase 1 17s |
Теперь проверьте стручки:
|
1
2
3
|
./kubernetes/cluster/kubectl.sh get poNAME READY STATUS RESTARTS AGEcouchbase-tzdhl 0/1 Pending 0 36s |
Давайте проверим состояние модуля:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
./kubernetes/cluster/kubectl.sh describe pod couchbase-tzdhlName: couchbase-tzdhlNamespace: defaultImage(s): arungupta/couchbaseNode: 10.245.1.4/10.245.1.4Start Time: Fri, 26 Feb 2016 18:05:10 -0800Labels: run=couchbaseStatus: RunningReason: Message: IP: 10.246.67.2Replication Controllers: couchbase (1/1 replicas created)Containers: couchbase: Container ID: docker://56dddb66bf60a590e588b972d5cae997ec96149066a9fb8075548c982eb14961 Image: arungupta/couchbase Image ID: docker://080e2e96b3fc22964f3dec079713cdf314e15942d6eb135395134d629e965062 QoS Tier: cpu: Burstable Requests: cpu: 100m State: Running Started: Fri, 26 Feb 2016 18:05:56 -0800 Ready: True Restart Count: 0 Environment Variables:Conditions: Type Status Ready True Volumes: default-token-clfeb: Type: Secret (a secret that should populate this volume) SecretName: default-token-clfebEvents: FirstSeen LastSeen Count From SubobjectPath Reason Message ───────── ──────── ───── ──── ───────────── ────── ─────── 1m 1m 1 {scheduler } Scheduled Successfully assigned couchbase-tzdhl to 10.245.1.4 1m 1m 1 {kubelet 10.245.1.4} implicitly required container POD Pulling Pulling image "gcr.io/google_containers/pause:0.8.0" 59s 59s 1 {kubelet 10.245.1.4} implicitly required container POD Created Created with docker id 2dac5f81f4c2 59s 59s 1 {kubelet 10.245.1.4} spec.containers{couchbase} Pulling Pulling image "arungupta/couchbase" 59s 59s 1 {kubelet 10.245.1.4} implicitly required container POD Started Started with docker id 2dac5f81f4c2 59s 59s 1 {kubelet 10.245.1.4} implicitly required container POD Pulled Successfully pulled image "gcr.io/google_containers/pause:0.8.0" 19s 19s 1 {kubelet 10.245.1.4} spec.containers{couchbase} Pulled Successfully pulled image "arungupta/couchbase" 18s 18s 1 {kubelet 10.245.1.4} spec.containers{couchbase} Created Created with docker id 56dddb66bf60 18s 18s 1 {kubelet 10.245.1.4} spec.containers{couchbase} Started Started with docker id 56dddb66bf60 |
Пятая строка вывода говорит, что IP-адрес узла — 10.245.1.4. Это будет использоваться для доступа к веб-консоли позже.
Последняя строка в этом выводе показывает, что модуль готов. Проверка статуса модуля снова показывает:
|
1
2
3
|
./kubernetes/cluster/kubectl.sh get poNAME READY STATUS RESTARTS AGEcouchbase-tzdhl 1/1 Running 0 2m |
Веб-консоль Couchbase в кластере Kubernetes
Теперь, когда ваш контейнер Couchbase работает в кластере Kubernetes, вы можете просмотреть веб-консоль .
Каждому модулю назначается уникальный IP-адрес, но этот адрес доступен только внутри кластера. Он может быть выставлен с помощью команды kubectl expose .
Эта команда берет контроллер репликации, службу или модуль и представляет его как новую службу Kubernetes. Это можно сделать, дав команду:
|
1
2
|
./cluster/kubectl.sh expose rc couchbase --target-port=8091 --port=8091 --external-ip=10.245.1.4service "couchbase" exposed |
В этой команде:
-
--target-port— это имя или номер порта в контейнере, на который служба должна направлять трафик -
--port— это порт, на котором должна обслуживаться служба -
--external-ip— это внешний IP-адрес, который нужно установить для службы. Обратите внимание, что этот IP-адрес был получен сkubectl describe podкомандыkubectl describe podранее.
Теперь вы можете получить доступ к веб-консоли Couchbase по адресу http://10.245.1.4:8091 и выглядеть следующим образом:
Введите учетные данные пароля как Administrator / password . Эти учетные данные указываются при создании образа Docker по адресу github.com/arun-gupta/docker-images/blob/master/couchbase/configure-cluster.sh#L9 .
Вуаля!
Обсудите с нами на форумах StackOverflow или Couchbase . Вы также можете подписаться на нас по адресу @couchbasedev и @couchbase .
| Ссылка: | Couchbase на Kubernetes от нашего партнера JCG Аруна Гупты в Miles to go 2.0… блог. |

