Kubernetes Resources Explained – CloudSavvy IT

Avatar Gadam | 2021.04.05. 15 Views 0 Likes 0 Ratings

15 Views 0 Ratings Rate it

A Kubernetes logót ábrázoló grafika

Kubernetesről nem tudni, hogy megközelíthető-e. A Kubernetes elsajátításához meg kell értenie, hogy absztrakciói hogyan illeszkednek egymáshoz. A Kubernetes tucatnyi erőforrástípussal rendelkezik, amelyeket felhasználhat az alkalmazásokban. Nézzük meg a leggyakrabban használt erőforrások szerepét.

Hüvelyek

Ha egy Kubernetes-kifejezést kell megtanulni, akkor ez a „Pod”. Hüvelyek a Kubernetes által használt alapvető számítási egység. A futó konténereidet fogadják. Ezért gyakori, hogy a hüvelyeket egy Docker-tároló példányához hasonlítják.

Ez a hasonlóság nem pontos, mivel egyetlen Kubernetes podban több tároló is futhat. A hüvelyeket jobban tekinthetjük a megosztott végrehajtási kontextusú tárolók „csoportjának”. A Pod környezete elszigetelt; a benne lévő egyes konténerkörnyezetek tovább vannak elszigetelve.

A csomagban lévő konténerek mindig ugyanarra a Kubernetes csomópontra vannak ütemezve. Ugyanazon a fizikai gépen fognak futni, és megoszthatják a tárhelyet és a hálózati erőforrásokat.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-image:latest

A fenti jegyzék manuálisan létrehozna egyetlen Pod-ot. A Pod egy konténert futtatna a my-image:latest kép.

Általában nem közvetlenül a Kubernetesben kezeli a Podokat. A hüvelyeket más erőforrások, például egy Telepítés (lásd alább) hozzáadásának eredményeként hozzák létre. A hüvelyeit mulandó egységként kell kezelnie. A Kubernetes rendelkezik a Pod irányításával, és átütemezheti egy másik csomópontra, ha a fürt erőforrásai korlátozódnak.

Replika szettek

Replika szettek (általában így írják: ReplicaSets, szóköz nélkül) egy másik absztrakciós réteg a Pods tetején. A ReplicaSets garantálja, hogy adott időpontban meghatározott számú azonos Pod fut majd.

A ReplicaSets használatakor minimális számú Pod-ot kell végrehajtania alkalmazásához. Megadja az egyidejűleg futtatandó podok számát. Ezután a Kubernetes elég Pod-t ütemez, hogy megfeleljen az Ön által meghatározott minimális rendelkezésre állásnak. Ne feledje, hogy az egyes Pod több futó tárolóból állhat, az alkalmazás konfigurációjától függően.

Amikor egy Pod-ot egy ReplicaSet készít, a Kubernetes frissíti a Pod-okat metadata.ownerReferences mező a ReplicaSet azonosságának megadásához. Ezután a ReplicaSet létrehozhatja az általa ellenőrzött Podokat, így tudja, hogy a minimális rendelkezésre állási cél teljesült-e.

A ReplicaSets rendelkezik a replicas mező, amely meghatározza a futtatni kívánt hüvelyek számát. Változtassa meg ezt az értéket, és alkalmazza a frissített ReplicaSet jegyzéket a fürtjére, hogy a Kubernetes újrarendezhesse a Podjait az új replikaszámnak megfelelően.

Ez a részlet kiemeli a ReplicaSets fontos szempontját: a Kubernetes csak garantálja a futó Podok számát végül is egyezik a megadott replikaszámmal. Ha megváltoztatja a replikaszámot, lesz egy olyan időszak, amikor több vagy kevesebb Pod fut, mint amennyit a jegyzéke jelez. A ReplicaSet létrehozza vagy törli a hüvelyeket, amíg a kívánt szám meg nem működik.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: my-replicaset
  labels:
    my-label: my-value
spec:
  replicas: 3
  selector:
    matchLabels:
      my-label: my-value
  template:
    metadata:
      labels:
        my-label: my-value
    spec:
      containers:
        - name: app-container
          image: my-image:latest

A fenti jegyzék három másolatát futtatná a my-image:latest tároló kép egy ReplicaSet használatával. Megváltoztathatja a replikák számát a jegyzékben szereplő érték frissítésével és újbóli alkalmazásával (kubectl apply -f my-manifest.yml).

Telepítések

Míg a ReplicaSets megkönnyíti a Pods használatát, azokat is ritkán használják közvetlenül. Telepítések egy absztrakció a ReplicaSets tetején. Telepítést általában akkor hoz létre, amikor új munkaterhelést ad hozzá a fürthöz.

A telepítési erőforrások lehetővé teszik a Pods és a ReplicaSets deklaratív frissítését. Lehetővé teszik a ReplicaSets gördülő frissítéseinek elvégzését, ahol a Pod-okat minden szolgáltatás leállás nélkül ütemezik. A Pods és a ReplicaSets külön-külön cserélődik, lehetővé téve a régi és az új verziók rövid együttélését.

A telepítések szükségessége Kubernetes replikákra vonatkozó történelmi megközelítéséből adódott. A ReplicaSets kifejlődött Replikációs vezérlők. A replikációs vezérlők a ReplicaSetshez hasonló funkciókat kínáltak, de beépített méretezési támogatással rendelkeznek.

A replikációvezérlők azonban nem ajánlottak deklaratív méretezést. Manuálisan kellett használnia kubectl rolling-update hogy a replikákat leállás nélkül méretezzék. Ez ellentmondott más Kubernetes-erőforrások deklaratív, manifeszt alapú megközelítésének.

A ReplicaSets-hez képest a Telepítések elsődleges előnye, hogy támogatják a folyamatos frissítéseket. A replikák számának megváltoztatása a ReplicaSet készletben nem garantálja, hogy a Pod-k száma a megadott állapotban maradjon a bevezetés során. A központi telepítéssel biztos lehet abban, hogy az alkalmazás folytatja a forgalom kezelését, még akkor is, ha a telepítés még nem fejeződött be.

Ma Kubernetes azt tanácsolja, hogy a Deployments használatával jelezze a munkaterhelést. Telepítései automatikusan lefutnak és méretezik a ReplicaSets készletet; A ReplicaSets viszont kezeli a hüvelyeket. A telepítés gördülő frissítését a replicas mező a manifesztumában. Ezután a Kubernetes biztosítja, hogy az alkalmazás elérhető maradjon a változás során, lehetővé téve az új és a régi Podok ideiglenes együttélését.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
  labels:
    my-label: my-value
spec:
  replicas: 3
  selector:
    matchLabels:
      my-label: my-value
  template:
    metadata:
      labels:
        my-label: my-value
    spec:
      containers:
        - name: app-container
          image: my-image:latest

A fenti jegyzék létrehoz egy telepítést, amely három replikából áll, amelyek mindegyike fut a my-image:latest konténer kép. A replicas érték az alapul szolgáló ReplicaSets és Pods frissülő frissítését indítaná el.

Más típusú források

A három típusú erőforrás, amelyet megvizsgáltunk, a leggyakoribb objektumok, amelyekkel találkozhat, amikor a Kubernetesszel dolgozik. Ezeket használják az alkalmazás munkaterhelésének konfigurálására és a tárolók kezelésére.

Más típusú erőforrást kell használnia, mivel többet dolgozik a Kubernetes szolgáltatással. ConfigMaps és Titkok lehetővé teszi a konfiguráció beillesztését a Pod-ba, lehetővé téve számukra a külső értékek elérését. Kötetek és Állandó kötetek a Pods számára megosztott írható fájlrendszert biztosít, amely az adatok tárolására használható, a Pod kilépéskor elveszett alapértelmezett elmúlékony tárhely helyett.

További erőforráskészlet segít kezelni a munkaterhelés hálózati beállításait. Szolgáltatások lehetővé teszi, hogy a Pods készletét egyetlen hálózati szolgáltatásként, egy IP-címmel tegye ki. Behatolások lehetővé teszi, hogy külsőleg tegye ki a szolgáltatásokat. Olyan attribútumok alapján irányítják a forgalmat a fürtjébe egy célszolgáltatásba, mint a gazdagépnév, a port és az URL elérési útja.

Végül vannak metaforrások, amelyek leírják a fürtöt. A névtereket az egyes munkaterhelések elkülönítésére használják, megakadályozva a névütközéseket. Általában minden önálló munkaterheléshez új névteret kell létrehoznia. A csomópontok egyfajta erőforrás, amely a Pod-okat futtató fizikai gépeket reprezentálja. Minden csomópont általában több Pod-t fog fogadni. A Kubernetes kidolgozza a munkaterhelések ütemezését az egyes csomópontok és a kényszeríti.

Futtatással megtekintheti a fürt teljes erőforráslistáját kubectl api-resources. A beépített erőforrások mellett a munkaterhelések hozzáadhatják a saját egyéni erőforrás-definícióikat (CRD), amelyek lehetővé teszik új típusú objektumok létrehozását. A Kubernetes automatikusan biztosítja az API-végpontokat az egyéni erőforrás-meghatározásokhoz.

Következtetés

A Kubernetes tanulása azt jelenti, hogy megismerkedünk az új absztrakciókkal és terminológiákkal. Bár ez széles API felületet eredményez, minden Kubernetes objektumnak viszonylag szűk a célja.

Gyakran képes lesz betartani a magas szintű absztrakciókat, például a Telepítéseket. Nem kell az alapvető erőforrástípusokat, például a Podokat mikrokezelnie, kivéve, ha összetett követelményei vannak, amelyeket egyedül a Telepítések és a ReplicaSets nem tud megoldani.


Forrás link


15 Views 0 Ratings Rate it