Cenários de aplicação de tecnologia de contêiner em OpenStack

Autor: Zen e a arte da programação de computadores

1. Introdução

Como uma tecnologia de nova geração em computação em nuvem, a tecnologia de contêineres está atraindo cada vez mais a atenção de desenvolvedores, empresas e usuários. No entanto, na comunidade OpenStack, a tecnologia de contêiner não tem sido amplamente utilizada, o que fez com que muitos usuários do OpenStack tivessem dúvidas sobre se o OpenStack suporta a tecnologia de contêiner. Este artigo apresentará em detalhes os cenários de aplicação da tecnologia de contêiner no OpenStack, incluindo quando é apropriado usar a tecnologia de contêiner? Como usar a tecnologia de contêiner no OpenStack? Quais são os principais recursos funcionais? Que outras vantagens a tecnologia de contêineres tem? Finalmente, alguns casos práticos serão combinados para ilustrar a aplicação prática da tecnologia de contêineres OpenStack. Espero que este artigo possa ajudar os leitores a compreender os cenários de aplicação e as características da tecnologia de contêineres no OpenStack, obter uma compreensão mais profunda das ideias de design por trás da tecnologia de contêineres e aproveitar ao máximo suas vantagens de escalabilidade e elasticidade para alcançar o rápido desenvolvimento dos negócios.

2. Introdução ao contexto

Visão geral da tecnologia de contêineres

A tecnologia de contêiner refere-se a uma tecnologia de virtualização leve usada para empacotar, implantar e executar aplicativos. É uma plataforma padronizada capaz de executar vários processos de aplicativos isolados simultaneamente em um único sistema operacional. A tecnologia de contêineres foi lançada como código aberto pela empresa líder Docker. Ela usa o kernel Linux para fornecer um ambiente virtualizado e constrói uma camada de abstração sobre ele para gerenciar o compartilhamento de recursos e a comunicação de rede entre contêineres. Atualmente, as principais distribuições Linux fornecem suporte nativo para tecnologia de contêiner, como Ubuntu, CentOS, CoreOS, etc.

A tecnologia tradicional de máquina virtual tem as seguintes deficiências:

  • Longo tempo de inicialização: A criação de uma máquina virtual requer o download de um arquivo de imagem e a inicialização do sistema operacional completo do início ao fim. Em comparação com processos ou threads, geralmente leva mais tempo;
  • Alto uso de recursos: Cada vez que uma máquina virtual é criada, ela utilizará exclusivamente os recursos de toda a máquina física, e as máquinas virtuais não poderão acessar umas às outras, resultando em desperdício de recursos;
  • Inicialização lenta: Como a criação de uma máquina virtual leva vários minutos ou até dez minutos, o processo de inicialização consumirá muito tempo ao criar um grande número de máquinas virtuais;

A tecnologia de contêineres resolve esses problemas: ela usa o sistema operacional do host, mas não possui exclusivamente recursos completos no host. Os contêineres alocam apenas uma pequena quantidade de recursos para o processo do aplicativo e executam apenas um ambiente leve de virtualização do sistema operacional no host, economizando assim muitos recursos de hardware. Os contêineres também podem usar a mesma infraestrutura, iniciar e parar rapidamente e facilitar a expansão e contração dinâmicas para atender às necessidades repentinas de curto prazo. De modo geral, a tecnologia de contêineres oferece aos servidores alta confiabilidade e elasticidade, fazendo com que desempenhem um papel importante na computação em nuvem, na arquitetura de microsserviços e no processamento de big data.

Tecnologia de contêiner OpenStack

No OpenStack, a tecnologia de containers é uma tecnologia de nível de infraestrutura, portanto sua implementação depende do suporte da plataforma de virtualização de infraestrutura. Atualmente, existem três soluções populares de tecnologia de contêiner: OpenVZ baseado em LXC (Linux Container), KVM/QEMU baseado em Libvirt e libcontainer baseado em Docker. A comunidade OpenStack recomenda o Docker como uma solução de tecnologia de contêiner pelos seguintes motivos:

  • Docker é uma estrutura de tecnologia de contêiner de código aberto leve e conveniente;
  • O próprio Docker possui um mecanismo completo de gerenciamento do ciclo de vida, você pode usar o Dockerfile para definir imagens e controlar bem as dependências entre as imagens;
  • Componentes OpenStack como Glance, Nova, etc. podem ser facilmente integrados usando Docker;
  • A comunidade de código aberto Docker formou um ecossistema completo, fornecendo diversas ferramentas e suporte de serviços;
  • Na tecnologia de contêiner baseada em Docker, todos os componentes de serviço do OpenStack podem definir imagens por meio do Dockerfile, e o Glance pode armazenar vários tipos de imagens de contêiner, reduzindo assim a complexidade da implantação.

A tecnologia de contêineres não é perfeita e tem muitas limitações. Por exemplo, a tecnologia de contêineres não pode substituir completamente as máquinas virtuais. Cada uma delas tem suas próprias vantagens e limitações. Você deve escolher a solução mais adequada com base na situação real. Além disso, a tecnologia de contentores é particularmente adequada para empresas dinâmicas com utilização intensiva de recursos, e o consumo de recursos não aumentará linearmente à medida que o negócio aumenta. Portanto, os cenários de aplicação da tecnologia de contêiner OpenStack devem ter certas limitações, pois só podem garantir a estabilidade dos negócios e a expansão elástica e não podem substituir a tecnologia de virtualização existente.

2. Explicação de conceitos e termos básicos

1.1 Recipiente

Container, também conhecido como “container” em inglês, é um ambiente de virtualização de sistema operacional leve, independente e seguro. É um ambiente de tempo de execução que pode conter vários processos de aplicativos em execução, e cada contêiner é isolado um do outro e possui sistemas de arquivos independentes, restrições de recursos, controle de permissão e outros atributos. É semelhante à tecnologia de máquina virtual tradicional, mas é construída no kernel do host e sua sobrecarga de recursos é muito pequena. A tecnologia de contêiner foi projetada para oferecer suporte a aplicativos distribuídos baseados em arquitetura de microsserviços.

1.2 Imagem

Mirror, chamado de "imagem" em inglês, refere-se a um ambiente de empacotamento de software leve, independente e autodescritivo usado para criar contêineres Docker. Uma imagem é um modelo somente leitura que contém todas as condições e configurações necessárias para executar uma tarefa. É um arquivo executável binário que contém sistema operacional, aplicativos, bibliotecas, configuração e outros arquivos.

1.3 Dockerfile

Dockerfile, traduzido como "código-fonte do Docker" em chinês, é um arquivo de texto usado para criar arquivos de imagem. Dockerfile contém instruções (Instruções) que informam ao Docker como construir a imagem. Dockerfile usa regras de sintaxe específicas, como FROM, RUN, CMD, ENTRYPOINT, EXPOSE, ENV e outros comandos. Dockerfile fornece um mecanismo de compilação automatizado, que pode evitar processos complexos de configuração manual e tornar a implantação de aplicativos mais conveniente.

1.4 Repositório

Warehouse, chamado de “repositório” em inglês, é onde o Docker salva as imagens. Docker Hub é um armazém público de imagens Docker. Por padrão, todos os usuários podem recuperar, compartilhar e publicar imagens no site. Além do Docker Hub oficial, também existem armazéns de imagens de terceiros para os usuários compartilharem e fazerem upload de imagens.

1.5 CLI da interface de linha de comando

Interface de linha de comando (CLI) refere-se à interface do usuário fornecida pelo sistema operacional do computador ao usuário. É usada principalmente para interagir com a máquina, inserir comandos na máquina e receber resultados de saída. Os usuários podem interagir diretamente com o sistema de computador por meio da CLI e realizar diversas operações. Atualmente, a maioria das distribuições Linux e a maioria dos sistemas operacionais semelhantes ao Unix fornecem CLI, e os sistemas Windows também têm suporte parcial.

1.6 API RESTful

API RESTful, ou seja, API para transferência de estado representacional, é um estilo de design que possui uma estrutura clara, está em conformidade com os padrões, é fácil de entender e fácil de usar. É o método principal da maioria das linguagens de programação de servidores web atuais. . A API RESTful usa um protocolo de interface unificado, permitindo que diferentes clientes (como navegadores, aplicativos móveis, miniaplicativos, etc.) acessem os recursos do servidor da mesma maneira, o que pode simplificar bastante a comunicação entre clientes e servidores.

1.7 Kubernetes

Kubernetes, o nome completo de "Kuberentes Local, Global and Scalable Cluster Management System", é um sistema de gerenciamento de cluster de contêiner de código aberto para grandes empresas de Internet como Google, IBM, Microsoft, Amazon e Twitter. É um sistema de código aberto que pode gerenciar e orquestrar aplicativos em contêineres. É um sistema distribuído escalável que pode gerenciar clusters de contêineres de qualquer tamanho e fornecer implantação automática de aplicativos de cluster interno e entre hosts. Expanda e gerencie.

3. Explicação dos princípios básicos do algoritmo, etapas operacionais específicas e fórmulas matemáticas

A tecnologia de contêineres possui vários recursos, o mais importante dos quais é a portabilidade de aplicativos de implantação. Como a tecnologia de contêiner é executada no sistema operacional do host, ela pode ser executada em qualquer sistema operacional compatível, seja Linux, Mac OS X, Windows ou outros sistemas.

Para alcançar a portabilidade das aplicações implementadas, a tecnologia de contentores utiliza uma camada de abstração, nomeadamente uma imagem de contentor. Uma imagem é um modelo somente leitura que contém todas as condições e configurações necessárias, como sistema operacional, aplicativo, biblioteca, configuração, etc. Ao criar um contêiner, você só precisa especificar uma imagem. Dessa forma, a mesma imagem em hosts diferentes pode executar aplicações diferentes. Além disso, a tecnologia de contêineres possui outros recursos, incluindo interconexão de contêineres, portabilidade de contêineres, escalabilidade dinâmica de contêineres e gerenciamento do ciclo de vida.

A seguir apresentaremos os cenários de aplicação da tecnologia de contêiner no OpenStack.

3.1 Quando é apropriado usar a tecnologia de contêineres?

De modo geral, a tecnologia de contêineres é adequada para os seguintes cenários:

  1. Arquitetura de microsserviços: A arquitetura de microsserviços baseada na tecnologia de contêineres pode ajudar as empresas a reduzir o custo de aprendizagem das pilhas de tecnologia, melhorar a eficiência da entrega de software, reduzir o investimento em recursos de TI e aumentar efetivamente a competitividade da empresa. A tecnologia de contêineres sob a arquitetura de microsserviços pode efetivamente atingir um alto grau de modularização de aplicativos e reduzir o acoplamento de serviços, melhorando assim a capacidade de manutenção, escalabilidade e reutilização do software.
  2. Desenvolvimento e implantação ágeis: a tecnologia de contêineres pode ajudar as equipes de P&D a alcançar desenvolvimento e implantação ágeis. Os desenvolvedores só precisam escrever código para empacotar e gerar imagens e, em seguida, usar ferramentas de orquestração (como Kubernetes, Mesos) para implantar rapidamente em ambientes formais, de teste e pré-produção, o que melhora muito a eficiência do trabalho.
  3. Análise de big data e computação em tempo real: A tecnologia de contêineres pode fornecer às empresas recursos de análise de dados altamente escaláveis.A análise de big data pode usar clusters de contêineres para iniciar e implantar rapidamente nós de contêineres para obter resposta em tempo real à análise de dados.
  4. Computação confiável: a tecnologia de contêineres pode fornecer às empresas recursos de computação altamente confiáveis. As empresas podem colocar dados confidenciais e tarefas de computação em contêineres, usar as características de isolamento dos contêineres para obter segurança de dados e usar os recursos de diferentes nós no cluster de contêineres para atingir um alto grau de paralelismo nas tarefas.

3.2 Como usar a tecnologia de contêiner no OpenStack

Embora o OpenStack forneça soluções de tecnologia de contêiner baseadas em Docker, ele não fornece documentação detalhada para contêineres de aplicativos OpenStack. Esta seção apresentará o uso específico da tecnologia de contêiner no OpenStack.

Criar instância de contêiner

Primeiro, você precisa fazer login no console OpenStack, entrar na página Compute, clicar na guia Containers, entrar na página da lista de contêineres, clicar no botão Criar Servidor e a página para criar um contêiner aparecerá, conforme mostrado na figura :

Na página Criar Servidor, preencha principalmente os seguintes campos:

  1. Nome: O nome do contêiner, definido pelo usuário, não pode ficar vazio.
  2. Fonte da imagem: Fonte da imagem, você pode escolher imagem local ou imagem remota. A imagem padrão no Glance é usada por padrão. Se estiver puxando remotamente, insira o endereço da imagem, como docker.io/library/centos:latest.
  3. Sabor: Tipo de configuração da máquina, você pode escolher tipo de desempenho, tipo geral, tipo de computação, etc.
  4. Rede: Configuração de rede, você pode selecionar uma rede externa ou uma rede interna. Se for uma rede externa, você precisa selecionar a política de grupo de segurança correspondente.
  5. Key Pair: par de chaves SSH, usado para conectar-se ao contêiner.

Após confirmar que as informações estão corretas, clique em Iniciar para criar o contêiner. Após a criação bem-sucedida, a página exibirá informações relacionadas ao contêiner, como endereço IP, portas disponíveis, comandos de inicialização, etc.

Configurar contêiner

Depois de criar o contêiner, você precisa configurá-lo antes que ele possa ser executado. Clique no link ID do contêiner, abra a página de detalhes do contêiner e clique na guia Configuração, conforme mostrado na figura abaixo:

Na página da guia Configuração, preencha principalmente os seguintes campos:

  1. Comando: Comando de inicialização, que pode ser customizado ou vazio, indicando que o comando de inicialização padrão é utilizado.
  2. Variáveis ​​de ambiente: Variáveis ​​de ambiente, pares de valores-chave podem ser definidos no contêiner. Por exemplo, se a variável de ambiente MYVAR=myvalue estiver definida, o valor pode ser obtido por meio de echo $MYVAR no contêiner.
  3. Volumes: Os volumes de dados podem mapear volumes de dados de host para contêineres, permitindo armazenamento persistente e compartilhamento de dados de aplicativos.
  4. Portas: Mapeamento de portas, que pode mapear as portas do contêiner para o host para obter acesso externo ao aplicativo.
  5. Limitações: Limitações, que podem limitar a memória, CPU, disco, largura de banda da rede e outros recursos do contêiner.
  6. Política de reinicialização: Política de reinicialização. Quando o contêiner sai ou sai de forma anormal, o contêiner é reiniciado automaticamente de acordo com a política de reinicialização.
  7. Rótulos: Rótulos, que podem classificar, marcar e pesquisar contêineres.

Clique no botão Atualizar configuração para salvar a configuração. Após modificar a configuração, clique no botão Reiniciar para reiniciar o contêiner para que a configuração entre em vigor.

Use kubectl para gerenciar contêineres

OpenStack fornece a interface API restful da interface de linha de comando (CLI) OpenStack, que pode ser usada para chamar a interface API RESTful do serviço de contêiner por meio da linha de comando para gerenciar o contêiner. No OpenStack, a ferramenta de linha de comando kubectl é uma ferramenta de linha de comando para gerenciar clusters Kubernetes. kubectl pode ser usado para obter informações de cluster, criar e excluir objetos de recursos e consultar e editar objetos de recursos.

Para instalar a ferramenta de linha de comando kubectl, consulte a documentação oficial: https://kubernetes.io/docs/tasks/tools/install-kubectl/. Em seguida, faça login no console OpenStack, entre na página do painel, encontre o nome de usuário no canto superior direito da página, clique no menu suspenso, selecione Acesso e segurança -> Acesso à API, copie o URL do endpoint, abra o terminal, e digite o comando:

export KUBECONFIG=<endpoint url>

Aguarde a conclusão da execução do comando antes de inserir o comando:

kubectl get nodes

Você pode visualizar todas as informações do nó no cluster.

Para uso detalhado do comando kubectl, consulte a documentação oficial: https://kubernetes.io/docs/reference/kubectl/overview/.

Acho que você gosta

Origin blog.csdn.net/universsky2015/article/details/133502319
Recomendado
Clasificación