Basic DevStack installation¶
Most basic DevStack installation of kuryr-kubernetes is pretty simple. This document aims to be a tutorial through installation steps.
Document assumes using Ubuntu LTS 20.04 (using server or cloud installation is
recommended, but desktop will also work), but same steps should apply for other
operating systems. It is also assumed that git
and curl
are already
installed on the system. DevStack will make sure to install and configure
OpenStack, Kubernetes and dependencies of both systems.
Please note, that DevStack installation should be done inside isolated environment such as virtual machine, since it will make substantial changes to the host.
Cloning required repositories¶
First of all, you’ll need a user account, which can execute passwordless
sudo
command. Consult DevStack Documentation for details, how to create
one, or simply add line:
"USERNAME ALL=(ALL) NOPASSWD:ALL"
to /etc/sudoers
using visudo
command. Remember to change USERNAME
to the real name of the user account.
Clone DevStack:
$ git clone https://opendev.org/openstack-dev/devstack
Copy sample local.conf
(DevStack configuration file) to devstack
directory:
$ curl https://opendev.org/openstack/kuryr-kubernetes/raw/branch/master/devstack/local.conf.sample \
-o devstack/local.conf
Note
local.conf.sample
file is configuring Neutron and Kuryr with OVN
ML2 networking. In the kuryr-kubernetes/devstack
directory there are
other sample configuration files that enable Open vSwitch instead OVN.
networking. See other pages in this documentation section to learn more.
Now edit devstack/local.conf
to set up some initial options:
If you have multiple network interfaces, you need to set
HOST_IP
variable to the IP on the interface you want to use as DevStack’s primary. DevStack sometimes complain about lacking ofHOST_IP
even if there is single network interface.If you already have Docker installed on the machine, you can comment out line starting with
enable_plugin devstack-plugin-container
.If you can’t pull images from k8s.gcr.io, you can add the variable
KURYR_KUBEADMIN_IMAGE_REPOSITORY
todevstack/local.conf
and set it’s value to the repository that you can access.
Once local.conf
is configured, you can start the installation:
$ devstack/stack.sh
Installation takes from 20 to 40 minutes. Once that’s done you should see similar output:
=========================
DevStack Component Timing
(times are in seconds)
=========================
wait_for_service 8
pip_install 137
apt-get 295
run_process 14
dbsync 22
git_timed 168
apt-get-update 4
test_with_retry 3
async_wait 71
osc 200
-------------------------
Unaccounted time 505
=========================
Total runtime 1427
=================
Async summary
=================
Time spent in the background minus waits: 140 sec
Elapsed time: 1427 sec
Time if we did everything serially: 1567 sec
Speedup: 1.09811
This is your host IP address: 10.0.2.15
This is your host IPv6 address: ::1
Keystone is serving at http://10.0.2.15/identity/
The default users are: admin and demo
The password: pass
Services are running under systemd unit files.
For more information see:
https://docs.openstack.org/devstack/latest/systemd.html
DevStack Version: xena
Change:
OS Version: Ubuntu 20.04 focal
You can test DevStack by sourcing credentials and trying some commands:
$ source devstack/openrc admin admin
$ openstack service list
+----------------------------------+------------------+------------------+
| ID | Name | Type |
+----------------------------------+------------------+------------------+
| 07e985b425fc4f8a9da20970a26f754a | octavia | load-balancer |
| 1dc08cb4401243848a562c0042d3f40a | neutron | network |
| 35627730938d4a4295f3add6fc826261 | nova | compute |
| 636b43b739e548e0bb369bc41fe1df08 | glance | image |
| 90ef7129985e4e10874d5e4ddb36ea01 | keystone | identity |
| ce177a3f05dc454fb3d43f705ae24dde | kuryr-kubernetes | kuryr-kubernetes |
| d3d6a461a78e4601a14a5e484ec6cdd1 | nova_legacy | compute_legacy |
| d97e5c31b1054a308c5409ee813c0310 | placement | placement |
+----------------------------------+------------------+------------------+
To verify if Kubernetes is running properly, list its nodes and check status of the only node you should have. The correct value is “Ready”:
$ kubectl get nodes
NAME STATUS AGE VERSION
localhost Ready 2m v1.6.2
To test kuryr-kubernetes itself try creating a Kubernetes pod:
$ kubectl create deployment --image busybox test -- sleep 3600
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
test-3202410914-1dp7g 0/1 ContainerCreating 0 7s <none> localhost
After a moment (even up to few minutes as Docker image needs to be downloaded) you should see that pod got the IP from OpenStack network:
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
test-3202410914-1dp7g 1/1 Running 0 35s 10.0.0.73 localhost
You can verify that this IP is really assigned to Neutron port:
[stack@localhost kuryr-kubernetes]$ openstack port list | grep 10.0.0.73
| 3ce7fd13-ad0a-4e92-9b6f-0d38d50b1699 | | fa:16:3e:8e:f4:30 | ip_address='10.0.0.73', subnet_id='ddfbc8e9-68da-48f9-8a05-238ea0607e0d' | ACTIVE |
If those steps were successful, then it looks like your DevStack with
kuryr-kubernetes is working correctly. In case of errors, copy last ~50 lines
of the logs, paste them into paste.openstack.org and ask other developers
for help on Kuryr’s IRC channel. More info on how to use DevStack can be
found in DevStack Documentation, especially in section Using Systemd in
DevStack, which explains how to use systemctl
to control services and
journalctl
to read its logs.