118 lines
3.6 KiB
Markdown
118 lines
3.6 KiB
Markdown
---
|
|
---
|
|
|
|
* TOC
|
|
{:toc}
|
|
|
|
## Getting started with OpenStack
|
|
|
|
Running Kubernetes with Openstack is an easy way to create Kubernetes cluster on the top of OpenStack. Heat OpenStack Orchestration
|
|
engine describes the infrastructure for Kubernetes cluster. CentoOS images are used for Kubernetes host machines.
|
|
|
|
## Prerequisites
|
|
|
|
1. Install latest version OpenStack clients
|
|
|
|
heat >= 0.9.0
|
|
|
|
swift >= 2.7.0
|
|
|
|
glance >= 1.2.0
|
|
|
|
nova >= 3.2.0
|
|
|
|
```
|
|
sudo pip install -U --force python-heatclient
|
|
sudo pip install -U --force python-swiftclient
|
|
sudo pip install -U --force python-glanceclient
|
|
sudo pip install -U --force python-novaclient
|
|
```
|
|
#### Note:
|
|
OpenStack CLI clients like python-PROJECTNAMEclient are going to be deprecated soon in favor of universal OpenStack CLI client.
|
|
More information you can find here: [deprecate-cli](https://specs.openstack.org/openstack/openstack-specs/specs/deprecate-cli.html)
|
|
|
|
|
|
2. Set proper values in configuration files
|
|
|
|
Project contains four files with configuration: config-default.sh, config-image.sh, openrc-default.sh and openrc-swift.sh
|
|
|
|
**config-default.sh** sets all parameters needed for heat template.
|
|
Additionally there is a flag CREATE_IMAGE which indicates if new image must be created.
|
|
If 'false' then image with IMAGE_ID will be used.
|
|
|
|
**config-image.sh** sets parameters needed to create new OpenStack image if flag CREATE_IMAGE=true.
|
|
Use CentOS 7 image for this purpose. You can get image here: [CentOS images](http://cloud.centos.org/centos/7/images/)
|
|
|
|
**openrc-default.sh openrs-swift.sh** those files contain credential variables for OpenStack clients.
|
|
|
|
|
|
## Setup
|
|
|
|
Setting up a cluster:
|
|
|
|
```sh
|
|
export KUBERNETES_PROVIDER=openstack
|
|
cd kubernetes
|
|
make clean
|
|
make quick-release
|
|
./cluster/kube-up.sh
|
|
```
|
|
|
|
Alternatively, you can download [Kubernetes release](https://github.com/kubernetes/kubernetes/releases) and extract the archive. To start your local cluster, open a shell and run:
|
|
|
|
```sh
|
|
cd kubernetes
|
|
|
|
export KUBERNETES_PROVIDER=openstack
|
|
./cluster/kube-up.sh
|
|
```
|
|
|
|
The `KUBERNETES_PROVIDER` environment variable tells all of the various cluster management scripts which variant to use. If you forget to set this, the assumption is you are running on Google Compute Engine.
|
|
|
|
## Interacting with your Kubernetes cluster with Openstack
|
|
|
|
You can manage the nodes in your cluster with the Openstack WEB UI like Horizon or using heat or nova clients.
|
|
|
|
To get all necessary information about cluster execute commands in main kubernetes directory:
|
|
|
|
```
|
|
. cluster/openstack/config-default.sh
|
|
. cluster/openstack/openrc-default.sh
|
|
heat stack-show $STACK_NAME
|
|
```
|
|
|
|
You will get cluster status and IP addresses for your master and minion nodes.
|
|
|
|
## Authenticating with your master
|
|
|
|
Because you added public key to nodes you can easily ssh to them.
|
|
|
|
```
|
|
$ ssh minion@IP_ADDRESS
|
|
```
|
|
|
|
## Running containers
|
|
|
|
Your cluster is running, you can list the nodes in your cluster:
|
|
|
|
```console
|
|
$ ./cluster/kubectl.sh get nodes
|
|
NAME LABELS STATUS AGE
|
|
kubernetesstack-node-tc9f2tfr kubernetes.io/hostname=kubernetesstack-node-tc9f2tfr Ready 21h
|
|
```
|
|
|
|
Before starting a container there will be no pods, services and replication controllers.
|
|
|
|
```console
|
|
$ ./cluster/kubectl.sh get pods
|
|
NAME READY STATUS RESTARTS AGE
|
|
|
|
$ ./cluster/kubectl.sh get services
|
|
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
|
|
|
|
$ ./cluster/kubectl.sh get replicationcontrollers
|
|
CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS
|
|
```
|
|
|
|
Now you are ready to create you first service and controller.
|