Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk azt ismerteti, hogyan konfigurálhatja az erőforrásokat az Azure-specifikus csomópont-automatikus kiépítés (NAP) beállításaihoz az Azure Kubernetes Service (AKS)-ben a Karpenter használatával.
AKSNodeClass Lehetővé teszi a Karpenter által kiosztott csomópontok különböző aspektusainak testreszabását, például a virtuális gép (VM) lemezképét, az operációs rendszer lemezméretét, a csomópontonkénti podok maximális számát és a kubelet-konfigurációkat.
Fontos
2025. november 30-tól kezdve az Azure Kubernetes Service (AKS) már nem támogatja és nem biztosít biztonsági frissítéseket az Azure Linux 2.0-s verziójához. A linuxos Azure 2.0-s csomópont lemezképe a 202512.06.0 kiadáskor le van fagyasztva.
2026. október 31-től a rendszer eltávolítja a csomópontrendszerképeket, és nem tudja skálázni a csomópontkészleteket. Migráljon támogatott Azure Linux-verzióra azáltal, hogy frissíti a csomópontkészleteket egy támogatott Kubernetes-verzióra vagy migrál az osSku AzureLinux3 verzióra. További információkért lásd a GitHub nyugdíjazási issue-t és az Azure frissítések nyugdíjazási bejelentését. Ha értesülni szeretne a bejelentésekről és frissítésekről, kövesse a AKS kibocsátási megjegyzéseit.
Az AKSNodeClass-erőforrások áttekintése
AKSNodeClass erőforrások lehetővé teszik a NAP Azure-specifikus beállításainak konfigurálását. Minden NodePool erőforrásnak egy AKSNodeClass-ra kell hivatkoznia spec.template.spec.nodeClassRef. Lehet több NodePools, amelyek ugyanarra a AKSNodeClass mutatnak, így megoszthatja a közös Azure-konfigurációkat a különböző csomópontkészletek között.
Fontos
Egy meglévő AKSNodeClass beállítás módosítása nem konfigurálja újra helyben a futó csomópontokat. A NAP az előző konfigurációból kiépített csomópontokat eltértként jelöli meg, és lecseréli őket, a hivatkozott NodePool erőforrások megszakítási szabályozói szerint. A tags mező az egyetlen kivétel, mivel a címkemódosításokat a meglévő Azure-erőforrásokra alkalmazzák a csomópont cseréje nélkül. További információ: Drift és megszakítási költségkeretek. Mielőtt módosítaná az éles számítási feladatok által használt AKSNodeClass elemet, tekintse át ezt az útmutatót.
Képcsalád konfigurációja
A imageFamily mező állítja be az alapértelmezett VM-rendszerképet és a bootstrap-logikát a AKSNodeClass használatával kiépített csomópontok számára. Ha nem ad meg képcsaládot, a rendszer a Kubernetes-verziónak megfelelő alapértelmezett operációsrendszer-verziót használja. A GPU-kat mindkét képcsalád támogatja kompatibilis virtuálisgép-méretekben. Az operációs rendszer Kubernetes-verziónkénti alapértelmezett verziójával kapcsolatos további információkért tekintse meg az AKS os verzió dokumentációját.
Támogatott képcsaládok
-
Ubuntu: Az Ubuntu az AKS-csomópontok alapértelmezett Linux-disztribúciója.- Az operációs rendszer alapértelmezett verziója a Kubernetes-verziótól függően változik. Az Ubuntu 22.04 alapértelmezés szerint a Kubernetes 1.25-1.33-ás verzióihoz készült. Az Ubuntu 24.04 a Kubernetes 1.34-s és újabb verzióinak alapértelmezett verziója.
-
AzureLinux: Azure Linux Microsoft alternatív Linux-disztribúciója az AKS-számítási feladatokhoz. További információ: Azure Linux-dokumentáció. -
AzureContainerLinux: Az Azure Container Linux az AKS 1.34-ben és újabb verzióiban támogatott. Használjon 2. generációs virtuális gépet, és explicit módon engedélyezze mindkét megbízható indítási beállítást, még akkor is, ha egyébként nincs szükség rájuk:- Állítsa be
security.trustedLaunch.vtpm-ttrue-re. - Állítsa be
security.trustedLaunch.secureBoot-ttrue-re. - Ha beállítja a(z)
osDiskSizeGBelemet, legalább 60-as értéket használjon. - Ne egyesítse ezt a képcsaládot olyan beállításokkal, amelyeket a képe nem támogat. A részletekért lásd Azure Container Linux on AKS-t.
- Állítsa be
-
Windows2022: Windows Server 2022 előzetes verzióban érhető el. AMD64 architektúrát igényel, és a Cilium adatsíkkal nem támogatott. A Windows2022 nem támogatja a FIPS-t vagy a Trusted Launchot. Ne konfiguráljalinuxOSConfig, ne engedélyezze az artifact streaminget, és ne állítsa a LocalDNS beállítást a(z)Disabled-tól eltérő módra. -
Windows2025: Windows Server 2025 előzetes verzióban érhető el. AMD64 architektúrát igényel, és nem támogatott a Cilium adatsíkkal. A FIPS szükséges, és akkor is ténylegesen engedélyezve van, hafipsModenincs megadva. Ne konfiguráljalinuxOSConfig, ne engedélyezze az artefaktumstreamelést, és ne állítsa a LocalDNS beállítást másDisabledmódra.
Példa képcsalád konfigurációja
Az alábbi példa a AKSNodeClass konfigurálását mutatja be a AzureLinux képcsalád használatára:
spec:
imageFamily: AzureLinux
Azure Container Linux konfigurációja
Az alábbi példa Azure Container Linuxot használ a szükséges Trusted Launch beállításokkal. Kihagyja osDiskSizeGB , hogy a platform egy támogatott lemezméretet válasszon.
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: azure-container-linux
spec:
imageFamily: AzureContainerLinux
security:
trustedLaunch:
vtpm: true
secureBoot: true
Windows operációs rendszer támogatása (előzetes verzió)
Note
Az AKS előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az AKS előzetes verzióihoz részleges támogatást nyújt az ügyfélszolgálat a tőle telhető legjobb módon. Ezért ezek a funkciók nem éles használatra vannak szánva. További információkért tekintse meg az alábbi támogatási cikkeket:
A NAP támogatja a Windows2022 és Windows2025 képeket.
-
Windows2022: Windows Server 2022 előzetes verzióban érhető el. AMD64 architektúrát igényel, és a Cilium adatsíkkal nem támogatott. A Windows2022 nem támogatja a FIPS-t vagy a Trusted Launch funkciót. Ne konfiguráljalinuxOSConfig, ne engedélyezze az összetevőstreamelést, és ne állítsa a LocalDNS beállítást másDisabledmódra. -
Windows2025: Windows Server 2025 előzetes verzióban érhető el. AMD64 architektúrát igényel, és a Cilium adatsíkkal nem támogatott. A FIPS szükséges, és akkor is ténylegesen engedélyezve van, hafipsModenincs megadva. Ne konfiguráljalinuxOSConfig, ne engedélyezze az artifact streaminget, és ne állítsa a LocalDNS beállítást a(z)Disabled-től eltérő módra.
Windows2022 konfiguráció
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: windows-2025
spec:
imageFamily: Windows2025
Windows2025-konfiguráció
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: windows-2025
spec:
imageFamily: Windows2025
security:
trustedLaunch:
vtpm: true
secureBoot: true
Fontos
A Windows rendszerképcsaládok előzetes funkciónak minősülnek. Használjon egy Windows-csomópontkészletet NodePool, amely kiválasztja a(z) kubernetes.io/os: windows és kubernetes.io/arch: amd64 elemeket, és győződjön meg arról, hogy a számítási feladatok Windows-csomópontokat is kiválasztanak. További információ: Csomópontkészletek konfigurálása a csomópontok automatikus kiépítéséhez az AKS-en.
FIPS-kompatibilis csomópont lemezképének konfigurálása
A szövetségi információfeldolgozási szabványoknak (FIPS) megfelelő csomópontrendszerképeket is engedélyezheti. Az AKS FIPS-sel kapcsolatos további információkért tekintse meg a FIPS dokumentációját.
A fipsMode mező alapértelmezés szerint Letiltva értékre van állítva, és a következő beállításokra állítható be:
- FIPS – FIPS-kompatibilis csomópontrendszerképek kiválasztása
- Letiltva – ne használjon FIPS-kompatibilis csomópontrendszerképeket
Az alábbi példa úgy konfigurálja az "AKSNodeClass"-t, hogy a FIPS-kompatibilis csomópontrendszerképeket a következő beállítással fipsModeFIPSválassza ki:
spec:
fipsMode: FIPS
Példányszintű nyilvános IP-konfiguráció
Nyilvános IPv4-címet rendelhet az egyes NAP-kiosztott csomópontokhoz, ha a true értékét nodePublicIP.enabled értékre állítja. Opcionálisan megadható a ipTags vagy a prefixIDs. Használja az egyiket vagy a másikat, nem mindkettőt.
Példányszintű nyilvános IP-cím használata előtagokkal
Igény szerint adjon meg egy IPv4 nyilvános IP-előtagot a prefixIDs használatával. Az előtagnak ugyanabban a régióban kell lennie, mint a fürtnek. Zonális előtag esetén korlátozza a megfelelő NodePool elemet ugyanarra a rendelkezésre állási zónára. Nem adhatja meg együtt a(z) ipTags és prefixIDs elemet – csak az egyiket használja.
A klaszteridentitásnak engedélyre van szüksége a nyilvános IP-előtag használatához, ha meg van adva, valamint a csomópont nyilvános IP-erőforrásainak létrehozásához és kezeléséhez. A teljes beállítási, hálózati biztonsági és ellenőrzési útmutatásért tekintse meg a csomópont nyilvános IP-címeinek használatát ismertető témakört.
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: public-ip-nodes
spec:
nodePublicIP:
enabled: true
# Optional. Specify at most one IPv4 public IP prefix resource ID.
prefixIDs:
- /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/publicIPPrefixes/<prefix-name>
Példányszintű nyilvános IP-cím használata IP-címkékkel és internetes útválasztási preferenciával
Az alábbi példa bemutatja, hogyan használhat példányszintű nyilvános IP-címet IP-címkével:
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: public-ip-nodes
spec:
nodePublicIP:
enabled: true
ipTags:
- ipTagType: RoutingPreference
tag: Internet
# Optional. Specify at most one IPv4 public IP prefix resource ID.
prefixIDs:
- /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/publicIPPrefixes/<prefix-name>
Artifaktum streamelése
Az Artifact Streaming lehetővé teszi tárolólemezképek streamelésére Azure Container Registry (ACR) és Azure Kubernetes Service (AKS) között. Az AKS csak a pod kezdeti indításához szükséges rétegeket húzza le, így kevesebb időt vesz igénybe a számítási feladatok üzembe helyezése.
Prerequisites
- Az Artifact Streaming használatához prémium szintű ACR-t kell integrálnunk az AKS-fürtbe.
- Az ACR-ben engedélyezve kell lennie az Artifact Streamingnek.
Az Artifact Streaming dokumentációjában talál útmutatást az Artifact Streaming ACR-ben való engedélyezéséhez.
Artefaktumok streamelésének engedélyezése a NAP-klaszterekben
Azok a fürtök, amelyekben engedélyezve van a Csomópontok automatikus kiépítése (NAP), engedélyezhetik az összetevőstreamelést az AKSNodeClass CRDspec.artifactStreaming.enabled mezőjének használatával. Állítsa ezt a mezőt erre: true, hogy engedélyezze az artefaktumok streamelését az ehhez az AKSNodeClass CRD-hez társított új vagy meglévő, NAP által felügyelt csomópontok számára.
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: my-node-class
spec:
# Enables artifact streaming; To use this feature container images must also enable artifact streaming on ACR
# Valid values: true, false; defaults to false if not specified
artifactStreaming:
enabled:
true
Note
Ha az összetevő-streamelést az AKS NAP által felügyelt csomópontokon szeretné használni, engedélyeznie kell az összetevő-streamelést Azure Container Registry (ACR) szolgáltatásban is. Ha nem állítja be ezt a beállítást az ACR-ben, a mező alapértelmezés szerint hamis.
Virtuális hálózat (VNet) alhálózatának konfigurációja
A vnetSubnetID mező határozza meg, hogy melyik Azure virtuális hálózat alhálózatot kell használni a csomóponthálózati adapterek kiépítéséhez. Ez a mező nem kötelező. Ha nem ad meg alhálózatot, a NAP a Karpenter telepítése során konfigurált alapértelmezett alhálózatot használja. További információkért lásd a NAP alhálózati konfigurációit.
Példa alhálózat-konfigurációra
Az alhálózat-azonosítónak teljes Azure Resource Manager (ARM) formátumban kell lennie az alábbi példában látható módon:
spec:
vnetSubnetID: "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Network/virtualNetworks/{vnet-name}/subnets/{subnet-name}"
Operációsrendszer-lemez méretkonfigurációja
A osDiskSizeGB mező az operációsrendszer-lemez méretét adja meg gigabájtban. Az alapértelmezett érték 128 GB, a minimális érték pedig 30 GB.
Fontolja meg a nagyobb operációsrendszer-lemezméreteket olyan számítási feladatok esetében, amelyek:
- Jelentős adatok tárolása helyileg.
- További helyet igényel a konténerképekhez.
- Magas lemez I/O-követelményekkel rendelkezik.
Példa operációsrendszer-lemez méretkonfigurációja
spec:
osDiskSizeGB: 256 # 256 GB OS disk
Rövid élettartamú operációsrendszer-lemezkonfiguráció
A NAP automatikusan rövid élettartamú operációsrendszer-lemezeket használ, ha rendelkezésre állnak, és megfelelnek a kért lemezméretnek. A rövid élettartamú operációsrendszer-lemezek jobb teljesítményt és alacsonyabb költségeket biztosítanak a felügyelt lemezekhez képest.
Rövid élettartamú lemezkijelölési feltételek
A rendszer automatikusan kiválasztja a rövid élettartamú lemezeket a következő helyzetekben:
- A virtuálisgép-példány típusa támogatja a rövid élettartamú operációsrendszer-lemezeket.
- Az átmeneti lemez kapacitása nagyobb vagy egyenlő a kért
osDiskSizeGBlemezzel. - A virtuális gép elegendő rövid élettartamú tárolókapacitással rendelkezik.
Ha ezek a feltételek nem teljesülnek, a rendszer visszaesik a felügyelt lemezek használatára.
Rövid élettartamú lemeztípusok és rangsorolás
Azure virtuális gépek különböző típusú rövid élettartamú tárolóval rendelkezhetnek. A rendszer a következő prioritási sorrendet használja:
- NVMe-lemezek (legnagyobb teljesítmény)
- Gyorsítótárlemezek (kiegyensúlyozott teljesítmény)
- Erőforráslemezek (alapteljesítmény)
Példa rövid élettartamú lemezkonfigurációra
A csomópontkészlet követelményeinek használatával biztosíthatja, hogy a csomópontok elegendő rövid élettartamú lemezkapacitással rendelkezzenek, ahogyan az alábbi példában látható:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: ephemeral-disk-pool
spec:
template:
spec:
requirements:
- key: karpenter.azure.com/sku-storage-ephemeralos-maxsize
operator: Gt
values: ["128"] # Require ephemeral disk larger than 128 GB
nodeClassRef:
group: karpenter.azure.com
kind: AKSNodeClass
name: my-node-class
---
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: my-node-class
spec:
osDiskSizeGB: 128 # This will use ephemeral disk if available and large enough
Ez a konfiguráció biztosítja, hogy csak a 128 GB-nál nagyobb, rövid élettartamú lemezeket tartalmazó virtuálisgép-példányok legyenek kiválasztva, biztosítva a megadott operációsrendszer-lemezmérethez tartozó rövid élettartamú lemezhasználatot.
Podok maximális konfigurációja
A maxPods mező megadja a csomóponton ütemezhető podok maximális számát. Ez a beállítás a fürt sűrűségére és a hálózati konfigurációra is hatással van.
A minimális érték maxPods 10, a maximális érték pedig 250.
Alapértelmezett viselkedés a következőhöz: maxPods
Az alapértelmezett viselkedés a maxPods hálózati beépülő modul konfigurációjától függ. Az alábbi táblázat az alapértelmezett értékeket foglalja össze:
| Hálózati beépülő modul konfigurálása | Alapértelmezett érték csomópontonként maxPods |
|---|---|
| Azure CNI standard hálózatkezeléssel (v1 vagy NodeSubnet) | 30 |
| Azure CNI átfedéses hálózatkezeléssel | 250 |
| Nincs (nincs hálózati beépülő modul) | 250 |
| Egyéb konfigurációk | 110 (alapértelmezett Kubernetes) |
Példa a podok maximális konfigurációjának használatára
spec:
maxPods: 50 # Allow up to 50 pods per node
LocalDNS-konfiguráció
A LocalDNS üzembe helyez egy csomópontszintű DNS-proxyt, amely a DNS-lekérdezéseket a számítási feladatokhoz közelebb oldja fel, csökkentve a lekérdezések késését, és javítja a rugalmasságot az átmeneti DNS-fennakadások során. További információkért tekintse meg a LocalDNS dokumentációját. Alapértelmezés szerint a LocalDNS le van tiltva, és a következő beállításokra konfigurálható:
-
Disabled(alapértelmezett) – Letiltja a LocalDNS szolgáltatást. A DNS-lekérdezések helyileg nem oldódnak fel a csomóponton. -
Preferred- Az AKS a Csomópontkészlet Kubernetes-verziója alapján kezeli a LocalDNS-engedélyezést. A konfiguráció mindig érvényesítve van és szerepel benne, de a LocalDNS csak akkor engedélyezett, ha a megfelelő Kubernetes-verziót használja. -
Required- A LocalDNS érvényesítve van a csomópontkészleten, ha minden előfeltétel teljesül. Ha a követelmények nem teljesülnek, az üzembe helyezés meghiúsul.
Példa LocalDNS-konfigurációra
Testre szabhatja a LocalDNS-konfigurációkat, például vnetDNSOverrides és kubeDNSOverrides. A támogatott beépülő modulokról további információt a LocalDNS testreszabása című témakörben talál.
spec:
LocalDNS:
mode: Required
vnetDNSOverrides:
- zone: "."
cacheDuration: "3600s"
forwardDestination: VnetDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: PreferUDP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
- zone: "cluster.local"
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: ForceTCP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
kubeDNSOverrides:
- zone: "."
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: PreferUDP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
- zone: "cluster.local"
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: ForceTCP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
A LocalDNS konfigurációjának frissítése egy meglévő AKSNodeClasson
A localDNS beállítás a többi AKSNodeClass beállításhoz hasonlóan az eltérésészlelésben is részt vesz. Ha módosítja a(z) spec.localDNS elemet egy olyan AKSNodeClass objektumon, amelyre a meglévő csomópontok már hivatkoznak, a NAP a módosítást a standard Drift mechanizmuson keresztül alkalmazza. A NAP nem végzi el a meglévő csomópontok újratelepítését.
A következő viselkedés érvényes a LocalDNS mód vagy felülbírálások módosításakor, például a Disabledmode értékről Required értékre való módosításakor:
-
Új csomópontok: Minden csomópont, amelyet a NAP azután helyez üzembe, miután frissíti a
AKSNodeClass-t, az új LocalDNS-konfigurációt használja. -
Meglévő csomópontok: A NAP a meglévő
NodeClaimobjektumokat eltérőként jelöli, mert a rögzített konfigurációjuk már nem egyezik aAKSNodeClass. A NAP elindít egy cserecsomópontot, amely az új LocalDNS-konfigurációt használja, majd kordon alá helyezi, kiüríti és eltávolítja a sodródott csomópontot. - Nincs újratelepítés: A LocalDNS engedélyezése egy AKS által felügyelt csomópontkészleten a készlet minden csomópontját újratelepíti. A NAP ehelyett a csomópontot cseréli le. Akárhogy is, az érintett csomópontokon lévő podok kiürítésre és újraütemezésre kerülnek, ezért számoljon ugyanekkora munkaterhelési hatással.
Fontos
A PreferredAKSNodeClass vagy mode értékre állítása szintén megváltoztatja a feloldott Disabled konfigurációt, és eltolódást okoz a meglévő csomópontokban. A localDNS szakaszon belüli bármilyen változás, beleértve az kubeDNSOverrides és vnetDNSOverrides értékeket is, csomópontcserét okoz.
A csere indításakor
A drift kiértékelése és cseréje amint alkalmazza a frissített AKSNodeClass-t, azonnal megkezdődik. A csere a szokásos NAP-zavar életciklusát követi, így az ütem és az időzítés azokon a megszakításvezérlőkön múlik, amelyeket a(z) AKSNodeClass elemre hivatkozó NodePool erőforrásokon konfigurál.
Hogyan vezényli a NAP a cserét
A LocalDNS-változás által okozott eltérés betartja a következő táblázatban ismertetett szabványos NAP-megszakítási vezérlőket:
| Vezérlő | A LocalDNS által indukált csere hatása |
|---|---|
Zavarköltségvetések (spec.disruption.budgets) |
A korlát korlátozza, hogy egyszerre hány csomópontot cserél le a NAP. Ha nem határoz meg költségvetéseket, a NAP alapértelmezés szerint egy költségvetést nodes: 10%ad meg, így egyidejűleg a csomópontkészlet csomópontjainak legfeljebb 10 százalékát zavarja meg. |
Költségvetés schedule és duration |
A csere egy karbantartási időszakra korlátozódik. Állítsa a(z) nodes: "0" elemet az ablakon kívülre a csere letiltásához. |
| Pod megszakítási költségvetések (PDB-k) | A csomópont kiürítése során alkalmazza. A NAP a PDB-t megsértő podok kilakoltatása helyett várakozik. |
karpenter.sh/do-not-disrupt széljegyzet |
Kizárja az annotációval ellátott podokat és node-okat az önkéntes megszakításból, beleértve a driftet is. |
terminationGracePeriod |
A kupakok leürítési ideje. Ez a beállítás megkerüli a PDB-ket és a karpenter.sh/do-not-disrupt annotációt, amikor az időkorlát lejár. |
A csere sem teljesen soros, sem teljesen párhuzamos. A NAP kiépít egy helyettesítő kapacitást, mielőtt eltávolít egy eltérő állapotú csomópontot, de több olyan csomópontot is lecserélhet, amelyek egyidejűleg ugyanarra AKSNodeClass hivatkoznak, egészen a zavarköltségkeretek által beállított korlátig.
Warning
Ha nem határoz meg megszakítási költségvetéseket a csomópontkészleteken, és nem határoz meg podmegszakítási költségvetéseket a számítási feladatokhoz, a AKSNodeClass módosítása egy terhelt localDNS-on egyszerre akár a csomópontok 10 százalékát is megzavarhatja alkalmazásszintű védelem nélkül, ami a számítási feladatok leállását okozhatja. Definiáljon PDB-ket a kritikus munkaterhelésekhez, és állítson be egy konzervatív megszakítási költségvetést, mielőtt módosítaná a(z) localDNS elemet egy éles fürtön.
Csökkentse a rendelkezésre állási kockázatot a LocalDNS engedélyezésével
Győződjön meg arról, hogy az egyéni DNS-kiszolgálók a csomópont alhálózatából az UDP-n és a 53-as TCP-porton keresztül is válaszolnak a lekérdezésekre. További információ: Egyéni DNS ellenőrzése a LocalDNS engedélyezése előtt.
Pod disruption budgetek meghatározása minden kritikus munkaterheléshez.
Mielőtt módosítaná a(z)
NodePoolelemet, állítson be egy konzervatív megszakítási költségvetést az érintettAKSNodeClasserőforrásokra, ahogyan az az alábbi példában látható:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: disruption: budgets: - nodes: "1" # Replace one node at a timeElőször alkalmazza a
localDNSmódosítást egy nem éles környezetbenAKSNodeClass. Másik lehetőségként hozzon létre egyAKSNodeClasselemet, amelyen engedélyezve van a LocalDNS, és migrálja a számítási feladatokat egy olyanNodePoolelemre, amely arra hivatkozik.A NodeClaim-ek listázásával monitorozza a csere előrehaladását. A csere akkor fejeződik be, ha egyetlen csomópontigény sem jelzi a(z)
Driftedállapotfeltételt.# List node claims and watch replacements appear as drifted nodes are removed kubectl get nodeclaims # Inspect the status conditions on a specific node claim kubectl describe nodeclaim <nodeclaim-name>Ellenőrizze, hogy a LocalDNS aktív-e a cserecsomópontokon. További információkért lásd: A LocalDNS működésének ellenőrzése.
Kubelet-konfiguráció
A kubelet szakasz lehetővé teszi különböző kubelet-paraméterek konfigurálását, amelyek befolyásolják a csomópontok viselkedését. Ezek a paraméterek tipikus kubelet-argumentumok, ezért a Azure szolgáltató egyszerűen átadja őket a csomópont kubeletjének.
Fontos
Konfigurálja körültekintően a kubelet beállításait, és először tesztelje a nem gyártási környezetek módosításait.
CPU-kezelés
A kubelet processzorkezelési viselkedését az alábbi beállítások szabályozzák:
spec:
kubelet:
cpuManagerPolicy: "static" # or "none"
cpuCFSQuota: true
cpuCFSQuotaPeriod: "100ms"
-
cpuManagerPolicy: Azt szabályozza, hogy a kubelet hogyan foglalja le a CPU-erőforrásokat. Állítsa be"static"értékre a CPU-hoz kötést a késésérzékeny munkaterhelések esetén. -
cpuCFSQuota: Engedélyezi a CPU Teljesen fair Scheduler (CFS) kvótakényszerítését a cpu-korlátokat meghatározó tárolók esetében. -
cpuCFSQuotaPeriod: Beállítja a CPU CFS kvótaidőszakát.
Kép szemétgyűjtése
Az alábbi beállítások szabályozzák a kubelet kép szemétgyűjtési viselkedését.
spec:
kubelet:
imageGCHighThresholdPercent: 85
imageGCLowThresholdPercent: 80
Ezek a beállítások szabályozzák, hogy a kubelet mikor hajtja végre a tárolólemezképek szemétgyűjtését:
-
imageGCHighThresholdPercent: Lemezhasználat százalékos aránya, amely elindítja a rendszerkép szemétgyűjtését. -
imageGCLowThresholdPercent: Céllemezhasználat százalékos aránya a szemétgyűjtés után.
Topológiakezelés
Az alábbi beállítás szabályozza a kubelet topológiakezelő házirendjét:
spec:
kubelet:
topologyManagerPolicy: "best-effort" # none, restricted, best-effort, single-numa-node
A topológiakezelő segít koordinálni a késésre érzékeny számítási feladatok erőforrás-lefoglalását a processzor- és eszközerőforrások (például GPU)-erőforrások között.
Rendszerkonfiguráció
Az alábbi beállítások lehetővé teszik további rendszerparaméterek konfigurálását a kubelethez:
spec:
kubelet:
allowedUnsafeSysctls:
- "kernel.msg*"
- "net.ipv4.route.min_pmtu"
containerLogMaxSize: "50Mi"
containerLogMaxFiles: 5
podPidsLimit: 4096
-
allowedUnsafeSysctls: A podok számára használható engedélyezett nem biztonságos sysctls-ek listája. -
containerLogMaxSize: A tároló naplófájljainak maximális mérete forgatás előtt. -
containerLogMaxFiles: A megőrzendő tároló naplófájljainak maximális száma. -
podPidsLimit: A podokban engedélyezett folyamatok maximális száma.
Egyéni Linux operációsrendszer-konfigurációs beállítások
A LinuxOSConfig szakasz lehetővé teszi különböző kubelet-paraméterek konfigurálását, amelyek befolyásolják a csomópontok viselkedését. Ezek a paraméterek általában egyéni operációsrendszer-argumentumok, ezért a NAP egyszerűen átadja őket a csomópont kubeletjének.
Az egyéni Linux operációsrendszer-konfigurációs beállításokról, az alapértelmezett értékekről és szempontokról az egyéni csomópontkonfigurációs paraméterekkel kapcsolatos referenciában talál további információt.
Fontos
Konfigurálja körültekintően a Linux operációsrendszer-beállításokat, és először tesztelje a nem gyártási környezetek módosításait.
Linux-fájlkezelő korlátainak beállításai
A fájlrendszer beállításainak beállításához használja az alábbi beállításokat.
spec:
linuxOSConfig:
# Sysctl Settings
sysctls:
# File System Settings
fsFileMax: 2000000 # Range: 8192-12000500 Default: Max of available range
fsInotifyMaxUserWatches: 1000000 # Range: 781250-2097152 Default: 1048576
fsAioMaxNr: 1000000 # Range: 65536-6553500 Default: 65536
fsNrOpen: 1000000 # Range: 8192-20000500 Default: 1048576
Linux-szoftvercsatorna- és hálózathangolási beállítások
A TCP és a hálózati beállítás beállításához használja az alábbi beállításokat.
spec:
linuxOSConfig:
# Network Settings
netCoreSomaxconn: 65535 # Range: 4096-3240000 Default: 16384
netCoreNetdevMaxBacklog: 5000 # Range: 1000-3240000 Default: 1000
netCoreRmemMax: 134217728 # Range: 212992-134217728 Default: 1048576
netCoreOptmemMax: 102400 # Range: 20480-4194304 Default: 131072
netCoreWmemMax: 134217728 # Range: 212992-134217728 Default: 212992
netCoreRmemDefault: 212992 # Range: 212992-134217728
netCoreWmemDefault: 212992 # Range: 212992-134217728
netIPv4IPLocalPortRange: "1024 65535" # Format: "first last", first: 1024-60999, last: 32768-65535
# Neighbor Table GC Thresholds
netIPv4NeighDefaultGcThresh1: 1024 # Range: 128-80000 Default: 4096
netIPv4NeighDefaultGcThresh2: 2048 # Range: 512-80000 Default: 8192
netIPv4NeighDefaultGcThresh3: 4096 # Range: 1024-80000 Default: 16384
# Note: thresh1 <= thresh2 <= thresh3
# Connection Tracking
netNetfilterNfConntrackBuckets: 131072 # Range: 65536-524288 Default: dynamically calculated
netNetfilterNfConntrackMax: 262144 # Range: 131072-2097152 Default: dynamically calculated
Linux-munkafolyamatok korlátbeállításai
A kernelbeállítás beállításához használja az alábbi beállításokat.
spec:
linuxOSConfig:
# Kernel Settings
kernelThreadsMax: 100000 # Range: 20-513785 Default: Dynamically calculated
Linux rendszerű virtuális memória beállításai
Az alábbi beállításokkal hangolhatja a Linux kernel Linux rendszerű virtuális memória alrendszerének működését és a piszkos adatok lemezre való írását.
spec:
linuxOSConfig:
# Memory Management
vmMaxMapCount: 262144 # Range: 65530-262144 Default: Max of available range
vmVfsCachePressure: 100 # Range: 0-100 Default: 100
vmSwappiness: 60 # Range: 0-100 Default: 60
# Swap File Configuration
swapFileSize: "2Gi" # Default: (not set) | Pattern: quantity with units Note: Requires kubelet.failSwapOn: false
# Transparent Huge Pages
transparentHugePageEnabled: "madvise" # Values: [always, madvise, never] Default: always
transparentHugePageDefrag: "defer+madvise" # Values: [always, defer, defer+madvise, madvise, never] Default: madvise
GPU-beállítások
Az alábbi mezőben engedélyezheti az egyéni GPU-illesztőprogramok telepítését, például az NVIDIA GPU-operátorral.
spec:
gpu:
mode:
# acceptable values: [driver, none] default(or if not specified): driver
# none skips gpu driver installation, driver has NAP manage the GPU driver installation
none
Felügyelt GPU
A gpu.mode mező szabályozza a GPU-illesztő telepítését. Elfogadja a(z) Driver vagy None értéket, és alapértelmezés szerint Driver. Állítsa be None , hogy kihagyja az illesztőprogram telepítését, például az NVIDIA GPU-operátor használatakor.
A felügyelt NVIDIA GPU-élmény bekapcsolásához használja a(z) mode: Driver elemet, és állítsa be a(z) nvidia.managementMode: Managed elemet. A felügyelt GPU támogatott az AKS Machine API kiépítési módját használó linuxos NVIDIA GPU-csomópontok esetén. Az alapértelmezett NVIDIA felügyeleti mód a Unmanaged.
spec:
gpu:
mode: Driver
nvidia:
managementMode: Managed
A teljes, NAP által felügyelt GPU-példáért és az ellenőrzési lépésekért tekintse meg az AKS által felügyelt GPU-csomópontokat.
Biztonsági beállítások
Titkosítás a gazdagépen
Az alábbi mező azt határozza meg, hogy a gazdagépszintű titkosítás engedélyezve van-e a kiépített csomópontokhoz. Ha ezt a mezőt true értékre állítja, a NAP csak olyan példánybeállításokat tartalmaz, amelyek támogatják a gazdagépszintű titkosítást.
spec:
security:
encryptionatHost:
# acceptable values: [true, false] default(or if not specified): false
false
A gazdagépen alapuló titkosítással kapcsolatos további információkért lásd: A gazdagépen alapuló titkosítás dokumentációja.
Egyénileg felügyelt kulcsok és lemeztitkosítási csoportok
A NAP támogatja az ügyfél által kezelt kulcsokat és lemeztitkosítási készleteket használó fürtöket. Engedélyezze ezeket a beállításokat fürtszinten.
AKSNodeClass Nincsenek olyan mezők, amelyeket be kell állítania. Győződjön meg arról, hogy a fürtidentitás rendelkezik a megfelelő szerepköralapú hozzáférésvezérléssel (RBAC):
- A fürt identitása
Readerhozzáféréssel rendelkezik a lemeztitkosítási készlethez. - A lemeztitkosítási készlet erőforrása
Key Vault Crypto Service Encryption Userhozzáfér az Azure Key Vaulthoz.
A fürt létrehozásakor engedélyezett ügyfél által felügyelt kulcsokkal és lemeztitkosítási készletekkel kapcsolatos információkért lásd a Ügyfél által felügyelt kulcsok dokumentációját.
Megbízható indítás engedélyezése NAP-fürtökben
A csomópontok automatikus kiépítésével (NAP) rendelkező fürtök a AKSNodeClass CRDspec.security.trustedLaunch mezőjének használatával engedélyezhetik a megbízható indítást. Állítsa a vTPM és secureBoot mezőket true értékre, hogy engedélyezze a megbízható indítást az ehhez az AKSNodeClass CRD-hez társított új vagy meglévő, NAP által felügyelt csomópontokhoz.
spec:
security:
# Enables trusted lunch
# Valid values: true, false; defaults to false if not specified
trustedLaunch:
secureBoot: true
vTPM: true
Azure erőforráscímkék konfigurációja
Megadhat Azure erőforráscímkéket, amelyek egy adott AKSNodeClass erőforrás használatával létrehozott összes virtuálisgép-példányra vonatkoznak. A címkék hasznosak a költségkövetéshez, az erőforrás-szervezéshez és a megfelelőségi követelményekhez.
Címkék korlátozásai
- Azure erőforráscímkék erőforrásonként 50 címkét tartalmaznak.
- A címkenevek nem érzékenyek a kis- és nagybetűkre, de a címke értékei megkülönböztetik a kis- és nagybetűket.
- Azure nem használható címkeneveket foglal le. További információkért tekintse meg a címke útmutatását és korlátait.
Példacímkék konfigurációja
spec:
tags:
Environment: "production"
Team: "platform"
Application: "web-service"
CostCenter: "engineering"
Átfogó AKSNodeClass konfigurációs példa
Az alábbi példa egy átfogó AKSNodeClass konfigurációt mutat be, amely a cikkben tárgyalt összes beállítást tartalmazza:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
template:
spec:
nodeClassRef:
group: karpenter.azure.com
kind: AKSNodeClass
name: comprehensive-example
---
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: comprehensive-example
spec:
# Image family configuration
# Default: Ubuntu
# Valid values: Ubuntu, AzureLinux, AzureContainerLinux
imageFamily: Ubuntu
# FIPS compliant mode - allows support for FIPS-compliant node images
# Default: Disabled
# Valid values: FIPS, Disabled
fipsMode: Disabled
# Artifact Streaming- allows use of artifact streaming feature; To use this feature container images must also enable artifact streaming on ACR
# Valid values: true, false; defaults to false if not specified
artifactStreaming:
enabled: true
# LocalDNS mode - allows use of LocalDNS feature
# Default: Disabled
# Valid values: Preferred, Required, Disabled
# vnetDNSOverrides and kubeDNSOverrides are both required, even when mode is Disabled
# Each list must include the "." and "cluster.local" zones, and each zone must set all nine fields
localDNS:
mode: Disabled
# vnetDNSOverrides apply to DNS traffic from pods with dnsPolicy:default and from kubelet
vnetDNSOverrides:
- zone: "."
cacheDuration: "3600s"
forwardDestination: VnetDNS # the "." zone can't forward to ClusterCoreDNS in vnetDNSOverrides
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: PreferUDP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
- zone: "cluster.local"
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS # cluster.local can't forward to VnetDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: ForceTCP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
# kubeDNSOverrides apply to DNS traffic from pods with dnsPolicy:ClusterFirst
kubeDNSOverrides:
- zone: "."
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: PreferUDP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
- zone: "cluster.local"
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: ForceTCP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
# Virtual network subnet configuration (optional)
# If not specified, uses the default --vnet-subnet-id from Karpenter installation
vnetSubnetID: "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet/subnets/my-subnet"
# OS disk size configuration
# Default: 128 GB
# Minimum: 30 GB
osDiskSizeGB: 128
# Maximum pods per node configuration
# Default behavior depends on network plugin:
# - Azure CNI with standard networking: 30 pods
# - Azure CNI with overlay networking: 250 pods
# - Other configurations: 110 pods
# Range: 10-250
maxPods: 30
# GPU driver installation (optional)
# Default: driver - NAP manages gpu driver installation
# none skips gpu driver installation
# Valid values: driver, none
gpu:
mode:
driver
# Azure resource tags (optional)
# Applied to all VM instances created with this AKSNodeClass
tags:
Environment: "production"
Team: "platform-team"
Application: "web-service"
CostCenter: "engineering"
# Kubelet configuration (optional)
# All fields are optional with sensible defaults
kubelet:
# CPU management policy
# Default: "none"
# Valid values: none, static
cpuManagerPolicy: "static"
# CPU CFS quota enforcement
# Default: true
cpuCFSQuota: true
# CPU CFS quota period
# Default: "100ms"
cpuCFSQuotaPeriod: "100ms"
# Image garbage collection thresholds
# imageGCHighThresholdPercent must be greater than imageGCLowThresholdPercent
# Range: 0-100
imageGCHighThresholdPercent: 85
imageGCLowThresholdPercent: 80
# Topology manager policy
# Default: "none"
# Valid values: none, restricted, best-effort, single-numa-node
topologyManagerPolicy: "best-effort"
# Allowed unsafe sysctls (optional)
# Comma-separated list of unsafe sysctls or patterns
allowedUnsafeSysctls:
- "kernel.msg*"
- "net.ipv4.route.min_pmtu"
# Container log configuration
# containerLogMaxSize default: "50Mi"
containerLogMaxSize: "50Mi"
# containerLogMaxFiles default: 5, minimum: 2
containerLogMaxFiles: 5
# Pod process limits
# Default: -1 (unlimited)
podPidsLimit: 4096
security:
# Enables trusted lunch
# Valid values: true, false; default(or if not specified): false
trustedLaunch:
secureBoot: true
vTPM: true
# Encryption at host
encryptionatHost:
# acceptable values: [true, false] default(or if not specified): false
false
Következő lépések
Az AKS-ben a csomópontok automatikus kiépítésével kapcsolatos további információkért tekintse meg az alábbi cikkeket: