Belső terheléselosztó használata az Azure Kubernetes Service-lel (AKS)
Létrehozhat és használhat belső terheléselosztót az alkalmazásokhoz való hozzáférés korlátozásához az Azure Kubernetes Service-ben (AKS). A belső terheléselosztó nem rendelkezik nyilvános IP-címvel, és a Kubernetes-szolgáltatást csak a privát IP-címet elérő alkalmazások számára teszi elérhetővé. Ezek az alkalmazások lehetnek ugyanazon a virtuális hálózaton belül vagy egy másik virtuális hálózatban virtuális hálózatok közötti társviszony-létesítésen keresztül. Ez a cikk bemutatja, hogyan hozhat létre és használhat belső terheléselosztót az AKS-sel.
Fontos
2025. szeptember 30-án az alapszintű Load Balancer kivonásra kerül. További információért tekintse meg a hivatalos bejelentést. Ha jelenleg alapszintű Terheléselosztót használ, a kivonási dátum előtt frissítsen a Standard Load Balancerre. A frissítéssel kapcsolatos útmutatásért tekintse meg az Alapszintű Terheléselosztóról való frissítés – útmutató című témakörben található útmutatást.
- Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha AKS-fürtre van szüksége, létrehozhat egyet az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával.
- Szüksége van az Azure CLI 2.0.59-es vagy újabb verziójára. A verzió azonosításához futtassa a következőt:
az --version
. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése. - Ha meglévő alhálózatot vagy erőforráscsoportot szeretne használni, az AKS-fürt identitásának engedélyre van szüksége a hálózati erőforrások kezeléséhez. További információ: Kubenet-hálózatkezelés használata saját IP-címtartományokkal az AKS-ben vagy Azure CNI-hálózatkezelés konfigurálása az AKS-ben. Ha úgy konfigurálja a terheléselosztót, hogy egy másik alhálózaton lévő IP-címet használjon, győződjön meg arról, hogy az AKS-fürt identitása olvasási hozzáféréssel is rendelkezik az alhálózathoz.
- Az engedélyekről további információt az AKS más Azure-erőforrásokhoz való hozzáférésének delegálása című témakörben talál.
Hozzon létre egy szolgáltatásjegyzéket
internal-lb.yaml
a szolgáltatástípussalLoadBalancer
és aazure-load-balancer-internal
jegyzettel.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
Helyezze üzembe a belső terheléselosztót a
kubectl apply
paranccsal. Ez a parancs létrehoz egy Azure-terheléselosztót az AKS-fürthöz csatlakoztatott csomópont erőforráscsoportjában.kubectl apply -f internal-lb.yaml
A parancs használatával megtekintheti a
kubectl get service
szolgáltatás részleteit.kubectl get service internal-app
A belső terheléselosztó IP-címe megjelenik az
EXTERNAL-IP
oszlopban, ahogyan az a következő példakimenetben is látható. Ebben az összefüggésben a Külső a terheléselosztó külső felületére utal. Ez nem jelenti azt, hogy nyilvános, külső IP-címet kap. Ez az IP-cím dinamikusan ugyanabból az alhálózatból van hozzárendelve, mint az AKS-fürt.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.248.59 10.240.0.7 80:30555/TCP 2m
A terheléselosztó IP-címének megadásakor a megadott IP-címnek ugyanabban a virtuális hálózaton kell lennie, mint az AKS-fürt, de a virtuális hálózat egy másik erőforrásához még nem rendelhető hozzá. Például nem szabad IP-címet használnia az AKS-fürt Kubernetes-alhálózatához kijelölt tartományban. Ha olyan IP-címet használ, amely már hozzá van rendelve egy másik erőforráshoz ugyanabban a virtuális hálózatban, problémákat okozhat a terheléselosztóval kapcsolatban.
Az Azure CLI-paranccsal vagy a Get-AzVirtualNetworkSubnetConfig
PowerShell-parancsmaggal lekérheti az network vnet subnet list
az alhálózatokat a virtuális hálózatban.
További információ az alhálózatokról: Csomópontkészlet hozzáadása egyedi alhálózattal.
Ha egy adott IP-címet szeretne használni a terheléselosztóval, két lehetősége van: állítsa be a szolgáltatásjegyzeteket , vagy adja hozzá a LoadBalancerIP tulajdonságot a terheléselosztó YAML-jegyzékéhez.
Fontos
A LoadBalancerIP tulajdonság hozzáadása a terheléselosztó YAML-jegyzékéhez elavult a felsőbb rétegbeli Kubernetes után. Bár a jelenlegi használat változatlan marad, és a meglévő szolgáltatások várhatóan módosítás nélkül fognak működni, javasoljuk inkább a szolgáltatásjegyzetek beállítását . A szolgáltatásjegyzetekkel kapcsolatos további információkért lásd az Azure LoadBalancer által támogatott széljegyzeteket.
- Szolgáltatásjegyzetek beállítása
- A LoadBalancerIP tulajdonság hozzáadása a terheléselosztó YAML-jegyzékéhez
Szolgáltatásjegyzeteket állíthat be egy IPv4-cím és
service.beta.kubernetes.io/azure-load-balancer-ipv6
egy IPv6-cím használatávalservice.beta.kubernetes.io/azure-load-balancer-ipv4
.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-ipv4: 10.240.0.25 service.beta.kubernetes.io/azure-load-balancer-internal: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
A parancs használatával megtekintheti a
kubectl get service
szolgáltatás részleteit.kubectl get service internal-app
Az oszlopban lévő
EXTERNAL-IP
IP-címnek tükröznie kell a megadott IP-címet, ahogyan az alábbi példakimenetben látható:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.0.184.168 10.240.0.25 80:30225/TCP 4m
A terheléselosztó másik alhálózatban való konfigurálásáról további információt a Másik alhálózat megadása című témakörben talál.
- A Kubernetes 1.22.x vagy újabb verziójára van szüksége.
- Szüksége van egy virtuális hálózattal és alhálózattal rendelkező meglévő erőforráscsoportra. Ebben az erőforráscsoportban hozza létre a privát végpontot. Ha nem rendelkezik ezekkel az erőforrásokkal, olvassa el a Virtuális hálózat és alhálózat létrehozása című témakört.
Hozzon létre egy szolgáltatásjegyzéket
internal-lb-pls.yaml
a szolgáltatástípussalLoadBalancer
ésazure-pls-create
aazure-load-balancer-internal
széljegyzetekkel. További lehetőségekért tekintse meg az Azure Private Link Service-integráció tervezési dokumentumát.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-pls-create: "true" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
Helyezze üzembe a belső terheléselosztót a
kubectl apply
paranccsal. Ez a parancs létrehoz egy Azure-terheléselosztót az AKS-fürthöz csatlakoztatott csomópont erőforráscsoportjában. Emellett létrehoz egy Private Link Service-objektumot is, amely a Kubernetes szolgáltatáshoz társított terheléselosztó előtérbeli IP-konfigurációjával csatlakozik.kubectl apply -f internal-lb-pls.yaml
A parancs használatával megtekintheti a
kubectl get service
szolgáltatás részleteit.kubectl get service internal-app
A belső terheléselosztó IP-címe megjelenik az
EXTERNAL-IP
oszlopban, ahogyan az a következő példakimenetben is látható. Ebben az összefüggésben a Külső a terheléselosztó külső felületére utal. Ez nem jelenti azt, hogy nyilvános, külső IP-címet kap.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-app LoadBalancer 10.125.17.53 10.125.0.66 80:30430/TCP 64m
Tekintse meg a Private Link Service objektum részleteit a
az network private-link-service list
paranccsal.# Create a variable for the node resource group AKS_MC_RG=$(az aks show -g myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv) # View the details of the Private Link Service object az network private-link-service list -g $AKS_MC_RG --query "[].{Name:name,Alias:alias}" -o table
A kimenetnek a következő példakimenethez hasonlóan kell kinéznie:
Name Alias -------- ------------------------------------------------------------------------- pls-xyz pls-xyz.abc123-defg-4hij-56kl-789mnop.eastus2.azure.privatelinkservice
A privát végpontokkal privát módon csatlakozhat a Kubernetes-szolgáltatásobjektumhoz a létrehozott Private Link szolgáltatáson keresztül.
Hozza létre a privát végpontot a
az network private-endpoint create
paranccsal.# Create a variable for the private link service AKS_PLS_ID=$(az network private-link-service list -g $AKS_MC_RG --query "[].id" -o tsv) # Create the private endpoint $ az network private-endpoint create \ -g myOtherResourceGroup \ --name myAKSServicePE \ --vnet-name myOtherVNET \ --subnet pe-subnet \ --private-connection-resource-id $AKS_PLS_ID \ --connection-name connectToMyK8sService
A PLS-erőforrás testreszabásához az alábbi széljegyzetek használhatók:
Jegyzet | Érték | Leírás | Kötelező | Alapértelmezett |
---|---|---|---|---|
service.beta.kubernetes.io/azure-pls-create |
"true" |
Logikai érték, amely azt jelzi, hogy létre kell-e hozni egy PLS-t. | Kötelező | |
service.beta.kubernetes.io/azure-pls-name |
<PLS name> |
A létrehozandó PLS-erőforrás nevét meghatározó sztring. | Választható | "pls-<LB frontend config name>" |
service.beta.kubernetes.io/azure-pls-resource-group |
Resource Group name |
Sztring annak az erőforráscsoportnak a nevével, amelyben a PLS-erőforrás létrejön | Választható | MC_ resource |
service.beta.kubernetes.io/azure-pls-ip-configuration-subnet |
<Subnet name> |
Sztring, amely azt az alhálózatot jelzi, amelyre a PLS üzembe lesz helyezve. Ennek az alhálózatnak ugyanabban a virtuális hálózaton kell lennie, mint a háttérkészletnek. A PLS NAT IP-címek ezen az alhálózaton belül vannak lefoglalva. | Választható | Ha service.beta.kubernetes.io/azure-load-balancer-internal-subnet a rendszer ezt az ILB-alhálózatot használja. Ellenkező esetben a konfigurációs fájl alapértelmezett alhálózata lesz használva. |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count |
[1-8] |
Lefoglalni kívánt privát NAT-IP-címek teljes száma. | Választható | 0 |
service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address |
"10.0.0.7 ... 10.0.0.10" |
A lefoglalandó statikus IPv4 IP-címek szóközzel elválasztott listája. (Az IPv6 jelenleg nem támogatott.) Az IP-címek teljes száma nem lehet nagyobb, mint a megadott IP-címek száma.service.beta.kubernetes.io/azure-pls-ip-configuration-ip-address-count Ha kevesebb IP-cím van megadva, a többi dinamikusan lesz lefoglalva. A lista első IP-címe a következőképpen van beállítva Primary : . |
Választható | Minden IP-cím dinamikusan van lefoglalva. |
service.beta.kubernetes.io/azure-pls-fqdns |
"fqdn1 fqdn2" |
A PLS-hez társított teljes tartománynevek szóközzel elválasztott listája. | Választható | [] |
service.beta.kubernetes.io/azure-pls-proxy-protocol |
"true" vagy "false" |
Logikai érték, amely azt jelzi, hogy a TCP PROXY protokollt engedélyezni kell-e a PLS-en a kapcsolati adatok továbbításához, beleértve a hivatkozás azonosítóját és a forrás IP-címét. Vegye figyelembe, hogy a háttérszolgáltatásnak támogatnia kell a PROXY protokollt, vagy a kapcsolatok sikertelenek lesznek. | Választható | false |
service.beta.kubernetes.io/azure-pls-visibility |
"sub1 sub2 sub3 … subN" vagy "*" |
AzOknak az Azure-előfizetés-azonosítóknak a szóközzel elválasztott listája, amelyeknél a privát kapcsolat szolgáltatás látható. A "*" PLS-t az összes al számára elérhetővé teheti (legkevésbé korlátozó). |
Választható | Csak a szerepköralapú hozzáférés-vezérlést jelző üres lista [] : Ez a privát kapcsolati szolgáltatás csak a szerepköralapú hozzáférés-vezérlési engedélyekkel rendelkező személyek számára lesz elérhető a címtárban. (Legkorlátozóbb) |
service.beta.kubernetes.io/azure-pls-auto-approval |
"sub1 sub2 sub3 … subN" |
Az Azure-előfizetés-azonosítók szóközzel elválasztott listája. Ez lehetővé teszi, hogy a PE-kapcsolatkérések automatikusan jóváhagyva legyenek a PLS-nek felsorolt előfizetésekből. Ez csak akkor működik, ha a láthatóság "*" értékre van állítva. | Választható | [] |
Az AKS-fürt létrehozásakor speciális hálózati beállításokat adhat meg. Ezek a beállítások lehetővé teszik a fürt üzembe helyezését egy meglévő Azure-beli virtuális hálózaton és alhálózatokon. Üzembe helyezheti például az AKS-fürtöt egy, a helyszíni környezethez csatlakoztatott magánhálózaton, és futtathat olyan szolgáltatásokat, amelyek csak belsőleg érhetők el.
További információ: saját virtuális hálózati alhálózatok konfigurálása a Kubenettel vagy az Azure CNI-vel.
Az AKS-fürtön magánhálózatot használó belső terheléselosztó üzembe helyezéséhez nem kell módosítania az előző lépéseket. A terheléselosztó ugyanabban az erőforráscsoportban jön létre, mint az AKS-fürt, de ehelyett a magánhálózathoz és az alhálózathoz csatlakozik, ahogyan az alábbi példában látható:
$ kubectl get service internal-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
internal-app LoadBalancer 10.1.15.188 10.0.0.35 80:31669/TCP 1m
Megjegyzés
Az AKS-fürt által használt fürtidentitásnak legalább hálózati közreműködői szerepkörrel kell rendelkeznie a virtuális hálózati erőforráson. A fürt identitását a az aks show
parancs használatával tekintheti meg, például az aks show --resource-group <resource-group-name> --name <cluster-name> --query "identity"
. A hálózati közreműködői szerepkört az role assignment create
a paranccsal rendelheti hozzá, például az role assignment create --assignee <identity-resource-id> --scope <virtual-network-resource-id> --role "Network Contributor"
.
Ha ehelyett egyéni szerepkört szeretne definiálni, a következő engedélyekre van szüksége:
Microsoft.Network/virtualNetworks/subnets/join/action
Microsoft.Network/virtualNetworks/subnets/read
További információ: Virtuális hálózati alhálózat hozzáadása, módosítása vagy törlése.
Adja hozzá a
azure-load-balancer-internal-subnet
megjegyzést a szolgáltatáshoz a terheléselosztó alhálózatának megadásához. A megadott alhálózatnak ugyanabban a virtuális hálózaton kell lennie, mint az AKS-fürtnek. Üzembe helyezéskor a terheléselosztóEXTERNAL-IP
címe a megadott alhálózat része.apiVersion: v1 kind: Service metadata: name: internal-app annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" service.beta.kubernetes.io/azure-load-balancer-internal-subnet: "apps-subnet" spec: type: LoadBalancer ports: - port: 80 selector: app: internal-app
A terheléselosztó az összes szolgáltatás törlésekor törlődik.
Bármely Kubernetes-erőforráshoz hasonlóan közvetlenül is törölhet egy szolgáltatást, például kubectl delete service internal-app
a mögöttes Azure-terheléselosztót is.
A Kubernetes-szolgáltatásokkal kapcsolatos további információkért tekintse meg a Kubernetes-szolgáltatások dokumentációját.
Azure Kubernetes Service-visszajelzés
A(z) Azure Kubernetes Service egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást: