Többfürt 4. rétegbeli terheléselosztás beállítása az Azure Kubernetes Fleet Manager-tagfürtök között (előzetes verzió)
A több fürtön üzembe helyezett alkalmazások esetében a rendszergazdák gyakran a fürtök között szeretnék átirányítani a bejövő forgalmat.
Ezt a dokumentumot követve beállíthatja a 4. rétegbeli terheléselosztást az ilyen többfürtes alkalmazásokhoz.
Fontos
Az Azure Kubernetes Fleet Manager 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 Azure Kubernetes Fleet Manager 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.
Előfeltételek
Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
Olvassa el ennek a funkciónak a fogalmi áttekintését, amely a dokumentumban hivatkozott objektumok és
MultiClusterService
azok magyarázatátServiceExport
tartalmazza.Rendelkeznie kell egy Fleet-erőforrással, amely központi fürttel és tagfürtökkel rendelkezik. Ha nem rendelkezik ezzel az erőforrással, kövesse a rövid útmutatót: Flottaerőforrás létrehozása és tagfürtökhöz való csatlakozás.
A megcélzott Azure Kubernetes Service-fürtöknek, amelyeken a számítási feladatokat üzembe helyezik, ugyanazon a virtuális hálózaton vagy társhálózaton kell lenniük.
- Ezeket a célfürtöket tagfürtként kell hozzáadni a Fleet-erőforráshoz.
- Ezeknek a célfürtöknek Azure CNI (Container Networking Interface) hálózatkezelést kell használniuk.
Az Access Fleet Hub-fürt Kubernetes API-jának lépéseit követve hozzáférést kell szereznie a központi fürt Kubernetes API-hoz.
Állítsa be a következő környezeti változókat, és szerezze be a flotta és az összes tagfürt kubeconfigjait:
export GROUP=<resource-group> export FLEET=<fleet-name> export MEMBER_CLUSTER_1=aks-member-1 export MEMBER_CLUSTER_2=aks-member-2 az fleet get-credentials --resource-group ${GROUP} --name ${FLEET} --file fleet az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_1} --file aks-member-1 az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_2} --file aks-member-2
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
Számítási feladat üzembe helyezése a Fleet-erőforrás tagfürtjeiben
Feljegyzés
Az útmutató lépései csak bemutató célú mintaalkalmazásokra vonatkoznak. Ezt a számítási feladatot bármelyik meglévő üzembe helyezési és szolgáltatásobjektumra lecserélheti.
Ezek a lépések üzembe helyezik a mintaterhelést a Fleet-fürtből a tagfürtökre a Kubernetes konfigurációpropagálásával. Azt is megteheti, hogy ezeket a Kubernetes-konfigurációkat külön-külön, egyenként helyezi üzembe az egyes tagfürtökön.
Névtér létrehozása a flottafürtön:
KUBECONFIG=fleet kubectl create namespace kuard-demo
A kimenet a következő példához hasonlóan néz ki:
namespace/kuard-demo created
Alkalmazza az üzembe helyezési, service-, ServiceExport-objektumokat:
KUBECONFIG=fleet kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-export-service.yaml
A
ServiceExport
fenti fájl specifikációja lehetővé teszi egy szolgáltatás exportálását tagfürtökből a Fleet-erőforrásba. A sikeres exportálás után a szolgáltatás és annak összes végpontja szinkronizálva lesz a flottafürttel, majd többfürtes terheléselosztás beállítására használható ezen végpontok között. A kimenet az alábbi példához hasonlóan néz ki:deployment.apps/kuard created service/kuard created serviceexport.networking.fleet.azure.com/kuard created
Hozza létre a következőt
ClusterResourcePlacement
egy nevűcrp-2.yaml
fájlban. Figyelje meg, hogy fürtöket választunk ki aeastus
régióban:apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: kuard-demo spec: resourceSelectors: - group: "" version: v1 kind: Namespace name: kuard-demo policy: affinity: clusterAffinity: requiredDuringSchedulingIgnoredDuringExecution: clusterSelectorTerms: - labelSelector: matchLabels: fleet.azure.com/location: eastus
Alkalmazza a következőt
ClusterResourcePlacement
:KUBECONFIG=fleet kubectl apply -f crp-2.yaml
Ha a kimenet sikeres, a kimenet az alábbi példához hasonlóan néz ki:
clusterresourceplacement.placement.kubernetes-fleet.io/kuard-demo created
Ellenőrizze a következő állapotot
ClusterResourcePlacement
:KUBECONFIG=fleet kubectl get clusterresourceplacements
Ha a kimenet sikeres, a kimenet az alábbi példához hasonlóan néz ki:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE kuard-demo 1 True 1 True 1 20s
MultiClusterService létrehozása több tagfürt szolgáltatásvégpontjai közötti terheléselosztáshoz
Ellenőrizze, hogy a szolgáltatás sikeresen exportálva van-e a régióban lévő tagfürtökhöz
eastus
:KUBECONFIG=aks-member-1 kubectl get serviceexport kuard --namespace kuard-demo
A kimenet a következő példához hasonlóan néz ki:
NAME IS-VALID IS-CONFLICTED AGE kuard True False 25s
KUBECONFIG=aks-member-2 kubectl get serviceexport kuard --namespace kuard-demo
A kimenet a következő példához hasonlóan néz ki:
NAME IS-VALID IS-CONFLICTED AGE kuard True False 55s
Látnia kell, hogy a szolgáltatás érvényes az exportálásra (
IS-VALID
mező)true
és nem ütközik más exportálásokkal (IS-CONFLICT
isfalse
).Feljegyzés
A ServiceExport propagálása eltarthat egy-két percig.
Hozzon létre
MultiClusterService
egy tagot az alábbi fürtök szolgáltatásvégpontjai közötti terheléselosztáshoz:KUBECONFIG=aks-member-1 kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-mcs.yaml
Feljegyzés
Ha nyilvános helyett belső IP-címen szeretné elérhetővé tenni a szolgáltatást, adja hozzá a jegyzetet a MultiClusterService szolgáltatáshoz:
apiVersion: networking.fleet.azure.com/v1alpha1 kind: MultiClusterService metadata: name: kuard namespace: kuard-demo annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" ...
A kimenet a következő példához hasonlóan néz ki:
multiclusterservice.networking.fleet.azure.com/kuard created
Az alábbi parancs futtatásával ellenőrizze, hogy a MultiClusterService érvényes-e:
KUBECONFIG=aks-member-1 kubectl get multiclusterservice kuard --namespace kuard-demo
A kimenetnek a következőképpen kell kinéznie:
NAME SERVICE-IMPORT EXTERNAL-IP IS-VALID AGE kuard kuard <a.b.c.d> True 40s
A
IS-VALID
mezőnek a kimenetben kell lennietrue
. Tekintse meg a külső terheléselosztó IP-címét (EXTERNAL-IP
) a kimenetben. Az importálás teljes feldolgozása és az IP-cím elérhetővé válása eltarthat egy ideig.Futtassa többször a következő parancsot a külső terheléselosztó IP-címével:
curl <a.b.c.d>:8080 | grep addrs
Figyelje meg, hogy a kérést kiszolgáló podok IP-címei változnak, és ezek a podok tagfürtökből
aks-member-1
ésaks-member-2
aeastus
régióból származnak. A pod IP-címeinek ellenőrzéséhez futtassa a következő parancsokat a régióból származóeastus
fürtökön:KUBECONFIG=aks-member-1 kubectl get pods -n kuard-demo -o wide
KUBECONFIG=aks-member-2 kubectl get pods -n kuard-demo -o wide
Azure Kubernetes Service