
In some places of which network environment was limited, kubeadm can't pull images from k8s.gcr.io. This patch add a variable `KURYR_KUBEADMIN_IMAGE_REPOSITORY` in order to the developer who located in these places can set the kubeadm to pull container images from repository that they can access. Change-Id: Id966747d8c09ea14bb37880f8fb37447591564b5
6.9 KiB
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.