40 dias 14 atualizações de versão principais, prática de tecnologia de contêiner em larga escala por trás da conferência Tencent
https: // my.oschina.net/jxcdwangtao/blog/3197014
Devido ao impacto da epidemia da Nova Pneumonia Coronariana no Festival da Primavera, os aplicativos de escritório on-line rapidamente se tornaram populares.Como um produto de escritório on-line em nível empresarial, a Tencent Conference foi rapidamente reconhecida pelos usuários. Ao mesmo tempo em que o número de usuários está explodindo, a empresa também está atualizando iterativamente a alta velocidade, completando a atualização de 14 versões principais em 40 dias e organizando um caso clássico de pequenas etapas e iteração rápida. Este artigo começará da perspectiva do contêiner e mostrará como a conferência Tencent se baseia no TKE do serviço de contêiner em nuvem da Tencent.Com a capacidade de back-end atingindo 1 milhão de núcleos, a tecnologia nativa da nuvem por trás da rápida iteração da versão.
Como um produto essencial para produtos de nível empresarial, o Tencent Meeting tem requisitos muito altos de disponibilidade e estabilidade do produto.Qualquer serviço instável pode resultar na impossibilidade de o usuário acessar a reunião, interrupção da reunião ou má qualidade de áudio e vídeo, resultando em reclamações do usuário. Afetar a reputação do produto e reduzir a confiança do usuário.
Ao mesmo tempo, o número de usuários está explodindo, o que exige recursos de back-end para acompanhar o ritmo de crescimento do usuário em tempo real, o que tem requisitos muito altos para a pontualidade da expansão da capacidade. Além disso, no processo de operação do serviço, o produto terá inevitavelmente atualizações iterativas, como otimização de funções e correções de erros.Para torná-lo transparente para atualizar usuários, a plataforma é necessária para dar suporte eficiente e controlável ao lançamento e atualização de programas de negócios.
Soluções
Para atender aos requisitos do cenário de negócios acima, o Tencent Cloud Container Service ( TKE ) é usado para dar suporte às reuniões da Tencent. Com a ajuda dos recursos de roteamento dinâmico, rede fixa, escalabilidade elástica e atualização controlável da TKE , ele carrega perfeitamente a implantação e operação de serviços de alto crescimento durante o surto de conferências da Tencent, educação on-line e salas de aula aéreas. A arquitetura da plataforma de gerenciamento é a seguinte:
A plataforma de gerenciamento é baseada no serviço de implantação de cluster TKE, e algumas expansões de funções foram feitas com base nisso.A marca verde mostra os recursos realizados, a marca vermelha está em andamento e o cinza está planejado para ser implementado; o cluster TKE é baseado no Tencent Cloud CVM, CBS, CLB, VPC Com base nos recursos básicos, implante clusters k8s nativos da nuvem; por meio de operadores estendidos baseados em TKE, desde roteamento (CLB / L5 Controller), rede (Ipamd), gerenciamento de recursos (NodeResourceOversell, DynamicQuota), dimensionamento elástico (VPA, HPAPlus) A otimização de funções foi realizada em várias dimensões, o que tem apoiado bem a implantação e operação dos serviços auto-desenvolvidos da Tencent, como a Tencent Conference.
O modelo de implantação de negócios é o seguinte:
Os serviços aqui são implantados em três conjuntos de ambientes, correspondentes a três conjuntos de namespaces: teste, pré-lançamento e formal. Os serviços são implantados em vários modelos de microsserviços no espaço para nome. Cada conjunto de serviços inclui um conjunto de recursos de execução completos e independentes, como: carga de trabalho, serviço / entrada, configmap, segredo, pv / pvc, etc.
O nome completo do Tencent Cloud Container Service TKE em inglês é Tencent kubernetes Engine, conhecido como TKE , que visa fornecer aos usuários uma plataforma de gerenciamento de contêiner Kubernetes estável, segura, eficiente, flexível e fácil de usar. Baseado no kubernetes nativo, o TKE fornece um serviço de gerenciamento de contêiner, altamente escalável e de alto desempenho, centrado em contêiner. É totalmente compatível com a API nativa do kubernetes. Expande os plug-ins do kubernetes, como o disco rígido na nuvem do Tencent Cloud e balanceamento de carga, fornecendo implantação e Uma série de funções completas, como agendamento de recursos, descoberta de serviços e escala dinâmica, resolve os problemas de consistência ambiental do desenvolvimento, teste e operação e manutenção do usuário, aprimora a conveniência do gerenciamento de cluster de contêiner em larga escala e ajuda os usuários a reduzir custos e melhorar a eficiência.
Análise de solução específica
A seguir, será apresentado como o TKE do Tencent Cloud Container Service suporta a evolução dos negócios da Tencent Conference a partir de três aspectos de garantia de qualidade, eficiência e atualização controlável.
1. Garantia de qualidade
A estabilidade dos serviços de negócios determina diretamente a reputação do produto.Para garantir a qualidade do serviço das conferências e outros serviços da Tencent, a Tencent Cloud tomou medidas de garantia nas seguintes dimensões de roteamento dinâmico, detecção de anomalias, expansão paralela e migração de negócios:
1.1 Roteamento dinâmico
动态路由是基于腾讯自研的路由系统L5,通过在TKE集群内拓展service能力实现的L5-controller组件。L5-controller控制层面实现逻辑和通用controller类似,基本流程包括监听变更事件,触发回调,入队列;拉起worker,更新路由。
No entanto, para garantir a consistência do roteamento, os dois conjuntos de processos funcionais principal e auxiliar foram expandidos. Como mostrado na figura acima, os processos são marcados com setas laranja e verde, respectivamente. O processo principal garante a implementação efetiva e o processo auxiliar garante a consistência. Entre eles, o processo principal é acionado em tempo real ao ouvir eventos, e vários funcionários são executados simultaneamente para garantir a pontualidade das atualizações de roteamento e entrar em vigor em segundos. O processo auxiliar verifica em série o serviço no cluster, puxa os dados de configuração de roteamento correspondentes ao serviço e reconcilia os dados no sistema de roteamento L5, além de verificar se há lacunas.As configurações de roteamento que não estiverem no console central serão fortalecidas e consistentes. Detectado e substituído, eficaz no nível dos minutos. O nível de dados do controlador L5 pode garantir que as configurações de alteração entrem em vigor em segundos e a forte consistência seja implementada em minutos
1.2 Detecção de anomalias
Ofereça suporte à verificação de integridade do pod definido pelo usuário através dos seguintes recursos dos k8s nativos da nuvem, para garantir que o serviço seja isolado durante períodos anormais de tráfego
- livenessProbe: Sonda de verificação de sobrevivência
- readinessProbe: sonda de verificação de prontidão
- postStart: especifique a ação a ser executada antes de o pod ser puxado normalmente
- preStop: especifique a ação a ser executada antes da destruição do pod
- terminationGracePeriodSeconds: tempo de espera pela finalização do pod
Através do uso dos vários recursos funcionais acima, combinados aos recursos de roteamento dinâmico, é possível obter alta estabilidade dos serviços de negócios.
1.3 Expansão paralela
Em um cenário massivo de usuários da Internet, como a Tencent Conference, é muito necessário entender a sensibilidade da expansão.O crescimento explosivo do tráfego em um curto período de tempo exige que o ritmo de expansão de backend seja capaz de acompanhar.Portanto, a Tencent Cloud possui dois grandes HPA baseados em nuvem A capacidade de expansão, uma é a quantidade de simultaneidade, executa o processo de detecção de expansão de capacidade em um modo de alta simultaneidade, a alta simultaneidade detecta ativamente a alta carga do negócio e aciona a expansão da capacidade em tempo real de acordo com a situação real; a segunda é o ciclo de cálculo, dando suporte ao usuário para definir o ciclo de cálculo de detecção O mínimo pode até atingir o segundo nível.Quando o processo de detecção encontra uma carga alta durante o ciclo de cálculo, pode desencadear a expansão em tempo real.
1.4 Migração de negócios
A migração de negócios é realizada principalmente através dos três modos a seguir:
implantação de leme: modo nativo da nuvem, uma configuração, distribuição de vários clusters, a vantagem é eficiente e gerenciável, a desvantagem é que é fácil ser diferente da configuração de operação de rede existente, resultando em não necessariamente completamente utilizável, fortemente dependente das especificações de implantação
Empacotamento e cópia de namespace: empacote todos os ns da empresa e todos os recursos sob os ns, copie e implante-os em outro cluster, tanto quanto possível, para garantir o ambiente de execução e a restauração da configuração dos negócios, a operação de uma chave foi implementada no console central, rápida e eficiente
Empacotamento e reutilização do espaço para nome: semelhante ao processo acima, há otimização de função que suporta ajustes de configuração definidos pelo usuário para reduzir os custos de operação do usuário
2. Eficiência
Durante a nova epidemia da coroa, a Tencent Conference foi bem reconhecida pela maioria dos usuários, os usuários explodiram e a eficiência da implantação do serviço foi a principal capacidade.Para promover a capacidade da plataforma de se adaptar rapidamente ao ritmo de crescimento do usuário, a Tencent Cloud da automação de processos, CI / CD Esforços foram feitos no gerenciamento de autenticação e na expansão flexível:
2.1 Automação
A automação é principalmente para melhorar a eficiência do processo.Processos de implementação específicos, como: construção de novos clusters, expansão da capacidade do cluster, inicialização do ambiente, distribuição de componentes, contam com a API da Tencent Cloud, implementam automaticamente a criação do cluster, nó de adição de cluster; , Instalação de ferramentas, formatação do sistema de arquivos, distribuição de componentes e outros processos, todos contam com o empacotamento de scripts e a execução de ferramentas; a integração do processo e das ferramentas do console central é implementada por meio de canais de plataforma, como: execução em lote Script, instalação em lote, registrando o console após criar um novo cluster, etc.
2.2 CI / CD
Os negócios internos da Tencent implantados no cluster TKE basicamente abriram o processo de CI / CD e suportam a implantação tandem em vários ambientes de rede.As conferências da Tencent foram implementadas através do modelo de CI / CD existente e do modelo de orquestração de serviços nativos da nuvem. Pouso eficiente da iteração de desenvolvimento, implantação, teste, inicialização e versão
2.3 Gerenciamento de autenticação
O CMDB, como modelo de gerenciamento de relacionamento para produtos, módulos de negócios e IP, é amplamente usado e reutilizado em muitos cenários de negócios da empresa. A implementação do CMDB Controller é basicamente semelhante à lógica geral do controlador, que inclui o monitoramento de eventos de alteração de pod do apiserver, acionando trabalhadores e trabalhadores correspondentes para consultar informações de cluster com base em retornos de chamada de eventos, consultando informações sobre produtos relacionados ao pod e finalmente aterrando o relacionamento com o sistema de serviço CMDB.
A sincronização em tempo real do CMDB fornece uma boa função auxiliar para a implementação de muitas funções de expansão personalizadas, como o seguinte processo de aplicativo de autenticação:
Conforme mostrado no diagrama do processo, por meio do modo init-container, o CMDB comercial é rapidamente sincronizado com a terra e está vinculado à nuvem de tecelagem interna da Tencent, L5 e outros sistemas, que podem abrir efetivamente o canal de autenticação, o que sempre causou dor de cabeça aos negócios. Suporte à implantação de serviços de negócios.
2.4 Expansão e contração elásticas
Para atender às necessidades dos principais cenários de negócios, como reuniões da Tencent, além do recurso VPA nativo da nuvem, o Tencent Cloud foi expandido com base no HPA nativo da nuvem e o implementou no modo Operador, extraindo o módulo de função HPA separadamente para suportar configurações de recursos personalizados de negócios Os recursos de expansão específicos incluem indicadores multicanais, oferecem suporte à coleta de indicadores multicanais através do servidor Metrics, Promethus, monitoramento de negócios etc., melhor compatibilidade com cenários de negócios
; Implementação paralela; detecção paralela de vários trabalhos de indicadores de negócios; escalonamento elástico do gatilho em tempo real para garantir a pontualidade; personalizado; suporte aos usuários para personalizar o limite de expansão e contração, ciclo de cálculo, coeficiente elástico. A estrutura funcional do indicador multicanal é a seguinte:
3. Atualização controlável
Para os usuários, a conferência Tencent é um cenário importante para solucionar a dificuldade de comunicação direta entre os usuários.Para proporcionar uma melhor experiência ao usuário, haverá mais ou menos iterações de otimização de função e correções de bugs durante a operação do produto. Sob o modelo nativo da nuvem, como garantir a confiabilidade e o controle das atualizações é particularmente importante. Com base nos recursos nativos da nuvem, o Tencent Cloud expandiu e otimizou os quatro aspectos a seguir: rede fixa, atualização leve, atualização em lote e garantia de capacidade, e percebeu a capacidade dos seguintes cenários:
3.1 Rede fixa
Rede fixa significa que o IP permanece inalterado após a destruição e a reconstrução do pod. Cenários como anomalias de pod e atualizações de versão da carga de trabalho etc. A rede fixa é um recurso muito reconhecido dos negócios auto-desenvolvidos da Tencent. Muitos serviços em segundo plano de negócios têm gerenciamento de autenticação baseado em IP , Mecanismo de lista branca e outras dependências funcionais, acredito que muitas empresas terão cenários semelhantes. O projeto da rede fixa é baseado em três principais módulos funcionais: Controlador IPAMD, TKE-ENI-AGENT, CNI:
- O controlador IPAMD é executado na forma de um operador e é responsável pelo gerenciamento de alocação de IP, atualização do status dos recursos de rede e atualização de registro de associação de nós e pods, etc.
- O TKE-ENI-AGENT é executado em cada nó no modo daemonset, responsável pela reconciliação de roteamento, gerando configuração cni, definindo o roteamento de política do nó e a pilha de rede do Pod
- A CNI também é executada no nó e é responsável por implementar o roteamento da política do nó e a pilha de rede do Pod
O processo de implementação específico da rede fixa é como mostrado acima:
- O usuário iniciou a criação do statefulset
- O controlador IPAMD monitora a solicitação de criação através do mecanismo de observação de lista
- O IPAMD Controller usa o alocador de IP para alocar IP a todos os pods no novo conjunto de estado
- O IPAMD Controller gera a configuração de rede correspondente StaticIPConfig para cada pod e, em seguida, gerencia as atualizações de associação e status do pod e o IP atribuído no ciclo de vida após o conjunto de estado
- O alocador de IP é a função principal do controlador IPAMD, que determina que o pod atual é um novo aplicativo, destrói a reserva de reconstrução, exclui a recuperação e outros processos de acordo com as informações do pod e o status do statefulset e gera a configuração correspondente. Quando o statefulset for criado novamente, o alocador será equipado com novos O IP é fornecido ao pod. Quando o pod for destruído e reconstruído de maneira anormal, o alocador recuperará temporariamente o IP original. Após a conclusão da reconstrução, ele será reutilizado repetidamente. Quando o statefulset for excluído, todo o IP alocado será recuperado.
- Quando o pod é criado no nó, ele obtém a configuração de rede StaticIPConfig que o IPAMD gerou através do TKE-ENI-AGENT e solicita ao alocador de IP que implemente a configuração efetiva da rede do pod através do GRPC
- Após receber a solicitação TKE-ENI-AGENT, o alocador de IP obterá o IPConfig estático da configuração de rede do pod que foi alocada, em seguida, chame a Tencent Cloud Interface para criar a placa de rede elástica ENI de acordo com a configuração e, finalmente, gere a configuração CNI CNIInfo
- A CNI implementa o roteamento de política de nó e a pilha da rede de pod com base na configuração CNIInfo gerada pelo alocador de IP, e a rede de pod entra em vigor
3.2 Operador StatefulsetPlus
A implantação nativa da nuvem, StatefulSet e outros tipos de carga de trabalho não podem atender às necessidades da conferência Tencent e outros serviços, como: atualização leve, atualização em lote, garantia de capacidade etc., portanto, a Tencent Cloud desenvolveu um conjunto de Operadores baseado em StatefulSet para suportar novas cargas de trabalho O tipo é StatefulsetPlus, que herda todos os principais recursos do StatefulSet criados no Kubernete.A lógica da função principal é semelhante ao StatefulSet, mas os recursos de subdivisão são expandidos, como o IP fixo da instância do contêiner (Pod) e a atualização em escala de cinza em lotes do aplicativo. Melhor compatibilidade com o lançamento de aplicativos tradicionais e desvio automático do Pod quando o Nó é desconectado, suportando atualizações de contêineres no local. A arquitetura do aplicativo e os módulos funcionais do StatefulsetPlus Operator são os seguintes:
O StatefulsetPlus é implantado no modo CRD, que é parcialmente diferente do parâmetro yaml do Statefulset, e seu uso é basicamente o mesmo que o Statefulset
3.3 Atualização em lotes
Muitos serviços importantes, como o Tencent Meeting, exigem avanços absolutamente controláveis ao atualizar e atualizar.A atualização em lote é baseada na expansão desse cenário.Também pode ser melhor compatível com o lançamento de aplicativos tradicionais.A atualização em lote está em uso real. O processo de evolução é o seguinte:
Para obter controlabilidade suficiente das atualizações em lote, é necessário especificar antecipadamente os lotes quando a atualização for iniciada. Cada processo subseqüente será acionado manualmente. Se uma atualização falhar, você poderá continuar após o reparo ou seguir diretamente o processo de reversão, em comparação com outras cargas de trabalho. A vantagem da função de atualização em lote do StatefulsetPlus é que os usuários podem configurar o conjunto de instâncias de cada lote.Por exemplo, os usuários podem atualizar temporariamente apenas as instâncias na área correspondente de acordo com a área de serviço do aplicativo. As instâncias especificadas de cada lote são atualizadas simultaneamente e a eficiência da atualização é alta.
Ao mesmo tempo, a atualização é mais segura e sem preocupações. Ele suporta aguardar a confirmação do usuário após a conclusão de cada lote e aciona a atualização do próximo lote de instâncias. Depois que o probe do aplicativo detecta automaticamente que a atualização foi bem-sucedida, ele automaticamente aciona a atualização do próximo lote de instâncias. Além disso, ele suporta dimensionamento manual, dimensionamento elástico com base em indicadores básicos (CPU, Mem, E / S de rede) e dimensionamento elástico com base em indicadores de monitoramento definidos pelo aplicativo.
Sumário
Atualmente, a tendência de acesso total à nuvem já é clara.A conferência da Tencent também aproveitou o boom da computação em nuvem para concluir rapidamente a rápida iteração da versão e a atualização perfeita das funções baseadas na tecnologia nativa da nuvem. Na transformação baseada em nuvem de todas as esferas da vida, a tecnologia de contêineres desempenha um papel vital. A Tencent está pesquisando tecnologias e serviços relacionados a contêineres há muito tempo. Muitos de seus negócios de sucesso, como jogos, WeChat e publicidade, optaram por rodar em tecnologia de contêineres.Pode-se dizer que a tecnologia de contêiner está apoiando bilhões de Usuários.
Com o vigoroso desenvolvimento do ecossistema de tecnologia nativa da nuvem, como seguidor de tecnologia, também espero que a tecnologia TKE do Tencent Cloud Container Service possa apoiar mais empresas a avançar orgulhosamente.