• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ALMADDocker a kontejnery
    RUDOLF
    RUDOLF --- ---
    ADM: je to nějaká AWS versus K8s čudnost.. teď mi ta nette appka běží v pohodě, ale když se snažím do stejnýho namespace narvat nginx, AWS healthcheck selhávat..

    jen podotku že z AWS access logu nedostaneš error co z dostane backed služby - takže se to debuguje pekelně..

    imho se to z nějakýho důvodu ztrácí někde v Kubernetes, protože Host TCP SYNC dostane, ale už nikdy nedoputuje do kontejneru..
    ADM
    ADM --- ---
    RUDOLF: pokud jenom prohodis image, tak rozdil musi byt v tom nette, co logy toho nette, jak loguji loadbalancer? (mimochodem nette mluvi http, to neni nejaky fastcgi?)
    RUDOLF
    RUDOLF --- ---
    ADM: jj, základ chápeš správně. Použuji komplet stejné definice, když v deploymentu jedné dám image nginx, vše fachá jak má, když v ní ale dám image nette aplikace - tak to se to přestane chovat podle očekávání - tj. Load Balancer přestaně vnímat službu na daném portu jako zdravou, ačkoliv, když obejdu load balancer - služba vrací 200 ať je image nette nebo nginx..

    komp je stroj, který má otevřenou díru na k8s node - takže si zkontroluji, jestli se na portu, kam Service exportuje službu, funguje služba korektně - ale přistupuji přes veřejnou IP na daný port.

    Z vnitrní sítě znamená, je instance co běží ve stejným regionu jako k8s node - všechny dotazy směřuji přes privání IP. Tady ale dojde k tomu, že v obou případech k8s node zachytí sync z instance, ale v případě nette image už to nedoputuje do kontejneru. Pak jsem večer zjistil, že už ani, když ten image vrátím zpátky na nginx. Přičemž ta služba z kompu a přes veřejnou IP stále vrací 200 OK.

    Ty služby jsou celou dobu na stejným portu např. 36867, měním je pomocí kubectl appy -f neco.yaml, kde v yaml nahrazuji jen řádek s image..

    Load Balancer Classic - je AWS legacy LB, kubernetes/aws.go pro service typu LoadBalancer, vytváří právě tenhe typ Load Balanceru.. Je možné použít ještě novější Network Load Balancer (umí SMTP apod), ale radši bych použil Aplikační Load Balancer - jenže ještě není napsanej - jsou nějaké alternativy, ale musám to prozkoumat.
    ADM
    ADM --- ---
    RUDOLF: takze jestli to chapu spravne, tak se klient nedostane na sluzbu nette, ale dostane se na sluzbu (ve stejny docker overlay network, nebo kubernetes project), ktera dela LB pro stejnou sluzbu? to moc nedava smysl, nevim co je LB-classic (v openshiftu je default haproxy, ktery rikaji openshift router), ale to by vypadalo ze mas pravidlo jen pro ten vlastni LB nginx, ale uz ne pro tu nette sluzbu (co je u tebe pripojeni z kompu?). nerozumim tomu "z pohledu vnitrni site' ze nepreda kontejneru s nette, nemas to nakonec v ruznych sitich, kubernetes projektech?
    RUDOLF
    RUDOLF --- ---
    hele, pozoruji teď s k8s na AWS s LB-Classic takovou frustrující situaci:-)

    mám v jednom soubor definovaé dva deploymenty a dvě služby. Jedna z nich vytváří LB nad web deploymentem.

    Pokud použji image nginx - tak to fachá a LB považuje službu za zdravou..
    Pokud použiji náš image s prezentací v nette, tak LB nikdy nepovažuje instanci za zdravou..

    Vtipný je, že pokud se připojím na port kde ta služba běží na kubernetes nodu (a kde ji i healthchecku load balancer) tak vrací 200 v obou případech.

    Nahodil jsem instanci a zjištuji, jak se to chová, z pohledu vnitnřní sítě..
    tcpdump na k8s workeru vidí sync z interní instance ale nepředá to kontejneru s nette.
    pokud se připojím z kompu tak k8s worker sync kontejneru předá a on vrátí obsah.

    teď jsem zkusil znovu vrátit image nginx, ale probém zůstává stejne.. jako pořeším to přes LB>ingress, snad to bude leší, ale je to kapku frustrující zkušenst.. nenapadá někho něco?
    RUDOLF
    RUDOLF --- ---
    ADM: kdybys to nechtěl nativně před docker, používám logspout. Posílí stdout/err z kontejnerů. Ale na mým swarm se dost často restartuje a navíc byli trable, že pokud byl corrupted docker logs, zahltil docker engine. Jde tam filtrovat, který kontejnery chceš posílat podle env. https://github.com/gliderlabs/logspout -- takže se asi radši podívám na ten filebeat:-)
    KING
    KING --- ---
    ADM: s dockerem jsem resil logovani jen pres bud filebeat a nebo pres ten jejich docker logging driver pres logstash do ES v Gelf formatu (je mozny samozrejme psat i na disk z logstashe)

    Kdyz jsem to resil pres filebeat tak, na zadost klienta, jsme vse napred presunuli na centralni server opet pres docker logging driver a syslog - https://docs.docker.com/config/containers/logging/syslog/ - na centralnim serveru pak staci mit syslog server
    ADM
    ADM --- ---
    INDIAN: ja do ES nic posilat nechci, ja si vystacim pokud mozno se starym dobrym syslog serverem. v openshiftu je jako hotovy logovaci reseni EFK vicemene dany (a je to teda pekny shit), na nejaky vlastni bastleni to neni
    INDIAN
    INDIAN --- ---
    ADM: proc ne filebeat teda? kdyz to posilas do ES ...
    ADM
    ADM --- ---
    RUDLF: s dockerem na centosu mam taky dobrou zkusenost, je tam dobre out-of-the-box oselinuxovany a nakonfigurovany, nicmene pouziji debian, kvuli aktualni verzi dockeru (a compose). zatim mi v dockeru v porovnani s openshift/kubernetes chybi par veci, nektery mrzi hodne, az to budu mit hotovy tak to shrnu a podelim se.

    jeste bych se zeptal, jestli nemate nekdo vyreseny logovani, idealne bych vystupy containeru rad dostal na syslog server. v openshiftu je docker logging do journald, jako daemonset je na kazdym nodu fluentd, ktery logy collectuje z journald a posila do elasticsearch. predstavoval bych si to podobne ale s posilam na remote syslog server
    RUDOLF
    RUDOLF --- ---
    Rozjíždím teď kubernetes a mám dotaz na Helm versus kubectl apply -f.

    Do jednohu YAMLu pro kubectl je možný definovat všechny K8s objekty (deployment, loadbalncer apod), takže deployment mi nepřijde nijak komplikovanej. YAML si templatuju už s ansible, takže s Jenkins CD si deployuji služby do různých prostředí. Co jsem si všiml, že nějaký POD byl restartovaný i když imho to nebylo třeba.

    Tj. jediný potencionální benefit Helm by mohl být jemnější aktualizace prostředí. Ale nic konkrétního jsem neviděl. Ale co jsem četl, o Helm se mluví jako o packager manageru. Když jsem jukal na přípravu Helm Chartů, je to prostě templatování. Jasná výhoda je, pokud člověk používá 3rd party charty pro zavedený kontejnery, tak je to možná jednodušší. Ale u nás je to tak akorát consul a pak monitorovací/logovací stack.
    RUDOLF
    RUDOLF --- ---
    ADM: Asi nemám jasnou odpověd.. Ale moje zkušenost.. jako host OS pro docker engine si vyber něco co se ti dobře spravuje, má solidní lifecycle, security aktalizace jsou zajištěný a je stabilní. Za mě by to byl CentOS.

    Ale kde teď roku pracuji se jede Ubuntu. Ubuntu servery jsou poladěný tímhle playbookem - https://github.com/angstwad/docker.ubuntu. Imhto to řeší to trable, který jsem v CentOS neměl na druhou stranu, tehdy jsem docker jel jen okrajově. Ubuntu bylo vybraný, páč ho má většina vývojařů, tak všichni vědí kde co v OS je.

    Pro baremetal servery bych jel tyhle klasický distribuce.

    Pokud se jedná o deploy do VM, např. Docker4AWS používá customizaovený alpine jako hostovací OS. Je odladěný docker týmem, ale má jednu bolístku, že ten jejch iam má sshd v kontejneru, takže nevidím do hosta. Imho to není dobrý. Např. jsem nevěděl, jak změřit zátěž docker engine procesu. Tj. měl jsem přetíženou instanci a netušil jsem odkud vítr vane. Asi to jde vyřešit a možná jsem to i nějak poladil. Ale by design jsem si kontejnerizovaný sshd nelíbí. Plus jako bonus dosud myslím nepublikovali jak ten alpine image vlastně upravujou.

    Tj. v případě VM bych šel cestou něčeho minimalističtějšího co má odladěný docker engine věci by default.

    Jinak Swam je fajn, jediný co je vlastně trabl, že na AWS není managed solution.
    ADM
    ADM --- ---
    MARTEN: ten repozitar samozrejme mam ale docker-compose tam neni, ale nainstaloval jsem ho teda pres pip
    MARTEN
    MARTEN --- ---
    ADM: na debian muzes pouzit docker repository, ktere vetzi 3 podporuje. bezim na tom bez problemu. jen neni v oficialnim debian repo. koukni na webu dockeru na sekci instalace na debian.
    ADM
    ADM --- ---
    zdravim vespolek, dostal jsem za ukol prozkoumat migraci z openshiftu na ciste docker ekosystem (rikal jsem jim uz pred rokem, ze je to blbost, ale nedali si rict), takze sem pravdepodobne budu sem tam hazet nejaky dotaz.
    Pro zacatek by me zajimalo, jakou distribuci pro docker swarm. V openshiftu neni co resit , proste redhat/centos. Bral bych debian ale nema docker-compose s podporou verze 3. Je nejaka vhodnejsi distribuce ktera by stala za doporuceni? Co ten clear linux, provozuje to nekdo?
    MARTEN
    MARTEN --- ---
    OMNISLASH: Tak asi nejjednodussi najit ktery adresar je tak nejvetsi. Muzou to byt stazene image, vytvorene volume, nebo cokoliv dalsiho.
    OMNISLASH
    OMNISLASH --- ---
    MUXX: to je on. nezustala, i tu jsem vypakoval
    MUXX
    MUXX --- ---
    OMNISLASH: to je ten co bezi pres VirtualBox? nezustala ti tam nekde nejaka VM?
    OMNISLASH
    OMNISLASH --- ---
    ta uz je pryc
    TRILOBYTE
    TRILOBYTE --- ---
    OMNISLASH: Nezbyla po nem slozka C:\User\*username*\.docker?
    Kliknutím sem můžete změnit nastavení reklam