Lab Environment

Membuat instance yang akan dibuat pada cluster openstack yang telah kita bangun sebelumnya dengan spesifikasi berikut :

Hardware Spec

Node NameProcessorRAMVolumesDescription
k8s-lb-ingress1 Core1 GB10 GBExt Load Balancer Node
k8s-master012 Core2 GB20 GBControl Plane Node
k8s-master022 Core2 GB20 GBControl Plane Node
k8s-master032 Core2 GB20 GBControl Plane Node
k8s-worker012 Core2 GB20 GBWorker Node
k8s-worker022 Core2 GB20 GBWorker Node
k8s-worker022 Core2 GB20 GBWorker Node

Networking Spec

Node NameIP AddressFloating IPDescription
k8s-apiserver192.168.0.10Int Load Balance Virtual IP
k8s-master01192.168.0.11Int Net
k8s-master02192.168.0.12Int Net
k8s-master03192.168.0.13Int Net
k8s-master01192.168.0.21172.16.0.21Int & Ext Net
k8s-master02192.168.0.22172.16.0.22Int & Ext Net
k8s-master03192.168.0.23172.16.0.23Int & Ext Net

Membuat Port Instance

1
2
3
for i in {1..3}; do openstack port create --network int-net01 --fixed-ip subnet=int-subnet01,ip-address=192.168.0.1$i k8s-master0$i; done
for i in {1..3}; do openstack port create --network int-net01 --fixed-ip subnet=int-subnet01,ip-address=192.168.0.2$i k8s-worker0$i; done
openstack port create --network int-net01 --fixed-ip subnet=int-subnet01,ip-address=192.168.0.100 k8s-lb-ingress

Mengalokasikan Virtual IP

1
2
openstack port create --network int-net01 --fixed-ip subnet=int-subnet01,ip-address=192.168.0.10 k8s-apiserver
for i in {1..3}; do openstack port set --allowed-address ip-address=192.168.0.10 k8s-master0$i; done

Validasi Port

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
openstack port list
+--------------------------------------+----------------+-------------------+------------------------------------------------------------------------------+--------+
| ID                                   | Name           | MAC Address       | Fixed IP Addresses                                                           | Status |
+--------------------------------------+----------------+-------------------+------------------------------------------------------------------------------+--------+
| dba325cc-e21c-4bcb-8e79-e6e4a87537c0 | k8s-apiserver  | fa:16:3e:bb:bc:b5 | ip_address='192.168.0.10', subnet_id='e099dcba-fa06-45f0-a3e2-37e05ff8dd4e'  | DOWN   |
| 0a0030bb-48d1-4d17-83b0-fec22d12b765 | k8s-master01   | fa:16:3e:58:73:bc | ip_address='192.168.0.11', subnet_id='e099dcba-fa06-45f0-a3e2-37e05ff8dd4e'  | DOWN   |
| 02cff3ca-55e8-490a-b36d-67297d8a200c | k8s-master02   | fa:16:3e:cb:dd:e6 | ip_address='192.168.0.12', subnet_id='e099dcba-fa06-45f0-a3e2-37e05ff8dd4e'  | DOWN   |
| e0083309-1c28-4f99-ad09-e121c0f75e17 | k8s-master03   | fa:16:3e:fb:33:d8 | ip_address='192.168.0.13', subnet_id='e099dcba-fa06-45f0-a3e2-37e05ff8dd4e'  | DOWN   |
| 854a3e63-997e-4efd-b6a0-2038a530cde0 | k8s-worker01   | fa:16:3e:c7:32:20 | ip_address='192.168.0.21', subnet_id='e099dcba-fa06-45f0-a3e2-37e05ff8dd4e'  | DOWN   |
| bd64c6b4-7686-4782-bfc8-68c2b3ac6f2e | k8s-worker02   | fa:16:3e:6b:df:ab | ip_address='192.168.0.22', subnet_id='e099dcba-fa06-45f0-a3e2-37e05ff8dd4e'  | DOWN   |
| 56b39ed9-4ba5-4093-9f41-ec8ef35b6296 | k8s-worker03   | fa:16:3e:bd:fe:53 | ip_address='192.168.0.23', subnet_id='e099dcba-fa06-45f0-a3e2-37e05ff8dd4e'  | DOWN   |
| ad269256-5f6b-4da8-8c1c-03fd45900b30 | k8s-lb-ingress | fa:16:3e:ea:5b:e6 | ip_address='192.168.0.100', subnet_id='e099dcba-fa06-45f0-a3e2-37e05ff8dd4e' | DOWN   |
+--------------------------------------+----------------+-------------------+------------------------------------------------------------------------------+--------+
1
2
3
4
5
6
7
8
for i in {1..3}; do echo k8s-master0$i; openstack port show k8s-master0$i | grep allowed_address_pairs; done

k8s-master01
| allowed_address_pairs   | ip_address='192.168.0.10', mac_address='fa:16:3e:58:73:bc'
k8s-master02
| allowed_address_pairs   | ip_address='192.168.0.10', mac_address='fa:16:3e:cb:dd:e6'
k8s-master03
| allowed_address_pairs   | ip_address='192.168.0.10', mac_address='fa:16:3e:fb:33:d8'

Membuat Persistent Volume Instance

1
2
3
4
for i in {1..3}; do openstack volume create --size 20 --image ubuntu-focal-20.04 k8s-master0$i; done
for i in {1..3}; do openstack volume create --size 20 --image ubuntu-focal-20.04 k8s-worker0$i; done
openstack volume create --size 10 --image ubuntu-focal-20.04 k8s-lb-ingress
watch openstack volume list --long
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
openstack volume list
+--------------------------------------+----------------+-----------+------+-------------+
| ID                                   | Name           | Status    | Size | Attached to |
+--------------------------------------+----------------+-----------+------+-------------+
| cdbbc700-d9ae-4a0e-9522-c1904e7863c2 | k8s-worker01   | available |   20 |             |
| 172628db-f139-44ef-9e72-dfe511607608 | k8s-worker02   | available |   20 |             |
| 309f3e53-f76d-4ab2-9104-248847f8266f | k8s-worker03   | available |   20 |             |
| 5f7f395d-e53a-4603-9de9-cf20b27036a7 | k8s-master01   | available |   20 |             |
| f748b31a-e09f-4514-a9cd-7ced49f80f21 | k8s-master02   | available |   20 |             |
| 9299bd6c-1ee2-44c5-8ba8-c6e7310b3540 | k8s-master03   | available |   20 |             |
| 543d9739-5a14-4e6c-b689-ea899be21536 | k8s-lb-ingress | available |   10 |             |
+--------------------------------------+----------------+-----------+------+-------------+

Membuat Security Group

1
2
3
openstack security group create secg-kubernetes --description 'Kubernetes environment'
openstack security group rule create --protocol icmp secg-kubernetes
for i in {22,80,443,6443}; do openstack security group rule create --protocol tcp --ingress --dst-port $i secg-kubernetes; done

Membuat Flavor

1
openstack flavor create --vcpus 2 --ram 2048 --disk 15 --public c2-standard-01

Membuat Instance

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
for i in {1..3}; do openstack server create --flavor c2-standard-01 \
  --key-name controllerkey \
  --security-group secg-kubernetes \
  --volume k8s-master0$i \
  --port k8s-master0$i --wait \
  k8s-master0$i; sleep 60s; done

for i in {1..3}; do openstack server create --flavor c2-standard-01 \
  --key-name controllerkey \
  --security-group secg-kubernetes \
  --volume k8s-worker0$i \
  --port k8s-worker0$i --wait \
  k8s-worker0$i; sleep 60s; done

openstack server create --flavor c1-standard-01 \
  --key-name controllerkey \
  --security-group secg-kubernetes \
  --volume k8s-lb-ingress \
  --port k8s-lb-ingress --wait \
  k8s-lb-ingress
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
openstack server list
+--------------------------------------+--------------+--------+------------------------+-------+----------------+
| ID                                   | Name         | Status | Networks               | Image | Flavor         |
+--------------------------------------+--------------+--------+------------------------+-------+----------------+
| 07cd4701-b365-4f6f-a4e5-eb0feb0f2021 | k8s-worker03 | ACTIVE | int-net01=192.168.0.23 |       | c2-standard-01 |
| 3a92b4cc-c149-449b-a9a1-1aa4b578fc37 | k8s-worker02 | ACTIVE | int-net01=192.168.0.22 |       | c2-standard-01 |
| c322b7e6-bb05-4f11-ab13-38db5a5ca11c | k8s-worker01 | ACTIVE | int-net01=192.168.0.21 |       | c2-standard-01 |
| f0acc658-dca1-4010-9794-893adcfb7549 | k8s-master03 | ACTIVE | int-net01=192.168.0.13 |       | c2-standard-01 |
| 04b5f74f-7148-4030-81a1-ea0b8dd80e22 | k8s-master02 | ACTIVE | int-net01=192.168.0.12 |       | c2-standard-01 |
| dc23ff03-e092-4e56-8a91-146e67bd28af | k8s-master01 | ACTIVE | int-net01=192.168.0.11 |       | c2-standard-01 |
+--------------------------------------+--------------+--------+------------------------+-------+----------------+

Membuat Floating IP

1
2
for i in {1..3}; do openstack floating ip create --floating-ip-address 172.16.0.2$i ext-net01; done
openstack floating ip create --floating-ip-address 172.16.0.100 ext-net01
1
2
3
4
5
6
7
8
9
openstack floating ip list
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+
| ID                                   | Floating IP Address | Fixed IP Address | Port                                 | Floating Network                     | Project                          |
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+
| 2d7cafca-4f64-45c0-b2e3-ff98133e9211 | 172.16.0.21         | 192.168.0.21     | 2a346f6b-c037-4e1b-8a0c-900ba6b90f0a | 1d6db61c-2736-423e-b05d-01f380fb2daa | 75ee0b5ff3f14e35909d6ee880732a19 |
| 5004efff-99de-4ce4-8f0e-2ae9ae632f03 | 172.16.0.100        | 192.168.0.100    | 961b2295-e820-40e3-ba5d-9465707e5409 | 1d6db61c-2736-423e-b05d-01f380fb2daa | 75ee0b5ff3f14e35909d6ee880732a19 |
| 761e5d74-6c2c-411a-90a5-987246ca4d92 | 172.16.0.22         | 192.168.0.22     | 015ed9d0-3da3-413d-90e4-8489d6b46b22 | 1d6db61c-2736-423e-b05d-01f380fb2daa | 75ee0b5ff3f14e35909d6ee880732a19 |
| ccb009d7-1221-4244-8e00-4b9fd0fb5477 | 172.16.0.23         | 192.168.0.23     | bbad00e2-d750-4464-9e79-426aa3b1da2d | 1d6db61c-2736-423e-b05d-01f380fb2daa | 75ee0b5ff3f14e35909d6ee880732a19 |
+--------------------------------------+---------------------+------------------+--------------------------------------+--------------------------------------+----------------------------------+

Memasang Floating IP Pada Worker Node

1
2
for i in {1..3}; do openstack server add floating ip k8s-worker0$i 172.16.0.2$i; done
openstack server add floating ip k8s-lb-ingress 172.16.0.100
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
openstack server list -c Name -c Networks
+----------------+---------------------------------------+
| Name           | Networks                              |
+----------------+---------------------------------------+
| k8s-worker03   | int-net01=192.168.0.23, 172.16.0.23   |
| k8s-worker02   | int-net01=192.168.0.22, 172.16.0.22   |
| k8s-worker01   | int-net01=192.168.0.21, 172.16.0.21   |
| k8s-master03   | int-net01=192.168.0.13                |
| k8s-master02   | int-net01=192.168.0.12                |
| k8s-master01   | int-net01=192.168.0.11                |
| k8s-lb-ingress | int-net01=192.168.0.100, 172.16.0.100 |
+----------------+---------------------------------------+

Tahap selanjutnya dalam membangun Kubernetes Cluster High Availability.