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.:

  • FreeNAS10.0.0.5/16
  • ESX01 10.0.0.3/16
  • ESX0210.0.0.4/16

Serwer FreeNAS serwuje współdzielony datastore dla ESX01 oraz ESX02 o nazwie datastore-02.

Untitled Diagram

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:

image001Rysunek 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.image003

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.

About the author

Leave a Reply