Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktig
Ansible 2.8 (eller senare) krävs för att köra exempelspelböckerna i den här artikeln.
Azure Kubernetes Service (AKS) gör det enkelt att distribuera ett hanterat Kubernetes-kluster i Azure. AKS minskar komplexiteten och driftkostnaderna för att hantera Kubernetes genom att avlasta en stor del av det ansvaret till Azure. Som värdbaserad Kubernetes-tjänst hanterar Azure viktiga uppgifter som hälsoövervakning och underhåll åt dig. Kubernetes-huvudservrarna hanteras av Azure. Du hanterar och underhåller bara agentnoderna. Som en hanterad Kubernetes-tjänst är AKS kostnadsfri – du betalar bara för agentnoderna i dina kluster. inte för mästarna.
Med hjälp av AKS kan du distribuera ett kluster med hjälp av följande nätverksmodeller:
- Azure CNI-nätverk – AKS-klustret är anslutet till befintliga virtuella nätverksresurser (VNET) och konfigurationer.
Mer information om nätverk till dina program i AKS finns i Nätverksbegrepp för program i AKS.
I den här artikeln lär du dig att:
- Skapa ett AKS-kluster
- Konfigurera Azure CNI-nätverk
Förutsättningar
- Azure-prenumeration: Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
- Azure-tjänstens huvudnamn: Skapa ett huvudnamn för tjänstenoch anteckna följande värden: appId, displayName, lösenordoch klientorganisation.
Installera Ansible: Gör något av följande:
- Installera och konfigurera Ansible på en virtuell Linux-dator
- Konfigurera Azure Cloud Shell och – om du inte har åtkomst till en virtuell Linux-dator – skapa en virtuell dator med Ansible.
Skapa ett virtuellt nätverk och undernät
Exempelspelbokskoden i det här avsnittet används för att:
- Skapa ett virtuellt nätverk
- Skapa ett undernät i det virtuella nätverket
Spara följande spelbok som vnet.yml:
- 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
Skapa ett AKS-kluster i det virtuella nätverket
Exempelspelbokskoden i det här avsnittet används för att:
- Skapa ett AKS-kluster i ett virtuellt nätverk.
Spara följande spelbok som aks.yml:
- 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
Här följer några viktiga kommentarer att tänka på när du arbetar med exempelspelboken:
Använd modulen
azure_rm_aks_versionför att hitta den version som stöds.vnet_subnet_idär det undernät som skapades i föregående avsnitt.Spelboken läser in
ssh_keyfrån~/.ssh/id_rsa.pub. Om du ändrar det använder du enkelradsformatet – från och med "ssh-rsa" (utan citattecken).Värdena
client_idochclient_secretläses in från~/.azure/credentials, som är standardfilen för autentiseringsuppgifter. Du kan ange dessa värden till tjänstens huvudnamn eller läsa in dessa värden från miljövariabler:client_id: "{{ lookup('env', 'AZURE_CLIENT_ID') }}" client_secret: "{{ lookup('env', 'AZURE_SECRET') }}"
Kör exempelspelboken
Exempelspelbokskoden i det här avsnittet används för att testa olika funktioner som visas i denna handledning.
Spara följande spelbok som aks-azure-cni.yml:
---
- 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
Här följer några viktiga kommentarer att tänka på när du arbetar med exempelspelboken:
- Ändra värdet på
aksansibletesttill namnet på din resursgrupp. - Ändra
aksansibletest-värdet till ditt AKS-namn. - Ändra värdet för
eastustill resursgruppens region.
Kör spelboken med kommandot ansible-playbook:
ansible-playbook aks-azure-cni.yml
När du har kört spelboken visas utdata som liknar följande resultat:
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
Rensa resurser
Spara följande kod som
delete_rg.yml.--- - hosts: localhost tasks: - name: Deleting resource group - "{{ name }}" azure_rm_resourcegroup: name: "{{ name }}" state: absent register: rg - debug: var: rgKör spelboken med kommandot ansible-playbook. Ersätt platshållaren med namnet på den resursgrupp som ska tas bort. Alla resurser i resursgruppen tas bort.
ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"Viktiga punkter:
- På grund av
registervariabeln ochdebugavsnittet i spelboken visas resultatet när kommandot har slutförts.
- På grund av