kubernetes multi-architecture multi-image

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • redfox314
  • Registratie: December 2004
  • Laatst online: 18-09 22:28
Ik heb thuis een kubernetes cluster draaien mixed architecture amd64 en armv7 (raspberry pies).

Een van de workloads is Home Assistant voor home automation.
de SLA van deze service specifieert dat wife approval factor omgekeerd evenredig is met het kwadraat van de downtime. De pies zijn soms nogal nukkig dus moet er wel eens een pod naar een andere pi gezet worden terwijl ik de pi laat zien wie er baas is. Als er maar één pi tegelijk nukkig is, geen probleem, maar laatst waren all pies tegelijk nukkig. (De stroom was dan ook uitgevallen maar dat is een ander verhaal). Ik wilde dus de essentiele workload op de amd64 node draaien. De meeste workload heeft dezelfde image tag voor amd64 en voor arm7 en docker fixt dat precies voor u. Home assistant niet. HA heeft homeassistant/home-assistant en homeassistant/raspberrypi3-homeassistant.

Is er in een deployment de mogelijkheid om de image te laten varieren naargelang de node waarop de pod gescheduled wordt.

Mijn google fu en de docs van kubernetes https://kubernetes.io/doc...14/#daemonsetspec-v1-apps en https://kubernetes.io/docs/concepts/ maken mij niet veel wijzer.

Beste antwoord (via redfox314 op 05-01-2020 17:48)


  • FRidh
  • Registratie: Januari 2004
  • Laatst online: 08:44
Voor zover ik weet kan dat niet. Je kan wel refereren naar 1 image die voor verschillende architecturen gebouwd is. Zie bijvoorbeeld https://blog.container-so.../multi-arch-docker-images

Research is to see what everybody else has seen, and to think what nobody else has thought - Albert Szent-Györgyi

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • FRidh
  • Registratie: Januari 2004
  • Laatst online: 08:44
Voor zover ik weet kan dat niet. Je kan wel refereren naar 1 image die voor verschillende architecturen gebouwd is. Zie bijvoorbeeld https://blog.container-so.../multi-arch-docker-images

Research is to see what everybody else has seen, and to think what nobody else has thought - Albert Szent-Györgyi


Acties:
  • +1 Henk 'm!

  • redfox314
  • Registratie: December 2004
  • Laatst online: 18-09 22:28
Daar was ik al bang voor.

Jouw referentie heeft me wel het idee gegeven om zelf een manifest te publiceren (in een private repo) dat verwijst naar de twee varianten. Moet ik enkel nog uitvissen naar welke eigenschappen ik kan kijken om de juiste image te kiezen.

Acties:
  • 0 Henk 'm!

  • TheMaster004
  • Registratie: November 2004
  • Laatst online: 28-08 18:58
Je kan NodePools definieren en dan aan de gang met 'node affinity' regels in je deployment definitie.

Je zou dus 2 nodepools kunnen maken:
1 waarin alleen amd64 nodes zitten
1 waarin alleen arm nodes zitten
En dan voor een image met specifieke architectuur de node affinity instellen zodat enkel op de juiste nodepool gedraait wordt.

Als je echt custom dingen wilt doen kan je je eigen controller schrijven, valt reuze mee!

Edit: er is een builtin label voor arch: https://kubernetes.io/doc...aints/#kubernetes-io-arch

[ Voor 75% gewijzigd door TheMaster004 op 05-01-2020 23:32 ]


Acties:
  • 0 Henk 'm!

  • redfox314
  • Registratie: December 2004
  • Laatst online: 18-09 22:28
@TheMaster004 niet echt antwoord op mijn vraag. Het gaat niet over het limiteren van de scheduleability van een pod naargelang de architectuur, dat werkt al lang anders bleef de pod op crashloop backoff hangen als ie op de verkeerde node stond. Al is nodepools wel eleganter dan wat ik nu gebricoleerd heb. Het gaat over het kiezen van de image naargelang de architectuur zodat dat niet nodig is. Kennelijk is de enige manier om dat op docker niveau te regelen in plaats van op k8s niveau.

[ Voor 6% gewijzigd door redfox314 op 05-01-2020 23:41 ]


Acties:
  • 0 Henk 'm!

  • Jay-v
  • Registratie: Januari 2002
  • Niet online

Jay-v

Uhhhh......

redfox314 schreef op zondag 5 januari 2020 @ 00:48:
De meeste workload heeft dezelfde image tag voor amd64 en voor arm7 en docker fixt dat precies voor u. Home assistant niet. HA heeft homeassistant/home-assistant en homeassistant/raspberrypi3-homeassistant.
Dat heet een multi-arch build en dat heeft home assistant inderdaad niet. Wat je zou kunnen doen is middels een cron-job monitoren of de hass service op je Pi 'Healthy' is, zo niet, kan je je service yml aanpassen een nieuwe deployment aftrappen op je amd64 node.

Geen mooie oplossing, maar zou wel moeten werken.

EDIT: 8)7 jaartal verkeerd gelezen, sorry voor de bump haha.

[ Voor 4% gewijzigd door Jay-v op 06-01-2021 09:25 ]

Pagina: 1