Управление кластером KUBERNETES
Для управления K8S используется утилита kubectl. Настройки можно указывать прямо в командной строке или использовать заранее подготовленный YAML/JSON-файл. Чтобы было проще вводить команды, укажем в переменной PATH,где ее искать.
1 |
$ export PATH=$PATH:~/kubernetes/cluster/ubuntu/binaries |
Для удобства лучше строку прописать сразу в ~/.bash_profile. Два подкаталога — master, minion в ubuntu/binaries содержат утилиты для настройки мастера и подчиненных узлов. Все операции реализуются указанием одного из 20 ключей, список которых можем получить, введя
1 |
$ kubectl --help |
Смотрим
Смотрим список нод, настройки и данные кластера.
1 2 3 |
$ kubectl get nodes $ kubectl cluster-info $ kubectl config |
В ответ должны получить список указанных ранее в config-default.sh узлов. Запустим контейнер с nginx:
1 |
$ kubectl run nginxtest --image=nginx --port=80 --hostport=81 |
K8S сам загрузит и установит образ. Через время к nginx можно обратиться, подключившись на 81-й порт. Если нод несколько и нам нужна балансировка, может указываться параметр —create-external-load-balancer и указывается количество реплик —replicas=№. Текущее состояние репликации выводится командой kubectl get rc. Возможно заранее прописать настройки контейнера в файле, который затем использовать при азвертывании командой create:
1 |
$ kubectl create -f nginx.yaml |
Если файлов много, то просто указывается каталог, в котором они находятся.
Далее создаем сервис:
1 |
$ kubectl expose rc nginx --port=80 --target-port=80 --service-name=nginx -s "http://192.168.1.2:8080" |
Теперь можем проверить доступные сервисы и POD.
1 |
$ kubectl get pods |
В ответ получим имя (по которому можем обращаться к POD), состояние и возраст.
1 |
$ kubectl get services |
Если нужно выполнить команду внутри контейнера, то используем kubectl exec. Kubectl позволяет обращаться к некоторым ресурсам сразу по имени. В настоящее время доступно 19 типов ресурсов, все они описаны в документации к kubectl. Когда информации много, можно форматировать вывод при помощи -o, отбирая произвольные колонки, или вывести в JSON/YAML-формате для дальнейшей обработки. Например, выведем в расширенном формате список нод и сервисов:
1 |
$ kubectl get rc,services -o=wide |
Веб-интерфейс доступен по адресу https://<K8S-host>/ui, пароль для входа можно посмотреть в выводе kubectl config view. Если он не работает, следует установить его последнюю стабильную версию.
1 2 |
$ kubectl create -f https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml |