Kubernetes and Private Cloud
Onde no admin: Kubernetes: Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS) (
/infra/cloudstack?tab=k8s), depois Services › Kubernetes (Overview, Clusters, Versions, Policy). Private Cloud: Services › Private Cloud (Overview/vpc, VPC/vpc/list, Plans & pricing/vpc/plans). Ative ambos os módulos em System › Admin › License & updates.
O que faz
- Kubernetes. Os clientes criam clusters Kubernetes gerenciados no seu CloudStack com o CloudStack Kubernetes Service (CKS). O plano de controle é gratuito; os clientes pagam pelos nós de worker. O NexCMP cria uma rede separada e um IP público para cada cluster, mantendo os clusters de cada cliente isolados.
- Private Cloud. Os clientes obtêm uma rede privada (uma CloudStack VPC) com um roteador, sub-redes (tiers), regras de firewall (network ACLs) e máquinas virtuais dentro dela. É vendido por plano de largura de banda com velocidade dedicada e ilimitada (por exemplo, 50, 100, 500 Mbps, 1 e 3 Gbps). Cada cliente pode ter uma VPC por padrão.
Ambos são baseados em CloudStack e usam sua API através da mesma conexão.
Requisitos
Kubernetes
| Item | Requisito |
|---|---|
| CloudStack | 4.23 (testado). O CKS deve estar enabled (cloud.kubernetes.service.enabled = true). |
| Conta | Uma conta Domain Admin no domínio dedicado, para que o NexCMP possa criar um projeto CloudStack para cada cliente e os limites de recursos dentro dele. Consulte CloudStack. |
endpoint.url | A configuração global do CloudStack deve apontar para a sua API de gerenciamento, acessível a partir das VMs do cluster. O NexCMP exibe o valor e o resultado de uma verificação de endpoint. |
| Versões | Pelo menos uma entrada de versão suportada do Kubernetes com sua ISO de binários, no estado Enabled. Versões que ultrapassaram o fim de vida útil não podem ser colocadas à venda. |
| Oferta de plano de controle | Uma oferta de serviço gratuita com exatamente 2 vCPU, 2048 MB RAM e um limite de CPU (limitcpuuse = true), visível para a conta. O servidor rejeita qualquer outra coisa com cp_offering_invalid. |
| Rede | Uma oferta de rede isolada compatível com CKS que esteja habilitada. |
| IPs | Endereços IPv4 públicos gratuitos no intervalo comercializável; cada cluster usa um. |
| Capacidade | Cada cluster custa de 2 a 4 GB de RAM para o plano de controle e uma pequena VM de roteador. Fique de olho nas abas de capacidade. |
Private Cloud
| Item | Requisito |
|---|---|
| CloudStack | 4.23 (testado) com VPC habilitado. |
| Oferta de VPC | Uma oferta de VPC. Uma oferta de pilha dupla (dual-stack) também fornece a cada camada um IPv6 /64. |
| Ofertas de rede de camadas | Uma oferta de rede por plano de largura de banda, criada para VPC, com a taxa de rede (Mbps) igual à do plano, mais uma oferta bloqueada de 1 Mbps que é aplicada quando uma VPC é bloqueada por falta de pagamento. |
| Conta | A conta dedicada (Domain Admin recomendado). As redes VPC ficam na conta, não nos projetos. |
| IPs | Endereços IPv4 públicos gratuitos (cada VPC usa um para NAT de origem). |
| Espaço de endereçamento | Cada VPC recebe um /16 de 10.128.0.0/9. Mantenha esse intervalo sem uso em suas próprias redes. |
| Depende de | CloudStack conectado; o módulo Private Cloud. |
Preparar a infraestrutura
Kubernetes: habilitar CKS e adicionar versões
Habilite o serviço e defina o endpoint, em seguida reinicie o servidor de gerenciamento:
bashcmk update configuration name=cloud.kubernetes.service.enabled value=true cmk update configuration name=endpoint.url value=https://cloudstack.example.com/client/api sudo systemctl restart cloudstack-managementendpoint.urlé chamado de volta pelo controlador do cluster, portanto, deve ser um endereço que as VMs do cluster possam alcançar.Compile uma ISO de binários do Kubernetes para a versão que você deseja vender, com o script
create-kubernetes-binaries-iso.shda árvore de código-fonte do CloudStack, hospede-a em um servidor web e registre-a:bashcmk add kubernetessupportedversion name="Kubernetes 1.35.0" semanticversion=1.35.0 \ url=https://files.example.com/setup-v1.35.0-calico-amd64.iso zoneid=<zone-id> \ mincpunumber=2 minmemory=2048 cmk list kubernetessupportedversions filter=name,semanticversion,state,isostateAguarde até que o estado da ISO se torne Ready e a versão fique como Enabled.
Crie a oferta de plano de controle, limitada ao domínio do NexCMP:
bashcmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \ cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid=<domain-id>Verifique se uma oferta de rede CKS está habilitada:
bashcmk list networkofferings state=Enabled forvpc=false filter=id,name
Private Cloud: criar as ofertas
Na interface do CloudStack (Service Offerings › Network Offerings › Add network offering) ou com cmk:
Liste o que você tem:
bashcmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,stateUse uma oferta de VPC habilitada (dupla pilha se quiser IPv6). Se precisar de uma nova, klone a oferta de VPC padrão do CloudStack e habilite-a.
Para cada plano de largura de banda que você vende, crie uma oferta de rede para VPC (klone a "isolated network offering for VPC networks" padrão) e defina Network rate (Mb/s) para a velocidade do plano:
50,100,500,1000,3000. Habilite cada oferta.Crie mais uma oferta com taxa de rede 1 (
VPC-LOCKED-1M) para VPCs bloqueadas: os clientes ainda podem acessar seus servidores via SSH, mas a velocidade é limitada.Anote o UUID de cada offering. O NexCMP precisa deles na próxima seção.
Os offering IDs fornecidos não existem na sua nuvem
O formulário do Private Cloud vem pré-preenchido com UUIDs de offering que pertencem a outra instalação do CloudStack. Substitua cada um pelos seus próprios, ou o primeiro pedido de VPC falhará.
Conectar no NexCMP
Kubernetes
Abra Infrastructure › Cloud provider › CloudStack e escolha a aba Kubernetes (CKS). O card à direita CKS status on CloudStack (read-only) mostra
kubernetesserviceenabled,endpoint.urlcom Endpoint check, a offering de rede do CKS, as configurações decloud.kubernetes.*e a lista de ISOs e versões. Clique em Recheck após corrigir algo.Em Sales config, escolha o Control plane Offering (um aviso aparece se não for exatamente 2 vCPU / 2048 MB / CPU cap), defina Max workers per cluster (1 a 9: o CKS permite 10 nós incluindo o nó de controle), ative Enable CKS for this backend e clique em Save. O botão se mantém desativado até que uma offering seja escolhida.

Abra Services › Kubernetes › Versions e clique em Sync from CloudStack. Ative Available for new clusters para as versões que você vende, defina a padrão e, se desejar, uma data de End of life (EOL).
Abra Services › Kubernetes › Policy. Em Worker plans, adicione planos com um Plan code (A-Z, 0-9, hífen, até 16 caracteres). Defina NVMe per worker (GB), Min and max workers e os limites do cluster (clusters ativos por conta, criações por 24 horas, limite global, operações CKS concorrentes). Em seguida, ative Sell Kubernetes (CKS). Pelo menos um plano deve permanecer à venda.

Private Cloud
Abra Services › Private Cloud (Visão geral). No cartão de política, substitua VPC offering e Locked offering tier pelos seus próprios UUIDs. Verifique os limites (VPCs por conta, camadas, VMs e regras de ACL por VPC, saldo em horas da taxa do plano necessário para criar, alterações de plano por 24 horas, operações concorrentes onde 0 é uma parada de emergência) e os servidores DNS. Clique em Save (será solicitado um motivo).

Abra Services › Private Cloud › Plans & pricing. Para cada plano, clique em Edit e defina VND price per month, On sale e o UUID de CloudStack tier offering cuja taxa de rede corresponda aos Mbps do plano. A linha exibe o custo e o lucro no uso total, permitindo ver quais planos estão abaixo do seu custo.

Ative Sell Private Cloud. Para testar primeiro, adicione IDs de contas de teste em Beta accounts: essas contas podem usar o serviço enquanto o botão de vendas estiver desativado.
Verificar
- Kubernetes: o cartão de status mostra
kubernetesserviceenabled: true, uma verificação de endpoint bem-sucedida e uma versão habilitada. Crie um cluster de teste com um worker como cliente; ele deve atingir o estado de execução ekubectl get nodesdeve exibi-lo como pronto. Exclua-o depois: a rede e o IP retornam ao pool. - Private Cloud: crie uma VPC com o menor plano como cliente de teste. A VPC exibe o status ativa, uma camada obtém sua sub-rede, uma VM na camada alcança a Internet através do roteador da VPC, e Change plan para um plano maior entra em vigor em cerca de 20 segundos sem derrubar conexões.
Limites e observações
- Kubernetes: os workers são faturados como VMs aos preços dos planos e contam como VMs nos limites de VM. Um cluster pode ter no máximo 9 workers devido ao limite de CKS de 10 nós.
- Kubernetes: o plano de controle, o roteador e o IP público de um cluster são gratuitos para o cliente; você arca com os custos deles.
- Private Cloud: todos os planos são não metrificados. Os preços no formulário são em dong vietnamita por mês; a coluna de custo usa um preço de referência que não é o seu, portanto, use seus próprios números.
- Uma VPC bloqueada é limitada a 1 Mbps, não é faturada e não é excluída automaticamente.
- Private Cloud usa um roteador por VPC, e não um par redundante. Se o host dele falhar, o CloudStack o reconstrói em poucos minutos.
Resolução de problemas
| Sintoma | Causa | Correção |
|---|---|---|
cp_offering_invalid / "Esta Offering não é 2 vCPU / 2048 MB / limitcpuuse" | A oferta do plano de controle tem outros tamanhos ou nenhum limite de CPU | Crie a oferta conforme a etapa 3 e selecione-a novamente. |
| O botão Enable CKS está desativado | Nenhuma oferta de plano de controle foi selecionada | Selecione uma primeiro. |
kubernetesserviceenabled: false | O CKS está desativado no CloudStack | Ative-o e reinicie o servidor de gerenciamento. |
| A verificação do endpoint falhou | endpoint.url não é acessível a partir das VMs do cluster | Defina uma URL acessível, reinicie o servidor de gerenciamento e clique em Recheck. |
| "EOL: não é possível habilitar para venda" | A data de fim de vida útil (EOL) da versão já passou | Registre uma versão mais recente. |
| "Sem versões: clique em Sync from CloudStack" | Nenhuma versão do Kubernetes registrada | Registre uma versão e faça a sincronização. |
| "O backend do CKS está DESLIGADO: os clientes não podem criar clusters, mesmo se a opção de vendas estiver ativada" | A opção de vendas está ativada, mas o backend do CKS está desligado | Ative o CKS na aba CloudStack. |
| "Pelo menos 1 plano deve estar à venda" | O último plano de worker foi removido | Mantenha pelo menos um plano ou desative as vendas do Kubernetes. |
| Cluster travado na criação | Capacidade insuficiente ou ISO ausente | Verifique as abas de capacidade e o estado da ISO da versão. |
| Uma nova VPC falha na primeira etapa | O ID da offering da VPC ou tier offering não é válido | Substitua cada UUID de offering por um do seu CloudStack. |
| "cs_offering_id deve ser um UUID" | Um ID de offering não é um UUID | Cole o id de cmk list networkofferings. |
| A alteração de plano falhou | A nova tier offering não existe ou a taxa de rede está incorreta | Verifique o UUID da offering e sua taxa de rede. |