Implantações completas do Kubernetes no AKS Edge Essentials
Atenção
A implantação completa em várias máquinas é atualmente um recurso experimental. Estamos trabalhando ativamente nesse recurso.
Você pode configurar um cluster do AKS Edge Essentials para ser executado em várias máquinas para suportar uma arquitetura de microsserviços distribuídos. O AKS Edge Essentials destina-se a configurações estáticas e não permite a criação/eliminação de VM dinâmica nem a gestão do ciclo de vida do cluster, ao contrário do AKS na nuvem ou do AKS HCI. O AKS Edge Essentials tem apenas uma VM Linux por máquina, juntamente com uma VM Windows, se necessário. Cada VM tem uma alocação estática de RAM, armazenamento e núcleos físicos de CPU atribuídos no momento da instalação. Em uma implantação de vários nós, uma das máquinas é a máquina primária com nó de controle do Kubernetes, e as outras máquinas serão máquinas secundárias com os nós de trabalho. Neste cenário de implantação, configuraremos o cluster K8S usando um switch externo. Com essa configuração, você pode executar kubectl
a partir de outra máquina na rede, avaliar o desempenho da carga de trabalho em um switch externo e assim por diante.
Pré-requisitos
Configure sua máquina conforme descrito no artigo Configurar máquina .
Etapa 1: parâmetros completos de configuração de implantação do Kubernetes
Você pode gerar os parâmetros necessários para criar um cluster escalável usando o seguinte comando:
New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null
Este comando cria um arquivo de configuração chamado aksedge-config.json, que inclui a configuração necessária para criar um cluster escalável com um nó Linux. O arquivo é criado em seu diretório de trabalho atual. Consulte Configuração JSON de implantação para obter descrições detalhadas dos parâmetros de configuração (como configurações de proxy).
Consulte os exemplos a seguir para obter mais opções para criar o arquivo de configuração.
Os principais parâmetros a serem observados para uma implantação escalável do Kubernetes são:
Informações do comutador externo: uma implantação completa usa um comutador externo para habilitar a comunicação entre os nós. Você deve especificar o
MachineConfigType.NetworkConnection.AdapterName
parâmetro como um ouWi-Fi
Ethernet
:# get the list of available adapters in the machine Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
Se você criou um comutador externo no Hyper-V, pode optar por especificar os detalhes do vswitch no arquivo de configuração. Se você não criar um comutador externo no gerenciador do Hyper-V e executar o comando, o
New-AksEdgeDeployment
AKS Edge Essentials criará automaticamente um comutador externo chamadoaksedgesw-ext
e o usará para sua implantação.Nota
Nesta versão, há um problema conhecido com a criação automática de um switch externo com o
New-AksEdgeDeployment
comando se você estiver usando um adaptador Wi-Fi para o switch. Nesse caso, primeiro crie o comutador externo usando o gerenciador Hyper-V - Virtual Switch Manager, mapeie o switch para o adaptador Wi-fi e, em seguida, forneça os detalhes do switch em seu JSON de configuração, conforme descrito abaixo.Endereços IP: Você deve alocar endereços IP livres da sua rede para o Plano de Controle, serviços Kubernetes e Nós (VMs). Consulte a visão geral da rede AKS Edge Essentials para obter mais detalhes. Por exemplo, em uma rede local com o intervalo de endereços IP 192.168.1.0/24, você pode ter 1.151 e superior fora do escopo DHCP e, portanto, é provável que seja gratuito. Atualmente, o AKS Edge Essentials suporta apenas endereços IPv4. Idealmente, você saberá quais endereços IP gratuitos você pode usar; no entanto, você pode usar o script AksEdge-ListUsedIPv4s do repositório GitHub para exibir IPs que estão atualmente em uso, para evitar o uso desses endereços IP em sua configuração. Os seguintes parâmetros precisarão ser fornecidos na
Network
seção do arquivo de configuração:ControlPlaneEndpointIp
,Ip4GatewayAddress
,Ip4PrefixLength
,ServiceIPRangeSize
,ServiceIPRangeStart
, eDnsServers
.
Importante
O Kubernetes pod cidr
é 10.42.0.0/16
para K3s e 10.244.0.0/24
para K8s. O Kubernetes service cidr
é 10.43.0.0/16
para K3s e 10.96.0.0/12
para K8s.
- O
Network.NetworkPlugin
valor por padrão éflannel
. Flannel é a CNI padrão para um cluster K3S. Em um cluster K8S, altere oNetworkPlugin
paracalico
. - Além dos parâmetros anteriores, você pode definir os seguintes parâmetros de acordo com sua configuração de implantação, conforme descrito aqui:
LinuxNode.CpuCount
,LinuxNode.MemoryInMB
,LinuxNode.DataSizeInGB
,LinuxNode.Ip4Address
,WindowsNode.CpuCount
,WindowsNode.MemoryInMB
,WindowsNode.Ip4Address
, eInit.ServiceIPRangeSize
Network.InternetDisabled
.
Etapa 2: validar o arquivo de configuração
Depois de atualizar o arquivo aksedge-config.json , execute a ferramenta AksEdgePrompt. Essa ferramenta abre uma janela elevada do PowerShell com os módulos carregados. Em seguida, execute o seguinte comando para validar os parâmetros de rede usando o Test-AksEdgeNetworkParameters
cmdlet:
Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json
Etapa 3: criar um cluster de implantação completo
Se Test-AksEdgeNetworkParameters
retornar true
, você estará pronto para criar sua implantação. Você pode criar a implantação usando o New-AksEdgeDeployment
cmdlet:
New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
O New-AksEdgeDeployment
cmdlet recupera automaticamente o arquivo kubeconfig.
Etapa 4: validar sua implantação
kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide
Uma captura de tela de um cluster Kubernetes é mostrada abaixo:
Etapa 5: adicionar um nó de trabalho do Windows (opcional)
Atenção
Os nós de trabalho do Windows são um recurso experimental nesta versão. Estamos trabalhando ativamente nesse recurso.
Se você quiser adicionar um nó do Windows a uma máquina somente Linux existente, você pode executar:
New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null
Você também pode especificar parâmetros como CpuCount
e/ou MemoryInMB
para sua VM do Windows aqui.
Você pode usar o arquivo de configuração gerado e executar o seguinte comando para adicionar o nó do Windows
Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json
Exemplo de configuração para diferentes opções de implantação
Alocar recursos para seus nós
Para se conectar ao Arc e implantar seus aplicativos com o GitOps, aloque quatro CPUs ou mais para o (poder de processamento), 4 GB ou mais para LinuxNode.MemoryinMB
(RAM) e atribua LinuxNode.CpuCount
um número maior que 0 ao ServiceIpRangeSize
. Aqui, alocamos 10 endereços IP para seus serviços 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"
}
}
]
}
Criar nós Linux e Windows
Para executar o plano de controle do Linux e o nó de trabalho do Windows em uma máquina, crie o arquivo de configuração usando o seguinte comando:
New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null
Crie a implantação usando o 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"
}
}
]
}