- Установка Minikube
- Mar 26, 2018 08:15 · 444 words · 3 minute read kubernetes minikube
- Начало работы в Kubernetes с помощью Minikube
- Предварительные условия
- Протестируйте свою инсталляцию Minikube
- Установка пода hello-minikube
- Сборка и установка сервиса с Docker
- Уборка
- P.S. От переводчика
- Minicube mac os install
- Minikube Features
- Installation
- Requirements
- Instructions
- Quickstart
- Using rkt container engine
- Driver plugins
- Reusing the Docker daemon
- Managing your Cluster
- Starting a Cluster
- Configuring Kubernetes
- Examples
- Stopping a Cluster
- Deleting a Cluster
- Interacting With your Cluster
- Kubectl
- Dashboard
- Services
- Networking
- Persistent Volumes
- Mounted Host Folders
- Private Container Registries
- Add-ons
- Documentation
- Using Minikube with an HTTP Proxy
- Known Issues
- Design
- Additional Links:
- Community
Установка Minikube
Mar 26, 2018 08:15 · 444 words · 3 minute read kubernetes minikube
Minikube — утилита командной строки для настройки и запуска однонодового кластера Kubernetes в виртуальной машине на локальном компьютере.
Данный вариант просто идеально подходит для первого знакомства с кластером под управлением Kubernetes и выполнения несложных лабораторных работ.
Прежде чем приступить к установке Minikube , нужно убедиться, что в системе поддерживается виртуализация VT-x/AMD-v. В Linux сделать это можно так (результат выполнения команды не должен быть пустым):
Для Mac OS X можно воспользоваться такой командой:
Примечание. Если вы используете Docker for Mac версии 17.12 и новее, достаточно просто переключиться на Edge channel (нестабильная, экспериментальная ветка) и вы уже получите Kubernetes (подробности).
Нам понадобятся следующие компоненты:
С VirtualBox не должно возникнуть никаких вопросов — на официальном сайте скачиваем установщик и следуем указаниям мастера установки.
Для установки Minikube достаточно перейти на страницу с последним релизом (на момент написания статьи v0.25.0) и выполнить предложенные инструкции. Например, для Linux:
или для Mac OS X:
Далее переходим к установке kubectl — утилиты командной строки для управления приложениями, развернутыми в кластере. Здесь может быть несколько вариантов, например, установка с помощью curl :
Второй вариант — установка kubectl как часть Google Cloud SDK (считаем, что SDK уже установлен):
Также можно установить kubectl используя специфический менеджер пакетов, для Linux:
Чтобы проверить корректность установки kubectl , не забудьте запустить команду:
Теперь можем приступать к работе с minikube :
Запуск пода из docker-образа hello-minikube, предназначенного для демонстрации:
Смотрим запущенные поды в кластере (под запускается):
Проверяем еще раз через несколько секунд:
Для организация доступа к поду hello-minikube извне запустим команду:
Проверим работу пода с помощью утилиты curl из командной строки:
Убираем за собой — удаляем deployment и останавливаем minikube :
Источник
Начало работы в Kubernetes с помощью Minikube
Предисловие переводчика: Minikube — удобный инструмент, который мы применяем в компании для локальных экспериментов с Kubernetes (в частности, для выполнения лабораторных работ по этой системе при обучении сотрудников). Эта статья показалась мне полезной во время моего знакомства с Kubernetes. Она написана год назад автором, использующим Mac OS X, а я проделывал все операции в Ubuntu 16.04 совсем недавно и с актуальными версиями основного софта: Minikube 0.20, Docker 17.06.0-ce, kubectl 1.7.0. Поэтому все выводы команд были переделаны под новые версии и незначительно отличаются от приведённых в оригинальной статье.
Kubernetes — система оркестровки контейнеров с открытым исходным кодом, готовая для production и предназначенная для автоматизации размещения, масштабирования и управления контейнерами.
Это упрощенная версия руководства Hello Minikube, в которой Minikube используется для запуска локального кластера Kubernetes вместо Google Container Engine, благодаря чему отпадает необходимость в наличии облачной платформы.
Руководство написано под Mac OS X, но представленные ниже команды подойдут и для любой другой ОС. (Как уже отмечалось выше, всё было воспроизведено и адаптировано под Linux — прим. перев.)
Предварительные условия
- Проверьте, что ваша система поддерживает виртуализацию VT-x/AMD-v с помощью команды:
Если команда вернула непустой результат — можно продолжать.
Установите последний VirtualBox или VMware Fusion. В этом руководстве используется VirtualBox. Если вы устанавливали Docker Toolbox, то, возможно, у вас уже есть установленный VirtualBox.
- Проверить в Linux (Ubuntu/Debian):
Установите последний Minikube для вашей ОС и архитектуры:
Прим. перев.: sudo mv minikube /usr/local/bin/ можно убрать или поменять, если вы хотите использовать другой путь.
Установите kubectl для вашей ОС и архитектуры:
Прим. перев.: Для Ubuntu 16.04 и старше еще доступен snap-пакет:
Протестируйте свою инсталляцию Minikube
Мы можем увидеть список запущенных в кластере подов:
Установка пода hello-minikube
Проект Minikube на GitHub предлагает демо-версию для быстрого старта, использующую собранный Docker-образ hello-minikube . Так как мы уже запустили кластер, то первый шаг ( minikube start ) можно пропустить.
Теперь давайте запустим встроенный под hello-minikube . Для этого пода будет создан предварительно настроенный deployment:
С помощью следующих команд мы можем посмотреть на актуальные списки подов и deployments, чтобы убедиться в случившихся изменениях:
Для доступа к сервису hello-minikube нужно открыть ему внешний IP командой:
Примечание: необходимо использовать тип NodePort , т.к. Minikube не поддерживает сервис LoadBalancer . Так можно убедиться, что сервис стал открыт:
Теперь мы можем либо с помощью curl из командной строки, либо браузером открыть ссылку на сервис. Чтобы узнать его внешний IP и порт, предварительно воспользуемся командой:
Примечание: IP-адрес, который управляется VirtualBox’ом, может изменяться. Узнайте его с помощью команды minikube ip или в выводе ifconfig :
После того, как мы закончили с hello-minikube , можем удалить его deployment и сервис, освободив ресурсы и проверив, что все действительно удалено:
Сборка и установка сервиса с Docker
Этот пример несколько сложнее и описывает создание небольшого Node.js-сервера, сборки его в образ Docker с использованием Dockerfile и запуск в Kubernetes.
Создадим простой Node.js-проект hello-node :
Создадим простой HTTP-сервер, который возвращает «Hello World!»:
Поправим Dockerfile , объявив, что образ использует node 4.4 и контейнер запускает сервис с помощью файла server.js :
Перед запуском каких-либо команд Docker нужно задать окружение. Аналогично запуску eval $(docker-machine env) , мы создаем переменные окружения Docker для Minikube с помощью команды minikube docker-env :
Теперь соберем образ. Это займет некоторое время, т.к. для разрешения зависимостей будут подгружены образы из Docker Hub, такие как node 4.4. По завершении вы получите новый Docker-образ, готовый к деплою (завершающая точка . в конце команды говорит Docker собрать образ из текущей директории — прим. перев.):
Теперь мы можем разместить под hello-node в локальный кластер Kubernetes с помощью kubectl :
Как и прежде, необходимо присвоить сервису внешний IP и порт, чтобы получить к нему доступ с помощью curl :
Победа! Мы успешно написали, собрали и разместили простой сервис Node.js, используя Docker-образ в локальном кластере Kubernetes.
Этот игрушечный проект предназначен для начинающих, желающих попробовать Kubernetes локально перед тем, как вы начнете публиковать поды в платных облачных платформах. Он позволяет вам сделать первые шаги без лишних затрат на эти эксперименты.
Уборка
Не забудьте удалить сервис и deployment для hello-node и выключить службу minikube , когда закончите:
P.S. От переводчика
Более полную документацию по локальному запуску Kubernetes с Minikube можно найти на сайте проекта. Вам также могут быть интересны следующие статьи из нашего блога:
Источник
Minicube mac os install
Minikube is a tool that makes it easy to run Kubernetes locally. Minikube runs a single-node Kubernetes cluster inside a VM on your laptop for users looking to try out Kubernetes or develop with it day-to-day.
Minikube Features
- Minikube supports Kubernetes features such as:
- DNS
- NodePorts
- ConfigMaps and Secrets
- Dashboards
- Container Runtime: Docker, and rkt
- Enabling CNI (Container Network Interface)
- Ingress
Installation
Requirements
- OS X
- xhyve driver, VirtualBox or VMware Fusion installation
- Linux
- VirtualBox or KVM installation
- Windows
- VirtualBox or Hyper-V installation
- VT-x/AMD-v virtualization must be enabled in BIOS
- kubectl See the kubectl installation instructions for more details.
Instructions
See the installation instructions for the latest release.
Quickstart
Here’s a brief demo of minikube usage. If you want to change the VM driver add the appropriate —vm-driver=xxx flag to minikube start . Minikube supports the following drivers:
Note that the IP below is dynamic and can change. It can be retrieved with minikube ip .
Using rkt container engine
To use rkt as the container runtime run:
This will use an alternative minikube ISO image containing both rkt, and Docker, and enable CNI networking.
Driver plugins
See DRIVERS for details on supported drivers and how to install plugins, if required.
Reusing the Docker daemon
When using a single VM of Kubernetes, it’s really handy to reuse the minikube’s built-in Docker daemon; as this means you don’t have to build a docker registry on your host machine and push the image into it — you can just build inside the same docker daemon as minikube which speeds up local experiments. Just make sure you tag your Docker image with something other than ‘latest’ and use that tag while you pull the image. Otherwise, if you do not specify version of your image, it will be assumed as :latest , with pull image policy of Always correspondingly, which may eventually result in ErrImagePull as you may not have any versions of your Docker image out there in the default docker registry (usually DockerHub) yet.
To be able to work with the docker daemon on your mac/linux host use the docker-env command in your shell:
you should now be able to use docker on the command line on your host mac/linux machine talking to the docker daemon inside the minikube VM:
On Centos 7, docker may report the following error:
The fix is to update /etc/sysconfig/docker to ensure that minikube’s environment changes are respected:
Remember to turn off the imagePullPolicy:Always, as otherwise Kubernetes won’t use images you built locally.
Managing your Cluster
Starting a Cluster
The minikube start command can be used to start your cluster. This command creates and configures a virtual machine that runs a single-node Kubernetes cluster. This command also configures your kubectl installation to communicate with this cluster.
If you are behind a web proxy, you will need to pass this information in e.g. via
Unfortunately just setting the environment variables will not work.
Minikube will also create a «minikube» context, and set it to default in kubectl. To switch back to this context later, run this command: kubectl config use-context minikube .
Configuring Kubernetes
Minikube has a «configurator» feature that allows users to configure the Kubernetes components with arbitrary values. To use this feature, you can use the —extra-config flag on the minikube start command.
This flag is repeated, so you can pass it several times with several different values to set multiple options.
This flag takes a string of the form component.key=value , where component is one of the strings from the above list, key is a value on the configuration struct and value is the value to set.
Valid key s can be found by examining the documentation for the Kubernetes componentconfigs for each component. Here is the documentation for each supported configuration:
Examples
To change the MaxPods setting to 5 on the Kubelet, pass this flag: —extra-config=kubelet.MaxPods=5 .
This feature also supports nested structs. To change the LeaderElection.LeaderElect setting to true on the scheduler, pass this flag: —extra-config=scheduler.LeaderElection.LeaderElect=true .
To set the AuthorizationMode on the apiserver to RBAC , you can use: —extra-config=apiserver.AuthorizationMode=RBAC .
Stopping a Cluster
The minikube stop command can be used to stop your cluster. This command shuts down the minikube virtual machine, but preserves all cluster state and data. Starting the cluster again will restore it to it’s previous state.
Deleting a Cluster
The minikube delete command can be used to delete your cluster. This command shuts down and deletes the minikube virtual machine. No data or state is preserved.
Interacting With your Cluster
Kubectl
The minikube start command creates a «kubectl context» called «minikube». This context contains the configuration to communicate with your minikube cluster.
Minikube sets this context to default automatically, but if you need to switch back to it in the future, run:
kubectl config use-context minikube ,
or pass the context on each command like this: kubectl get pods —context=minikube .
Dashboard
To access the Kubernetes Dashboard, run this command in a shell after starting minikube to get the address:
Services
To access a service exposed via a node port, run this command in a shell after starting minikube to get the address:
Networking
The minikube VM is exposed to the host system via a host-only IP address, that can be obtained with the minikube ip command. Any services of type NodePort can be accessed over that IP address, on the NodePort.
To determine the NodePort for your service, you can use a kubectl command like this:
kubectl get service $SERVICE —output=’jsonpath=»<.spec.ports[0].nodePort>«‘
Persistent Volumes
Minikube supports PersistentVolumes of type hostPath . These PersistentVolumes are mapped to a directory inside the minikube VM.
The Minikube VM boots into a tmpfs, so most directories will not be persisted across reboots ( minikube stop ). However, Minikube is configured to persist files stored under the following host directories:
Here is an example PersistentVolume config to persist data in the ‘/data’ directory:
Mounted Host Folders
Some drivers will mount a host folder within the VM so that you can easily share files between the VM and host. These are not configurable at the moment and different for the driver and OS you are using. Note: Host folder sharing is not implemented in the KVM driver yet.
Driver | OS | HostFolder | VM |
---|---|---|---|
Virtualbox | Linux | /home | /hosthome |
Virtualbox | OSX | /Users | /Users |
Virtualbox | Windows | C://Users | /c/Users |
VMWare Fusion | OSX | /Users | /Users |
Xhyve | OSX | /Users | /Users |
Private Container Registries
To access a private container registry, follow the steps on this page.
We recommend you use ImagePullSecrets, but if you would like to configure access on the minikube VM you can place the .dockercfg in the /home/docker directory or the config.json in the /home/docker/.docker directory.
Add-ons
In order to have minikube properly start/restart custom addons, place the addons you wish to be launched with minikube in the .minikube/addons directory. Addons in this folder will be moved to the minikubeVM and launched each time minikube is started/restarted.
Documentation
For a list of minikube’s available commands see the full CLI docs.
Using Minikube with an HTTP Proxy
Minikube creates a Virtual Machine that includes Kubernetes and a Docker daemon. When Kubernetes attempts to schedule containers using Docker, the Docker daemon may require external network access to pull containers.
If you are behind an HTTP proxy, you may need to supply Docker with the proxy settings. To do this, pass the required environment variables as flags during minikube start .
Known Issues
- Features that require a Cloud Provider will not work in Minikube. These include:
- LoadBalancers
- Features that require multiple nodes. These include:
- Advanced scheduling policies
Design
Minikube uses libmachine for provisioning VMs, and localkube (originally written and donated to this project by RedSpread) for running the cluster.
For more information about minikube, see the proposal.
Additional Links:
- Goals and Non-Goals: For the goals and non-goals of the minikube project, please see our roadmap.
- Development Guide: See CONTRIBUTING.md for an overview of how to send pull requests.
- Building Minikube: For instructions on how to build/test minikube from source, see the build guide
- Adding a New Dependency: For instructions on how to add a new dependency to minikube see the adding dependencies guide
- Updating Kubernetes: For instructions on how to add a new dependency to minikube see the updating Kubernetes guide
Community
Contributions, questions, and comments are all welcomed and encouraged! minkube developers hang out on Slack in the #minikube channel (get an invitation here). We also have the kubernetes-dev Google Groups mailing list. If you are posting to the list please prefix your subject with «minikube: «.
Источник