A Docker általában a fejlesztő első bevezetését nyújtja a konténerekhez. A Kubernetes egy hangszerelési platform, amely megoldja a gyártásban használt konténerek körüli kihívásokat. A Docker a következőképpen parancsolja meg a térképet a Kubernetes-társaikkal.
Nem használhatja a docker
CLI a Kubernetesben futó tárolókkal való interakcióhoz. A Kubernetes saját parancssori felületet biztosít, kubectl
, hogy segítsen a fürt kezelésében. Olvassa el útmutatónkat kezdeni kubectl
ha nem ismeri az eszközt.
Egyik sem docker
parancsok neve ugyanaz kubectl
. A Kubernetes a maga módján tárja fel a funkcionalitást. Maguk a munkaterhelések alapvetően különböznek – a Dockert úgy tervezték, hogy egyszerre egyetlen konténerrel dolgozzon, míg a Kubernetes lehetővé teszi több replika hangszerelését.
Az első értékelendő pont a terminológia elmozdulása. A Docker „konténerekre” hivatkozik, míg a Kubernetes „hüvelyeket” használ. Előfordulhat, hogy egy pod egy tárolót vagy több másolatot futtat egyetlen egységként. Ezt a részletet eltekintve, amikor a „konténert” látja a Dockerben, egy Kubernetes „hüvelyre” kell gondolnia. A kifejezéseket a cikk fennmaradó részében felcserélhető módon fogják használni.
A konténerek részleteinek megismerése
A Dockerben te használod docker ps -a
hogy megnézze a gép összes edényét.
A legközelebbi Kubernetes megfelelője kubectl get pods
.
A két parancs kimenete egészen más. A Docker további információkat mutat a tároló futó terheléséről.
A Kubernetes megadja a kép és a parancs részleteit a describe pod
parancs. Át kell adnia a hüvely nevét. Ez sokkal több részletes információt ad, egy táblázat helyett egy listát használva.
Parancsok végrehajtása konténerekben
A Docker lehetővé teszi a parancs futtatását egy futó tárolóban a docker exec
.
A Kubernetes-megfelelőt is hívják exec
. Használja a Kubernetes pod nevét a Docker tároló neve helyett. A parancs kissé eltérően van megadva – a pod nevétől el kell választani a-val --
sorrend.
Használhatja a -it
zászlók interaktív hozzáférés megszerzéséhez ugyanúgy, mint a Dockerhez. Ez a gyorsírás --stdin --tty
és akkor kell használni, amikor héjat akar indítani egy hüvelyen belül. Adja meg a héj nevét, például bash
, mint a parancs.
Kubectl támogatja a attach
parancs akkor, ha egy már futó tároló folyamatához szeretne csatolni. Hasonlóan működik, mint docker attach
de át kellene adnia a -it
jelzi, ha interaktív hozzáférésre van szüksége.
Konténernaplók megtekintése
A tároló naplóinak megtekintéséhez a Docker alkalmazásban a docker logs
parancs. A -f
A switch „követni” fogja a naplókat, így folyamatosan továbbítják őket a terminálhoz.
Kubectl’s logs
parancsnak ugyanaz a szintaxisa. Adjon meg egy pod nevet ugyanúgy, ahogy a Docker elfogadja a tároló nevét.
Mind a Docker, mind a Kubernetes a normál kimenetből és a szabványos hibából (stdout
/stderr
) futó konténerek folyamai. A Kubernetes a tároló újraindítását másként kezeli, mint a Docker. Míg a Dockerben egy újraindított tároló hozzáfűzi a naplóit a meglévőkhöz, addig a Kubernetes minden futtatáshoz új naplót hoz létre. A kicsomagolt tároló naplóit a. Hozzáadásával szerezheti be --previous
zászló a logs
parancs.
Konténerek létrehozása
A Docker konténerek a run
parancs. Így indíthat el egy nginx
szerver a Dockerrel:
docker run -d --name nginx --restart=always -p 80:80 nginx
Ez létrehoz egy tárolót a nginx
alapképet, és automatikusan újraindítja. A kiszolgáló az alapértelmezett 80 HTTP porthoz van kötve.
A Kubernetes megköveteli, hogy magasabb szintű absztrakciókra gondoljon, amikor tárolókat ad hozzá a fürtjéhez. A tároló futtatása helyett a bevetés a munkaterhelés ábrázolásához:
kubectl create deployment --image=nginx nginx
Ez létrehoz egy nginx
bevetés. A hüvely automatikusan elindul; a csomagban lesz egy tároló, amely a webszervert futtatja.
Telepítés létrehozása nem fogja a tárolókat egyetlen porthoz sem kötni. Az újonnan létrehozott szerver még nem érhető el. A kikötőknek meg kell lenniük kitett keresztül a szolgáltatás. A hüvelyek átmeneti jellegűek, és több ismételt tartályt tartalmazhatnak. A szolgáltatások meghatározzák a podok logikai gyűjteményét, és lehetővé teszik hálózati erőforrások, például IP-cím és port hozzárendelését.
A nginx
a 80-as porton történő telepítés lehetővé teszi a kiszolgáló elérését:
kubectl expose deployment nginx --port=80 --name nginx-http
Ha megpróbálja elérni a klaszter alapértelmezett IP-címének 80-as portját, most a nginx
szerver.
A Kubectl nem támogat közvetlenül másokat docker run
olyan opciók, mint a kötet létrehozása és a kötések rögzítése. A tartós tárolást igénylő tárolóknak kézzel kell konfigurálniuk a köteteket kubectl
parancsokat vagy a kötet manifeszt.
Konténerek eltávolítása
A dokkoló tartályokat a docker rm
parancs a tároló azonosítójával.
A Kubernetes nem engedi közvetlenül törölni a tárolókat. Ehelyett a bevetés amely létrehozta a hüvelyt. Használja a kubectl delete deployment
parancsot, átadva a telepítés nevét.
Docker lehetővé teszi álljon meg egy tartályt ahelyett, hogy eltávolítaná. Kubernetes megszüntette a művelet támogatását. A telepítés ideiglenes felfüggesztésének ajánlott módja a replika visszaszámlálásának 0-ra történő csökkentése. Ha nincsenek podokok, a munkaterhelés ténylegesen leáll.
kubectl scale --replicas=0 deployment/my-deployment
Ha készen áll a telepítés folytatására, futtassa a scale
parancs ismét. Állítsa az új replikaszámot 1
vagy magasabb. Több másolat használata növelheti a munkaterhelés elérhetőségét.
Következtetés
Nincs közvetlen párhuzam a Docker CLI és kubectl
. A Kubernetes parancsok többségének szintaxisa eltér a Docker társaitól. Mielőtt átállíthatja a Docker-alapú munkafolyamatokat a Kubernetesre, új feltételeket és beállításokat kell megtanulnia.
Sok esetben nincs kubectl
a Docker CLI képesség alternatívája. A Docker funkcionalitása a konténer koncepcióra összpontosít. Kubernetes ezt veszi, és az erőteljesen kibővített erőforrás-ökoszisztéma középpontjába helyezi.
A konténerekkel ritkán foglalkoznak elszigetelten. Ehelyett olyan erőforrásokkal kell dolgoznia, mint a telepítések, a szolgáltatások és a replika készletek. Ez az oka annak, hogy a Kubernetes megtanulása kihívást jelenthet, ha egy Docker-felhasználó szemszögéből közelítjük meg.
Ha ismeri a Docker alapjait, a Kubernetesre való áttérésnek ennek ellenére viszonylag egyszerűnek kell lennie. Az alapvető különbség az, hogy amit Docker konténerként tekint, azt általában Kubernetes-ben összesített „podként” érik el. A hüvelyeket „telepítések” hozzák létre, amelyek a fürt munkaterhelését jelentik. Ha kétségei vannak, olvassa el a kubectl
docs hogy megfelelő egyezést találjon a Docker parancs számára.