OpenShift - Arquitetura
OpenShift é um sistema em camadas em que cada camada é fortemente vinculada à outra usando o cluster Kubernetes e Docker. A arquitetura do OpenShift foi projetada de forma que possa dar suporte e gerenciar os contêineres do Docker, que são hospedados no topo de todas as camadas usando o Kubernetes. Ao contrário da versão anterior do OpenShift V2, a nova versão do OpenShift V3 oferece suporte à infraestrutura em contêiner. Neste modelo, o Docker ajuda na criação de contêineres leves baseados em Linux e o Kubernetes oferece suporte à tarefa de orquestrar e gerenciar contêineres em vários hosts.
Componentes do OpenShift
Um dos principais componentes da arquitetura OpenShift é gerenciar a infraestrutura em contêineres no Kubernetes. Kubernetes é responsável pela implantação e gerenciamento da infraestrutura. Em qualquer cluster Kubernetes, podemos ter mais de um nó mestre e vários nós, o que garante que não haja ponto de falha na configuração.
Componentes da máquina mestre do Kubernetes
Etcd- Armazena as informações de configuração, que podem ser utilizadas por cada um dos nós do cluster. É um armazenamento de valor de chave de alta disponibilidade que pode ser distribuído entre vários nós. Ele só deve ser acessível pelo servidor da API Kubernetes, pois pode conter informações confidenciais. É uma Loja de valores-chave distribuída acessível a todos.
API Server- Kubernetes é um servidor de API que fornece todas as operações no cluster usando a API. O servidor API implementa uma interface que significa que diferentes ferramentas e bibliotecas podem se comunicar prontamente com ele. Um kubeconfig é um pacote junto com as ferramentas do lado do servidor que podem ser usadas para comunicação. Ele expõe a API do Kubernetes ”.
Controller Manager- Este componente é responsável pela maioria dos coletores que regulam o estado do cluster e executam uma tarefa. Ele pode ser considerado um daemon que é executado em um loop sem fim e é responsável por coletar e enviar informações ao servidor API. Ele trabalha para obter o estado compartilhado do cluster e, em seguida, faz alterações para trazer o status atual do servidor para o estado desejado. Os controladores principais são controlador de replicação, controlador de terminal, controlador de namespace e controlador de conta de serviço. O gerenciador de controlador executa diferentes tipos de controladores para lidar com nós, endpoint, etc.
Scheduler- É um componente-chave do mestre Kubernetes. É um serviço em master responsável por distribuir a carga de trabalho. Ele é responsável por rastrear a utilização da carga de trabalho nos nós do cluster e, em seguida, colocar a carga de trabalho na qual os recursos estão disponíveis e aceitar a carga de trabalho. Em outras palavras, esse é o mecanismo responsável por alocar pods aos nós disponíveis. O programador é responsável pela utilização da carga de trabalho e alocação de um pod para um novo nó.
Componentes do nó do Kubernetes
A seguir estão os principais componentes do servidor Node, que são necessários para se comunicar com o mestre Kubernetes.
Docker - O primeiro requisito de cada nó é o Docker, que ajuda a executar os contêineres de aplicativos encapsulados em um ambiente operacional relativamente isolado, mas leve.
Kubelet Service- Este é um pequeno serviço em cada nó, que é responsável por retransmitir informações de e para o serviço do plano de controle. Ele interage com o armazenamento etcd para ler os detalhes de configuração e valores Wright. Este se comunica com o componente mestre para receber comandos e trabalhar. O processo kubelet assume então a responsabilidade de manter o estado de trabalho e o servidor de nó. Ele gerencia regras de rede, encaminhamento de porta, etc.
Kubernetes Proxy Service- Este é um serviço de proxy que roda em cada nó e ajuda a disponibilizar os serviços para o host externo. Ajuda a encaminhar a solicitação para contêineres corretos. O serviço Kubernetes Proxy é capaz de realizar balanceamento de carga primitivo. Isso garante que o ambiente de rede seja previsível e acessível, mas, ao mesmo tempo, também isolado. Ele gerencia pods em nós, volumes, segredos, criando novos contêineres, verificação de integridade etc.
OpenShift Container Registry integrado
O registro de contêiner OpenShift é uma unidade de armazenamento embutida do Red Hat, que é usada para armazenar imagens Docker. Com a última versão integrada do OpenShift, surgiu com uma interface de usuário para visualizar imagens no armazenamento interno do OpenShift. Esses registros são capazes de conter imagens com tags especificadas, que mais tarde são usadas para construir contêineres a partir deles.
Termos usados com frequência
Image- As imagens do Kubernetes (Docker) são os principais blocos de construção da infraestrutura em contêineres. A partir de agora, o Kubernetes oferece suporte apenas a imagens Docker. Cada contêiner em um pod tem sua imagem Docker em execução dentro dele. Ao configurar um pod, a propriedade da imagem no arquivo de configuração tem a mesma sintaxe do comando Docker.
Project - Eles podem ser definidos como a versão renomeada do domínio que estava presente na versão anterior do OpenShift V2.
Container - Eles são criados depois que a imagem é implantada em um nó de cluster do Kubernetes.
Node- Um nó é uma máquina em funcionamento no cluster Kubernetes, também conhecido como subordinado do mestre. Eles são unidades de trabalho que podem ser uma instância física, VM ou nuvem.
Pod- Um pod é uma coleção de contêineres e seu armazenamento dentro de um nó de um cluster Kubernetes. É possível criar um pod com vários contêineres dentro dele. Por exemplo, manter o contêiner do banco de dados e o contêiner do servidor da web dentro do pod.