Pod-tesztkörnyezet (előzetes verzió) az Azure Kubernetes Service-lel (AKS)
A tároló számítási feladatainak biztonságossá tételéhez és a nem megbízható vagy potenciálisan rosszindulatú kódok elleni védelméhez az AKS most már tartalmaz egy Pod Sandboxing (előzetes verzió) nevű mechanizmust. A Pod-tesztkörnyezet elkülönítési határt biztosít a tárolóalkalmazás és a tároló gazdagép megosztott kernele és számítási erőforrásai, például a CPU, a memória és a hálózatkezelés között. A Pod Sandboxing kiegészíti az egyéb biztonsági intézkedéseket vagy adatvédelmi vezérlőket a teljes architektúrával, hogy megfeleljen a bizalmas információk védelmére vonatkozó szabályozási, iparági vagy szabályozási megfelelőségi követelményeknek.
Ez a cikk segít megérteni ezt az új funkciót, és annak implementálását.
Előfeltételek
Az Azure CLI 2.44.1-es vagy újabb verziója. Futtassa
az --version
a verziót, és futtassaaz upgrade
a verzió frissítéséhez. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.Az
aks-preview
Azure CLI-bővítmény 0.5.123-es vagy újabb verziója.Regisztrálja a
KataVMIsolationPreview
funkciót az Azure-előfizetésében.Az AKS az összes AKS hálózati beépülő modullal támogatja az 1.24.0-s és újabb verzió pod-tesztkörnyezetét (előzetes verzió).
Kubernetes-fürt kezeléséhez használja a Kubernetes parancssori ügyfélalkalmazás kubectl-ét. Az Azure Cloud Shell a .
kubectl
A kubectl helyi telepítéséhez használja az az aks install-cli parancsot.
Az aks-preview Azure CLI-bővítmény telepítése
Fontos
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óit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. 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:
Az aks-preview bővítmény telepítéséhez futtassa a következő parancsot:
az extension add --name aks-preview
Futtassa a következő parancsot a bővítmény legújabb verziójára való frissítéshez:
az extension update --name aks-preview
A KataVMIsolationPreview funkciójelző regisztrálása
Regisztrálja a KataVMIsolationPreview
funkciójelzőt az az feature register paranccsal, ahogyan az az alábbi példában látható:
az feature register --namespace "Microsoft.ContainerService" --name "KataVMIsolationPreview"
Néhány percig tart, amíg az állapot megjelenik a Regisztrált állapotban. Ellenőrizze a regisztrációs állapotot az az feature show paranccsal:
az feature show --namespace "Microsoft.ContainerService" --name "KataVMIsolationPreview"
Ha az állapot a Regisztrált állapotot tükrözi, frissítse a Microsoft.ContainerService erőforrás-szolgáltató regisztrációját az az provider register paranccsal:
az provider register --namespace "Microsoft.ContainerService"
Korlátozások
A Pod-tesztkörnyezet (előzetes verzió) előzetes verziójával kapcsolatos korlátozások a következők:
Előfordulhat, hogy a Kata-tárolók nem érik el a hagyományos tárolók által az Azure Fileson és a nagy teljesítményű helyi SSD-n elérhető IOPS-teljesítménykorlátokat.
A Microsoft Defender for Containers nem támogatja a Kata futtatókörnyezeti podok kiértékelését.
A Kata gazdagéphálózat nem támogatott.
Hogyan működik?
Ennek a funkciónak az AKS-en való eléréséhez az AKS-veremhez készült Azure Linux-tároló gazdagépen futó Kata-tárolók hardveresen kényszerített elkülönítést biztosítanak. A Pod Sandboxing kibővíti a hardverelkülönítés előnyeit, például egy külön kernelt minden Kata-podhoz. A hardverelkülönítés erőforrásokat foglal le az egyes podokhoz, és nem osztja meg őket más, ugyanazon a gazdagépen futó Kata-tárolókkal vagy névtértárolókkal.
A megoldásarchitektúra a következő összetevőkön alapul:
- Az AKS-hez készült Azure Linux-tárológazda
- Microsoft Hyper-V hipervizor
- Azure-ra hangolt Dom0 Linux Kernel
- Nyílt forráskódú Cloud-Hypervisor virtuálisgép-monitor (VMM)
- Integráció a Kata Container-keretrendszerrel
A Pod-tesztkörnyezet Kata-tárolókkal való üzembe helyezése hasonló a tárolók üzembe helyezéséhez használt szabványos tárolóalapú munkafolyamathoz. Az üzembe helyezés tartalmazza a podsablonban definiálható kata-futtatókörnyezeti beállításokat.
Ha ezt a funkciót podtal szeretné használni, az egyetlen különbség a runtimeClassName kata-mshv-vm-isolation hozzáadása a pod specifikációjához.
Amikor egy pod a kata-mshv-vm-isolation runtimeClass szolgáltatást használja, létrehoz egy virtuális gépet, amely pod-tesztkörnyezetként szolgál a tárolók üzemeltetéséhez. A virtuális gép alapértelmezett memóriája 2 GB, az alapértelmezett processzor pedig egy mag, ha a tárolóerőforrás-jegyzék (containers[].resources.limits
) nem határoz meg korlátot a processzorra és a memóriára vonatkozóan. Ha a tárolóerőforrás-jegyzékben a cpu- vagy memóriakorlátot adja meg, a virtuális gép containers[].resources.limits.cpu
argumentuma 1
egy + xCPU, az containers[].resources.limits.memory
2
argumentum pedig a 2 GB + yMemory értéket adja meg. A tárolók csak a tárolók korlátaihoz használhatják a processzort és a memóriát. Ezeket containers[].resources.requests
az előzetes verzió figyelmen kívül hagyja, miközben dolgozunk a processzor- és memóriaterhelés csökkentésén.
Új fürt üzembe helyezése
Hajtsa végre az alábbi lépéseket egy Azure Linux AKS-fürt üzembe helyezéséhez az Azure CLI használatával.
Hozzon létre egy AKS-fürtöt az az aks create paranccsal, és adja meg a következő paramétereket:
- --számítási feladat-futtatókörnyezet: Adja meg a KataMshvVmIsolation értéket a pod-tesztkörnyezet funkció engedélyezéséhez a csomópontkészleten. Ezzel a paraméterrel a többi paraméternek meg kell felelnie az alábbi követelményeknek. Ellenkező esetben a parancs meghiúsul, és a megfelelő paraméter(ek)sel kapcsolatos problémát jelez.
- --os-sku: AzureLinux. Ebben az előzetes kiadásban csak az Azure Linux operációsrendszer-termékváltozat támogatja ezt a funkciót.
- --node-vm-size: Minden Olyan Azure-beli virtuálisgép-méret, amely 2. generációs virtuális gép, és támogatja a beágyazott virtualizálási műveket. Például Dsv3 rendszerű virtuális gépek.
Az alábbi példa egy myAKSCluster nevű fürtöt hoz létre egy csomóponttal a myResourceGroupban:
az aks create --name myAKSCluster \ --resource-group myResourceGroup \ --os-sku AzureLinux \ --workload-runtime KataMshvVmIsolation \ --node-vm-size Standard_D4s_v3 \ --node-count 1 \ --generate-ssh-keys
Futtassa a következő parancsot a Kubernetes-fürt hozzáférési hitelesítő adatainak lekéréséhez. Használja az az aks get-credentials parancsot , és cserélje le a fürt nevének és az erőforráscsoport nevének értékeit.
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Listázhatja az összes podot az összes névtérben a kubectl get pods paranccsal.
kubectl get pods --all-namespaces
Üzembe helyezés meglévő fürtön
Ha ezt a funkciót egy meglévő AKS-fürttel szeretné használni, a következő követelményeknek kell megfelelnie:
- Kövesse a lépéseket a KataVMIsolationPreview funkciójelző regisztrálásához.
- Ellenőrizze, hogy a fürt a Kubernetes 1.24.0-s vagy újabb verzióját futtatja-e.
Az alábbi paranccsal engedélyezheti a Pod-tesztkörnyezetet (előzetes verzió) egy csomópontkészlet létrehozásával a üzemeltetéséhez.
Adjon hozzá egy csomópontkészletet az AKS-fürthöz az az aks nodepool add paranccsal. Adja meg a következő paramétereket:
- --resource-group: Adja meg egy meglévő erőforráscsoport nevét az AKS-fürt létrehozásához.
- --cluster-name: Adjon meg egy egyedi nevet az AKS-fürtnek, például a myAKSClusternek.
- --name: Adjon meg egy egyedi nevet a fürtök csomópontkészletének, például a nodepool2-nek.
- --számítási feladat-futtatókörnyezet: Adja meg a KataMshvVmIsolation értéket a pod-tesztkörnyezet funkció engedélyezéséhez a csomópontkészleten. A paraméter mellett ezeknek az
--workload-runtime
egyéb paramétereknek is meg kell felelniük a következő követelményeknek. Ellenkező esetben a parancs meghiúsul, és a megfelelő paraméter(ek)sel kapcsolatos problémát jelez.- --os-sku: AzureLinux. Ezt a funkciót csak az Azure Linux operációsrendszer-termékváltozat támogatja az előzetes kiadásban.
- --node-vm-size: Minden Olyan Azure-beli virtuálisgép-méret, amely 2. generációs virtuális gép, és támogatja a beágyazott virtualizálási műveket. Például Dsv3 rendszerű virtuális gépek.
Az alábbi példa egy csomópontkészletet ad hozzá a myAKSClusterhez egy csomóponttal a nodepool2-ben a myResourceGroupban:
az aks nodepool add --cluster-name myAKSCluster --resource-group myResourceGroup --name nodepool2 --os-sku AzureLinux --workload-runtime KataMshvVmIsolation --node-vm-size Standard_D4s_v3
Futtassa az az aks update parancsot a pod-tesztkörnyezet (előzetes verzió) engedélyezéséhez a fürtön.
az aks update --name myAKSCluster --resource-group myResourceGroup
Megbízható alkalmazás üzembe helyezése
Ha be szeretné mutatni egy megbízható alkalmazás üzembe helyezését az AKS-fürt megosztott kernelén, hajtsa végre az alábbi lépéseket.
Hozzon létre egy trusted-app.yaml nevű fájlt egy megbízható pod leírásához, majd illessze be a következő jegyzékfájlt.
kind: Pod apiVersion: v1 metadata: name: trusted spec: containers: - name: trusted image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
Telepítse a Kubernetes-podot a kubectl apply parancs futtatásával, és adja meg a trusted-app.yaml fájlt:
kubectl apply -f trusted-app.yaml
A parancs kimenete a következő példához hasonlít:
pod/trusted created
Nem megbízható alkalmazás üzembe helyezése
A nem megbízható alkalmazások AKS-fürt pod-tesztkörnyezetben való üzembe helyezésének bemutatásához hajtsa végre az alábbi lépéseket.
Hozzon létre egy untrusted-app.yaml nevű fájlt egy nem megbízható pod leírásához, majd illessze be a következő jegyzékfájlt.
kind: Pod apiVersion: v1 metadata: name: untrusted spec: runtimeClassName: kata-mshv-vm-isolation containers: - name: untrusted image: mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11 command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
A runtimeClassNameSpec értéke .
kata-mhsv-vm-isolation
Telepítse a Kubernetes-podot a kubectl apply parancs futtatásával, és adja meg a untrusted-app.yaml fájlt:
kubectl apply -f untrusted-app.yaml
A parancs kimenete a következő példához hasonlít:
pod/untrusted created
Kernelelkülönítés konfigurációjának ellenőrzése
Az AKS-fürtön belüli tároló eléréséhez indítsa el a rendszerhéj-munkamenetet a kubectl exec parancs futtatásával. Ebben a példában a tárolót a nem megbízható podon belül éri el.
kubectl exec -it untrusted -- /bin/bash
A Kubectl csatlakozik a fürthöz, az első tárolóban fut
/bin/sh
a nem megbízható podon belül, és továbbítja a terminál bemeneti és kimeneti adatfolyamait a tároló folyamatának. A rendszerhéj-munkamenetet a megbízható podot üzemeltető tárolóban is elindíthatja.Miután a rendszerhéj-munkamenetet a nem megbízható pod tárolójára irányítja, parancsokat futtathat annak ellenőrzéséhez, hogy a nem megbízható tároló pod-tesztkörnyezetben fut-e. Megfigyelheti, hogy a rendszermag verziója eltér a tesztkörnyezeten kívüli megbízható tárolótól.
A kernelverzió megtekintéséhez futtassa a következő parancsot:
uname -r
Az alábbi példa a pod tesztkörnyezeti kernelének kimenetére hasonlít:
root@untrusted:/# uname -r 5.15.48.1-8.cm2
Indítsa el a rendszerhéj-munkamenetet a megbízható pod tárolójában a kernelkimenet ellenőrzéséhez:
kubectl exec -it trusted -- /bin/bash
A kernelverzió megtekintéséhez futtassa a következő parancsot:
uname -r
Az alábbi példa a megbízható podot futtató virtuális gép kimenetéhez hasonlít, amely egy másik kernel, mint a pod tesztkörnyezetében futó nem megbízható pod:
5.15.80.mshv2-hvl1.m2
Felesleges tartalmak törlése
Ha végzett a funkció kiértékelésével, az Azure-díjak elkerülése érdekében törölje a felesleges erőforrásokat. Ha az értékelés vagy a tesztelés részeként üzembe helyezett egy új fürtöt, az az aks delete paranccsal törölheti a fürtöt.
az aks delete --resource-group myResourceGroup --name myAKSCluster
Ha engedélyezte a pod-tesztkörnyezetet (előzetes verzió) egy meglévő fürtön, a kubectl delete pod paranccsal eltávolíthatja a pod(ok)t.
kubectl delete pod pod-name
Következő lépések
További információ az AKS-fürttel rendelkező csomópontok azure-beli dedikált gazdagépeiről az Azure platformkarbantartási események hardverelkülönítésének és vezérlésének használatára.
Azure Kubernetes Service