Konteneryzacja to dziś bardzo popularny temat; poza produktami, takimi jak Docker Datacenter, Mesosphere, Kubernetes, producenci znani z technologii wirtualizacyjnych również chcą pokazać, że ich produkty są container-ready. Do takich zdecydowanie należy VMware, który jakiś czas zapraszał do wykorzystania produktu vSphere Integrated Containers. Zapraszam dzisiaj do pierwszej części artykułu z serii vSphere Integrated Containers.
Wymagania dla vSphere Integrated Containers
Zgodnie z dokumentem producenta, wspierane platformy to:
- Samodzielna instalacja ESXi 6.0 nie zarządzana przez vCenter Server,
- vCenter Server zarządzający jednym bądź więcej standalone ESXi 6.0,
- vCenter Server zarządzający klastrem serwerów ESXi 6.0.
We wpisie pominę wymagania licencyjne stawiane dla hostów ESXi oraz vCenter Server; współdzielony zasób dyskowy wydaje się bardziej niż naturalny. W referencjach zamieszczona jest pełna dokumentacja.
Środowisko testowe
Środowisko testowe składa się z:
- FreeNAS (imituje współdzielony datastore),
- ESX01 (jednostka obliczeniowa klastra)
- ESX02 (jedostka obliczeniowa klastra)
- vCenter (vCenter zarządzające ESX01 oraz ESX02)
Adresacja komponentów.:
- FreeNAS – 10.0.0.5/16
- ESX01 – 10.0.0.3/16
- ESX02 – 10.0.0.4/16
Serwer FreeNAS serwuje współdzielony datastore dla ESX01 oraz ESX02 o nazwie datastore-02.
Rysunek 1 Infrastruktura testowa.
Instalacja
Proces instalacyjny rozpoczynamy od instalacji modułu vSphere Integrated Containers. W tym celu pobieramy całego ZIP-a zawierającego odpowiednie boostrapy, obrazy maszyn wirtualnych oraz skrypty instalacyjne. Wchodzimy do katalogu z rozpakowanym z zawartością archiwum i zależnie od platformy uruchamiamy skrypt vic-machine.
W poniższym logu podałem następujące argumenty:
- –image-store: współdzielony datastore, w których VCH przetrzymuje obrazy kontenerów,
- –volume-store: współdzielony datastore, w których VCH przetrzymuje wolumeny,
- –user: nazwa użytkownika, którym loguję się do vCenter,
- –target: adres vCenter, na którym przeprowadzam instalację,
- –kv: wyłączenie autoryzacji po TLS.
PS C:\Users\Administrator\Downloads\vic_0.7.0\vic> .\vic-machine-windows.exe create --target 10.0.0.100 --image-store "datastore-02/images" --volume-store "datastore-02/volumes:volumes" --user Administrator@vsphere.local --bridge-network "docker-network" --kv --client-network-ip "10.0.0.101/16"--client-network-gateway "10.0.0.2/16" --dns-server=10.0.0.1 --force --timeout 3600s←[34mINFO←[0m[2016-11-27T03:20:40+01:00] Please enter ESX or vCenter password:←[34mINFO←[0m[2016-11-27T03:20:44+01:00] Generating self-signed certificate/key pair - private key in ./virtual-container-host/key.pem←[33mWARN←[0m[2016-11-27T03:20:45+01:00] Configuring without TLS verify - client authentication disabled←[34mINFO←[0m[2016-11-27T03:20:45+01:00] ### Installing VCH ####←[34mINFO←[0m[2016-11-27T03:20:45+01:00] Validating supplied configuration←[34mINFO←[0m[2016-11-27T03:20:46+01:00] Configuring static IP for additional networks using port group "VM Network"←[34mINFO←[0m[2016-11-27T03:20:46+01:00] vDS configuration OK on "docker-network"←[34mINFO←[0m[2016-11-27T03:20:46+01:00] Firewall status: ENABLED on "/VIC-POC/host/VIC-POC-CLUSTER/esx02.localdomain"←[34mINFO←[0m[2016-11-27T03:20:46+01:00] Firewall status: ENABLED on "/VIC-POC/host/VIC-POC-CLUSTER/esx01.localdomain"←[34mINFO←[0m[2016-11-27T03:20:46+01:00] Firewall configuration OK on hosts:←[34mINFO←[0m[2016-11-27T03:20:46+01:00] "/VIC-POC/host/VIC-POC-CLUSTER/esx02.localdomain"←[34mINFO←[0m[2016-11-27T03:20:46+01:00] "/VIC-POC/host/VIC-POC-CLUSTER/esx01.localdomain"←[34mINFO←[0m[2016-11-27T03:20:47+01:00] License check OK on hosts:←[34mINFO←[0m[2016-11-27T03:20:47+01:00] "/VIC-POC/host/VIC-POC-CLUSTER/esx02.localdomain"←[34mINFO←[0m[2016-11-27T03:20:47+01:00] "/VIC-POC/host/VIC-POC-CLUSTER/esx01.localdomain"←[34mINFO←[0m[2016-11-27T03:20:47+01:00] DRS check OK on:←[34mINFO←[0m[2016-11-27T03:20:47+01:00] "/VIC-POC/host/VIC-POC-CLUSTER/Resources"←[34mINFO←[0m[2016-11-27T03:20:47+01:00]←[34mINFO←[0m[2016-11-27T03:20:48+01:00] Creating virtual app "virtual-container-host"←[34mINFO←[0m[2016-11-27T03:20:48+01:00] Creating directory [datastore-02] volumes←[34mINFO←[0m[2016-11-27T03:20:48+01:00] Datastore path is [datastore-02] volumes←[34mINFO←[0m[2016-11-27T03:20:48+01:00] Creating appliance on target←[34mINFO←[0m[2016-11-27T03:20:48+01:00] Network role "external" is sharing NIC with "management"←[34mINFO←[0m[2016-11-27T03:20:48+01:00] Network role "client" is sharing NIC with "management"←[34mINFO←[0m[2016-11-27T03:20:55+01:00] Uploading images for container←[34mINFO←[0m[2016-11-27T03:20:55+01:00] "bootstrap.iso"←[34mINFO←[0m[2016-11-27T03:20:55+01:00] "appliance.iso"←[34mINFO←[0m[2016-11-27T03:21:28+01:00] Registering VCH as a vSphere extension←[34mINFO←[0m[2016-11-27T03:21:56+01:00] Waiting for IP information←[34mINFO←[0m[2016-11-27T03:23:07+01:00] Waiting for major appliance components to launch←[34mINFO←[0m[2016-11-27T03:25:32+01:00] Initialization of appliance successful←[34mINFO←[0m[2016-11-27T03:25:32+01:00]←[34mINFO←[0m[2016-11-27T03:25:32+01:00] vic-admin portal:←[34mINFO←[0m[2016-11-27T03:25:32+01:00] https://10.0.0.101:2378←[34mINFO←[0m[2016-11-27T03:25:32+01:00]←[34mINFO←[0m[2016-11-27T03:25:32+01:00] Published ports can be reached at:←[34mINFO←[0m[2016-11-27T03:25:32+01:00] 10.0.0.101←[34mINFO←[0m[2016-11-27T03:25:32+01:00]←[34mINFO←[0m[2016-11-27T03:25:32+01:00] Docker environment variables:←[34mINFO←[0m[2016-11-27T03:25:32+01:00] DOCKER_HOST=10.0.0.101:2376←[34mINFO←[0m[2016-11-27T03:25:32+01:00]←[34mINFO←[0m[2016-11-27T03:25:32+01:00] Environment saved in virtual-container-host/virtual-container-host.env←[34mINFO←[0m[2016-11-27T03:25:32+01:00]←[34mINFO←[0m[2016-11-27T03:25:32+01:00] Connect to docker:←[34mINFO←[0m[2016-11-27T03:25:32+01:00] docker -H 10.0.0.101:2376 --tls info←[34mINFO←[0m[2016-11-27T03:25:32+01:00] Installer completed successfullyPS C:\Users\Administrator\Downloads\vic_0.7.0\vic>
Listing 1 Proces instalacyjny komponentu vSphere Integrated Containers.
Zabawne są początkowe linie listingu. Widzimy, że deweloperzy oszczędzili sobie czasu i na standardowym wyjściu zostawili markery kolorowania w bashu. 😉
Z poziomu vCenter, istotnie, widzimy:
Rysunek 2 Intalacja vSphere Integrated Containers z poziomu vCenter.
Skrypt instalacyjny powołał vApp o nazwie virtual-container-host, stworzył nową maszynę wirtualną (w nomenklaturze VMware jest to vSphere Container Host – VCH) podłączając ją do vApp i nadał jej adres 10.0.0.101/16. Dla dalszych rozważań, włączmy teraz tryb debug. To pozwoli łączyć się zdalnie do maszyny vSphere Integrated Containers za pomocą protokołu SSH.
PS C:\Users\Administrator\Downloads\vic_0.7.0\vic> .\vic-machine-windows debug --target 10.0.0.100 --user Administrator@vsphere.local ←[34mINFO←[0m[2016-11-27T03:29:57+01:00] Please enter ESX or vCenter password: ←[34mINFO←[0m[2016-11-27T03:29:59+01:00] ### Configuring VCH for debug #### ←[34mINFO←[0m[2016-11-27T03:30:01+01:00] ←[34mINFO←[0m[2016-11-27T03:30:01+01:00] VCH ID: VirtualMachine:vm-82 ←[34mINFO←[0m[2016-11-27T03:30:02+01:00] ←[34mINFO←[0m[2016-11-27T03:30:02+01:00] Installer version: v0.7.0-6507-6c4627d ←[34mINFO←[0m[2016-11-27T03:30:02+01:00] VCH version: v0.7.0-6507-6c4627d ←[33mWARN←[0m[2016-11-27T03:30:03+01:00] Unable to identify address acceptable to host certificate ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] SSH to appliance: ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] ssh root@10.0.0.101 ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] vic-admin portal: ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] https://10.0.0.101:2378 ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] Published ports can be reached at: ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] 10.0.0.101 ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] Docker environment variables: ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] DOCKER_HOST=10.0.0.101:2376 ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] Connect to docker: ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] docker -H 10.0.0.101:2376 --tls info ←[34mINFO←[0m[2016-11-27T03:30:03+01:00] Completed successfully PS C:\Users\Administrator\Downloads\vic_0.7.0\vic>
Listing 2 Włączenie trybu debug.
Podłączając się do VCH po protokole SSH, z wykorzystaniem domyślnych poświadczeń, możemy zauważyć:
root@virtual-container-host [ ~ ]# ps PID TTY TIME CMD 331 pts/0 00:00:00 bash 347 pts/0 00:00:00 ps root@virtual-container-host [ ~ ]# root@virtual-container-host [ ~ ]# ps PID TTY TIME CMD 331 pts/0 00:00:00 bash 348 pts/0 00:00:00 ps root@virtual-container-host [ ~ ]# uname -a Linux virtual-container-host 4.4.26-esx #1-photon SMP Mon Oct 24 20:09:22 UTC 2016 x86_64 GNU/Linux root@virtual-container-host [ ~ ]# netstat -pnltu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:6060 0.0.0.0:* LISTEN 197/vic-init tcp 0 0 127.0.0.1:6061 0.0.0.0:* LISTEN 257/vicadmin tcp 0 0 127.0.0.1:6062 0.0.0.0:* LISTEN 252/docker-engine-s tcp 0 0 127.0.0.1:6063 0.0.0.0:* LISTEN 254/port-layer-serv tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 303/sshd tcp 0 0 10.0.0.101:2376 0.0.0.0:* LISTEN 252/docker-engine-s tcp 0 0 127.0.0.1:2377 0.0.0.0:* LISTEN 254/port-layer-serv tcp 0 0 10.0.0.101:2377 0.0.0.0:* LISTEN 254/port-layer-serv tcp 0 0 10.0.0.101:2378 0.0.0.0:* LISTEN 257/vicadmin tcp6 0 0 :::53 :::* LISTEN 254/port-layer-serv tcp6 0 0 :::22 :::* LISTEN 303/sshd udp6 0 0 :::53 :::* 254/port-layer-serv root@virtual-container-host [ ~ ]#
Listing 3 VCH w praktyce.
Jak łatwo dostrzec, jest to okrojona dystrybucja Linuksa (dystrybucja PhotonOS https://github.com/vmware/photon) opracowana przez VMware, dedykowana do pracy ze środowiskami vSphere.
Podłączymy się teraz do VCH klientem Docker.
PS C:\Users\Administrator\Downloads\vic_0.7.0\vic> docker –H 10.0.0.101:2376 --tls info Containers: 0 Images: 0 Storage Driver: vSphere Integrated Containers v0.7.0-6507-6c4627d Backend Engine Execution Driver: vSphere Integrated Containers v0.7.0-6507-6c4627d Backend Engine Operating System: linux-x64 CPUs: 35050 Total Memory: 23.75 GiB Name: virtual-container-host ID: vSphere Integrated Containers PS C:\Users\Administrator\Downloads\vic_0.7.0\vic>
Listing 4 Połączenie Klientem do VCH.
Spróbujmy uruchomić pierwszy kontener pod vSphere Integrated Containers.
PS C:\Users\Administrator\Downloads\vic_0.7.0\vic> docker -H 10.0.0.101:2376 --tls run nginx
Listing 5 Uruchomienie pierwszego kontenera.
Zauważmy teraz, że we wcześniejszej vApp pojawiła się nowa maszyna.
Rysunek 3 Kontener widoczny w vCenter.
Wygląda jak uruchomiony kontener, prawda? 😉
Zapraszam do kolejnych części, w których pojawią się kolejne produkty VMware w zakresie konteneryzacji, to znaczy: rejestr Harbor i orkiestrator Admiral. W ostatniej części opiszę standardowy dzień w pracy Administratora, czyli wpis z serii : Czemu to … nie działa? 😉 Opiszę problemy oraz błędy w vSphere Integrated Containers oraz dlaczego uważam, że produkt jest daleki od nazywania do production-ready, a nawet beta to spore nadużycie.
[…] którzy nie mieli okazji zapoznać się z moim poprzednim wpisem na ten temat zapraszam tutaj. W dalszej części artykułu będę poruszał się po tamtym środowisku […]