Distribuzioni Kubernetes complete in Azure Kubernetes Edge Essentials
Attenzione
La distribuzione completa in più computer è attualmente una funzionalità sperimentale. Stiamo lavorando attivamente a questa funzionalità.
È possibile configurare un cluster Azure Kubernetes Edge Essentials per l'esecuzione in più computer per supportare un'architettura di microservizi distribuiti. Azure Kubernetes Edge Essentials è destinato alle configurazioni statiche e non abilita la creazione/eliminazione dinamica della macchina virtuale o la gestione del ciclo di vita del cluster, a differenza del servizio Azure Kubernetes nel cloud o nel servizio Azure Kubernetes in locale di Azure. AKS Edge Essentials include una sola macchina virtuale Linux per ogni computer, insieme a una macchina virtuale Windows, se necessario. Ogni macchina virtuale ha un'allocazione statica di RAM, archiviazione e core CPU fisici assegnati in fase di installazione. In una distribuzione a più nodi, uno dei computer è il computer primario con il nodo di controllo Kubernetes e gli altri computer sono computer secondari con i nodi di lavoro. In questo scenario di distribuzione viene configurato il cluster K8S usando un commutatore esterno. Con questa configurazione, è possibile eseguire kubectl
da un altro computer in rete, valutare le prestazioni del carico di lavoro su un commutatore esterno e così via.
Prerequisiti
Configurare il computer come descritto nell'articolo Configurare il computer .
Passaggio 1: parametri di configurazione della distribuzione Kubernetes completi
È possibile generare i parametri necessari per creare un cluster scalabile usando il comando seguente:
New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null
Questo comando crea un file di configurazione denominato aksedge-config.json, che include la configurazione necessaria per creare un cluster scalabile con un nodo Linux. Il file viene creato nella directory di lavoro corrente. Per descrizioni dettagliate dei parametri di configurazione, ad esempio le impostazioni proxy, vedere Configurazione JSON della distribuzione.
Per altre opzioni per la creazione del file di configurazione, vedere gli esempi seguenti.
I parametri chiave da notare per una distribuzione kubernetes scalabile sono:
Informazioni sul commutatore esterno: una distribuzione completa usa un commutatore esterno per abilitare la comunicazione tra i nodi. È necessario specificare il
MachineConfigType.NetworkConnection.AdapterName
parametro comeEthernet
oWi-Fi
:# get the list of available adapters in the machine Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
Se hai creato un commutatore esterno nel tuo Hyper-V, puoi scegliere di specificare i dettagli del vSwitch nel file di configurazione. Se non si crea un commutatore esterno nella console di gestione di Hyper-V e si esegue il
New-AksEdgeDeployment
comando, AKS Edge Essentials crea automaticamente un commutatore esterno denominatoaksedgesw-ext
e lo usa per la distribuzione.Nota
In questa versione, si verifica un problema noto con la creazione automatica di un commutatore esterno con il
New-AksEdgeDeployment
comando se si usa una scheda Wi-Fi per il commutatore. In questo caso, crea prima lo switch esterno utilizzando il Gestore di switch virtuali Hyper-V, mappa lo switch all'adattatore Wi-fi e quindi specifica i dettagli dello switch nel tuo codice JSON di configurazione, come descritto in questa sezione.Indirizzi IP: è necessario allocare indirizzi IP gratuiti dalla rete per il piano di controllo, i servizi Kubernetes e i nodi (VM). Per altri dettagli, vedere panoramica della rete di Azure Kubernetes Edge Essentials. Ad esempio, in una rete locale con l'intervallo di indirizzi IP 192.168.1.0/24, potrebbe essere disponibile 1.151 e versioni successive all'esterno dell'ambito DHCP e pertanto è probabile che sia gratuito. Azure Kubernetes Edge Essentials supporta attualmente solo gli indirizzi IPv4. Idealmente, si sa quali indirizzi IP gratuiti è possibile usare; Tuttavia, è possibile usare lo script
AksEdge-ListUsedIPv4s dal repository GitHub per visualizzare gli indirizzi IP attualmente in uso, per evitare di usare tali indirizzi IP nella configurazione. I parametri seguenti devono essere specificati nella sezione Network
del file di configurazione:ControlPlaneEndpointIp
,Ip4GatewayAddress
,Ip4PrefixLength
,ServiceIPRangeSize
,ServiceIPRangeStart
eDnsServers
.
Importante
Kubernetes pod cidr
è 10.42.0.0/16
per K3s e 10.244.0.0/24
per K8s. Kubernetes service cidr
è 10.43.0.0/16
per K3s e 10.96.0.0/12
per K8s.
- Il
Network.NetworkPlugin
valore predefinito èflannel
. Flannel è l'interfaccia CNI predefinita per un cluster K3S. In un cluster K8S modificare inNetworkPlugin
calico
. - Oltre ai parametri precedenti, è possibile impostare i parametri seguenti in base alla configurazione della distribuzione, come descritto di seguito:
LinuxNode.CpuCount
,LinuxNode.MemoryInMB
LinuxNode.DataSizeInGB
LinuxNode.Ip4Address
WindowsNode.CpuCount
,WindowsNode.MemoryInMB
,WindowsNode.Ip4Address
, ,Init.ServiceIPRangeSize
e .Network.InternetDisabled
Passaggio 2: convalidare il file di configurazione
Dopo aver aggiornato il file aksedge-config.json , eseguire lo strumento AksEdgePrompt. Questo strumento apre una finestra di PowerShell con privilegi elevati con i moduli caricati. Eseguire quindi il comando seguente per convalidare i parametri di rete usando il Test-AksEdgeNetworkParameters
cmdlet :
Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json
Passaggio 3: Creare un cluster di distribuzione completo
Se Test-AksEdgeNetworkParameters
restituisce true
, si è pronti per creare la distribuzione. È possibile creare la distribuzione usando il New-AksEdgeDeployment
cmdlet :
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
Il New-AksEdgeDeployment
cmdlet recupera automaticamente il file kubeconfig.
Passaggio 4: Convalidare la distribuzione
kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide
Uno screenshot di un cluster Kubernetes è il seguente:
Passaggio 5: aggiungere un nodo di lavoro Di Windows (facoltativo)
Attenzione
I nodi di lavoro di Windows sono una funzionalità sperimentale in questa versione. Stiamo lavorando attivamente a questa funzionalità.
Se si vuole aggiungere un nodo Windows a un computer Linux solo esistente, è possibile eseguire:
New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null
È anche possibile specificare parametri come CpuCount
e/o MemoryInMB
per la macchina virtuale Windows qui.
È possibile usare il file di configurazione generato ed eseguire il comando seguente per aggiungere il nodo Windows
Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json
Configurazione di esempio per diverse opzioni di distribuzione
Allocare risorse ai nodi
Per connettersi ad Arc e distribuire le app con GitOps, allocare quattro CPU o più per ( LinuxNode.CpuCount
potenza di elaborazione), 4 GB o più per LinuxNode.MemoryinMB
(RAM) e assegnare un numero maggiore di 0 a ServiceIpRangeSize
. In questo caso vengono allocati 10 indirizzi IP per i servizi Kubernetes:
{
"Init": {
"ServiceIpRangeSize": 10,
"ServiceIPRangeStart": "192.168.1.151"
},
"Network": {
"ControlPlaneEndpointIp": "192.168.1.191",
"NetworkPlugin": "calico",
"Ip4GatewayAddress": "192.168.1.1",
"Ip4PrefixLength": 24,
"DnsServers": ["192.168.1.1"]
},
"Machines": [
{
"NetworkConnection": {
"AdapterName": "Ethernet"
},
"LinuxNode": {
"CpuCount": 4,
"MemoryInMB": 4096,
"DataSizeInGB": 20,
"Ip4Address": "192.168.1.171"
}
}
]
}
Creare nodi Linux e Windows
Per eseguire sia il piano di controllo Linux che il nodo del ruolo di lavoro Windows in un computer, creare il file di configurazione usando il comando seguente:
New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null
Creare la distribuzione mediante il comando :
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
{
"Machines": [
{
"NetworkConnection": {
"AdapterName": "Ethernet"
},
"LinuxNode": {
"CpuCount": 4,
"MemoryInMB": 4096,
"DataSizeInGB": 20,
"Ip4Address": "192.168.1.171"
},
"WindowsNode": {
"CpuCount": 2,
"MemoryInMB": 4096,
"Ip4Address": "192.168.1.172"
}
}
]
}