• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ALMADDocker a kontejnery
    RAINBOF
    RAINBOF --- ---
    Potřeboval bych nějaký zdroj pro naučení se dockeru.
    Ideálně česky ale anglicky bych to taky dal. je jedno zda text či video. Potřeboval bych něco co se zabývá i základy zdá se že mám mezery na každém kroku a tak bych si to potřeboval nějak povšechně doplnit.

    Prvním větším cílem je spouštění některých programů v konťáku. Jako první bude Wine (mam 64bit systém a nehodlam si ho zašvihat 32bit architekturou a bordelem z Wine)

    Následuje možná trošku naivní myšlenka, kdy bych si některé aplikace spouštěl v kontejnerech protože si je sám modifikuji a některé používají tak staré obsolete knihovny že jsem si je pro své účely vykuchal a spojil s aplikací. Tenhle krok by mi nikdy do upstreamu neprošel protože je to prasokód ale mě to takhle vyhovuje. Pro představu jsou to úpravy Pascal IDE, úpravy ve výstupu starého GDB, prehistorické GCC. Aktuálně to jedu ve virtuálu v debianu woody ale to mi velice nevyhovuje a rád bych to konsolidoval do něčeho udržitelnějšího.
    DRUDRIGER2
    DRUDRIGER2 --- ---
    kdyz si dam docker images
    tak nejvetsi ma 500MB logy jsem kontroloval a nic zvlastniho, nejvetsi log mnel 15MB
    ale je jasne videt ze ty dva adresare ktere jeste k tomu maji oznacene tmp maji kazdy po 20G.
    DRUDRIGER2
    DRUDRIGER2 --- ---
    ja sem to kontroloval, nejsou to logy ale je tam vice jakoby diff a merge containeru..... moc se v tom nevyznam , ale kdyz dam
    sudo du -h /var/lib/docker/ |grep [0-9][0-9]G

    tak mi to vypise tyto

    20G /var/lib/docker/overlay2/cd29fdd129aad96eea8fa26f4b56010c98c36b9a1cd2fbe4e522115644fd1602/diff/tmp
    20G /var/lib/docker/overlay2/cd29fdd129aad96eea8fa26f4b56010c98c36b9a1cd2fbe4e522115644fd1602/diff
    20G /var/lib/docker/overlay2/cd29fdd129aad96eea8fa26f4b56010c98c36b9a1cd2fbe4e522115644fd1602/merged/tmp
    21G /var/lib/docker/overlay2/cd29fdd129aad96eea8fa26f4b56010c98c36b9a1cd2fbe4e522115644fd1602/merged
    41G /var/lib/docker/overlay2/cd29fdd129aad96eea8fa26f4b56010c98c36b9a1cd2fbe4e522115644fd1602
    51G /var/lib/docker/overlay2
    52G /var/lib/docker/


    a ty dva soubory..? nejak sem nenasel jestli to muzu smaznout a nebo ne...?


    RUDOLF
    RUDOLF --- ---
    DRUDRIGER2: Nerostou ti logy? Kdyby hej, buď omez velikost logů parametrem pro danej kontejner nebo je směruj do syslogu a rotuj. Většinou se dívám do /var/lib/docker - tam je divět co ti vlastně tak roste.
    DRUDRIGER2
    DRUDRIGER2 --- ---
    zdravim, potrebuji poradit s nafukovanim dockeru... delam ve vyvojovim prostredi od firmy, je to asi 5 kontaineru dohromady. mysql, nginx a nejake firemne sluzby, cele se to ale strans nafukuje. kdyz to postavim tak to ma tak 1G cele, ale do vecera mi to naroste na 25GB. jako jo delam to ze to jednou za par dny cele zhodim a necham postavit znovu, ale neprisel sem na to co s tim, aby to takhle nebobtnalo. strycek G toho sice narikal hodne ale nic funkcniho sem nenasel. dik za rady
    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?
    Kliknutím sem můžete změnit nastavení reklam