Oktatóanyag: Az Azure CNI hálózatkezelésének konfigurálása az Azure Kubernetes Service-ben (AKS) az Ansible használatával
Fontos
Az Ansible 2.8 (vagy újabb) szükséges a jelen cikkben szereplő minta forgatókönyvek futtatásához.
Az Azure Kubernetes Service (AKS) egyszerűvé teszi egy felügyelt Kubernetes-fürt üzembe helyezését az Azure-ban. Az AKS egyszerűsíti a Kubernetes kezelését és csökkenti annak működési munkaterhelését azáltal, hogy a felelősség nagy részét az Azure-ra helyezi át. Üzemeltetett Kubernetes-szolgáltatásként az Azure olyan fontos műveleteket bonyolít le, mint az állapotmonitorozás és a karbantartás. A Kubernetes fő csomópontokat az Azure felügyeli. Ön csak az ügynökcsomópontokat felügyeli és tartja karban. Felügyelt Kubernetes-szolgáltatásként az AKS ingyenes – csak a fürtök ügynökcsomópontjaiért kell fizetnie; nem a mesterek számára.
Az AKS használatával üzembe helyezhet egy fürtöt a következő hálózati modellek használatával:
- Kubenet-hálózatkezelés – A hálózati erőforrások általában az AKS-fürt üzembe helyezésekor jönnek létre és vannak konfigurálva.
- Azure CNI-hálózatkezelés – Az AKS-fürt a meglévő virtuális hálózati (VNET-) erőforrásokhoz és konfigurációkhoz csatlakozik.
Az alkalmazások AKS-ben történő hálózatkezeléséről további információt az AKS-ben található alkalmazások hálózati fogalmai című témakörben talál.
Ebben a cikkben az alábbiakkal ismerkedhet meg:
- AKS-fürt létrehozása
- Az Azure CNI hálózatkezelésének konfigurálása
Előfeltételek
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, első lépésként mindössze néhány perc alatt létrehozhat egy ingyenes fiókot.
- Azure-szolgáltatásnév: Hozzon létre egy egyszerű szolgáltatást, és jegyezze fel a következő értékeket: appId, displayName, password és tenant.
Az Ansible telepítése: Válasszon az alábbi lehetőségek közül:
- Az Ansible telepítése és konfigurálása Linux rendszerű virtuális gépen
- Konfigurálja az Azure Cloud Shellt , és – ha nincs hozzáférése Linux rendszerű virtuális géphez – hozzon létre egy virtuális gépet az Ansible használatával.
Virtuális hálózat és alhálózat létrehozása
Az ebben a szakaszban található minta forgatókönyv-kód a következőre szolgál:
- Virtuális hálózat létrehozása
- Alhálózat létrehozása a virtuális hálózaton belül
Mentse a következő forgatókönyvet vnet.yml
néven:
- name: Create vnet
azure_rm_virtualnetwork:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
address_prefixes_cidr:
- 10.0.0.0/8
- name: Create subnet
azure_rm_subnet:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
address_prefix_cidr: 10.240.0.0/16
virtual_network_name: "{{ name }}"
register: subnet
AKS-fürt létrehozása a virtuális hálózaton
Az ebben a szakaszban található minta forgatókönyv-kód a következőre szolgál:
- Hozzon létre egy AKS-fürtöt egy virtuális hálózaton belül.
Mentse a következő forgatókönyvet aks.yml
néven:
- name: List supported kubernetes version from Azure
azure_rm_aks_version:
location: "{{ location }}"
register: versions
- name: Create AKS cluster within a VNet
azure_rm_aks:
resource_group: "{{ resource_group }}"
name: "{{ name }}"
dns_prefix: "{{ name }}"
kubernetes_version: "{{ versions.azure_aks_versions[-1] }}"
agent_pool_profiles:
- count: 3
name: nodepool1
vm_size: Standard_D2_v2
vnet_subnet_id: "{{ vnet_subnet_id }}"
linux_profile:
admin_username: azureuser
ssh_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
service_principal:
client_id: "{{ lookup('ini', 'client_id section=default file=~/.azure/credentials') }}"
client_secret: "{{ lookup('ini', 'secret section=default file=~/.azure/credentials') }}"
network_profile:
network_plugin: azure
docker_bridge_cidr: 172.17.0.1/16
dns_service_ip: 10.2.0.10
service_cidr: 10.2.0.0/24
register: aks
Az alábbiakban néhány fontos megjegyzést érdemes figyelembe venni a minta forgatókönyv használatakor:
A modul használatával
azure_rm_aks_version
keresse meg a támogatott verziót.Ez
vnet_subnet_id
az előző szakaszban létrehozott alhálózat.A forgatókönyv betöltődik
ssh_key
innen~/.ssh/id_rsa.pub
: . Ha módosítja, használja az egysoros formátumot – kezdve az "ssh-rsa" formátummal (idézőjelek nélkül).A
client_id
rendszer betölti azclient_secret
értékeket az alapértelmezett hitelesítőadat-fájlból~/.azure/credentials
. Ezeket az értékeket beállíthatja a szolgáltatásnévre, vagy betöltheti ezeket az értékeket a környezeti változókból:client_id: "{{ lookup('env', 'AZURE_CLIENT_ID') }}" client_secret: "{{ lookup('env', 'AZURE_SECRET') }}"
A minta forgatókönyv futtatása
Az ebben a szakaszban található minta forgatókönyv-kód az oktatóanyag során bemutatott különböző funkciók tesztelésére szolgál.
Mentse a következő forgatókönyvet aks-azure-cni.yml
néven:
---
- hosts: localhost
vars:
resource_group: aksansibletest
name: aksansibletest
location: eastus
tasks:
- name: Ensure resource group exists
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create vnet
include_tasks: vnet.yml
- name: Create AKS
vars:
vnet_subnet_id: "{{ subnet.state.id }}"
include_tasks: aks.yml
- name: Show AKS cluster detail
debug:
var: aks
Az alábbiakban néhány fontos megjegyzést érdemes figyelembe venni a minta forgatókönyv használatakor:
- Módosítsa az
aksansibletest
értéket az erőforráscsoport nevére. - Módosítsa az
aksansibletest
értéket az AKS-névre. - Módosítsa az értéket az
eastus
erőforráscsoport helyére.
Futtassa a forgatókönyvet az ansible-playbook paranccsal:
ansible-playbook aks-azure-cni.yml
A forgatókönyv futtatása után a következő eredményekhez hasonló kimenet jelenik meg:
PLAY [localhost]
TASK [Gathering Facts]
ok: [localhost]
TASK [Ensure resource group exists]
changed: [localhost]
TASK [Create vnet]
included: /home/devops/aks-cni/vnet.yml for localhost
TASK [Create vnet]
changed: [localhost]
TASK [Create subnet]
changed: [localhost]
TASK [Create AKS]
included: /home/devops/aks-cni/aks.yml for localhost
TASK [List supported kubernetes version from Azure]
[WARNING]: Azure API profile latest does not define an entry for
ContainerServiceClient
ok: [localhost]
TASK [Create AKS cluster with vnet]
changed: [localhost]
TASK [Show AKS cluster detail]
ok: [localhost] => {
"aks": {
"aad_profile": {},
"addon": {},
"agent_pool_profiles": [
{
"count": 3,
"name": "nodepool1",
"os_disk_size_gb": 100,
"os_type": "Linux",
"storage_profile": "ManagedDisks",
"vm_size": "Standard_D2_v2",
"vnet_subnet_id": "/subscriptions/BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB/resourceGroups/aksansibletest/providers/Microsoft.Network/virtualNetworks/aksansibletest/subnets/aksansibletest"
}
],
"changed": true,
"dns_prefix": "aksansibletest",
"enable_rbac": false,
"failed": false,
"fqdn": "aksansibletest-0272707d.hcp.eastus.azmk8s.io",
"id": "/subscriptions/BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB/resourcegroups/aksansibletest/providers/Microsoft.ContainerService/managedClusters/aksansibletest",
"kube_config": "..."
},
"location": "eastus",
"name": "aksansibletest",
"network_profile": {
"dns_service_ip": "10.2.0.10",
"docker_bridge_cidr": "172.17.0.1/16",
"network_plugin": "azure",
"network_policy": null,
"pod_cidr": null,
"service_cidr": "10.2.0.0/24"
},
"node_resource_group": "MC_aksansibletest_aksansibletest_eastus",
"provisioning_state": "Succeeded",
"service_principal_profile": {
"client_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
},
"tags": null,
"type": "Microsoft.ContainerService/ManagedClusters",
"warnings": [
"Azure API profile latest does not define an entry for ContainerServiceClient",
"Azure API profile latest does not define an entry for ContainerServiceClient"
]
}
}
PLAY RECAP
localhost : ok=9 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Clean up resources
Mentse a következő kódot.
delete_rg.yml
--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rg
Futtassa a forgatókönyvet az ansible-playbook paranccsal. Cserélje le a helyőrzőt a törölni kívánt erőforráscsoport nevére. Az erőforráscsoporton belüli összes erőforrás törlődik.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
Főbb pontok:
register
A forgatókönyv változója ésdebug
szakasza miatt az eredmények a parancs befejeződésekor jelennek meg.
További lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: