Ao mergulhar no Docker, no Google Cloud e no Kubernetes, e sem entender claramente os três ainda, parece-me que esses produtos se sobrepõem, mas não são compatíveis.
Por exemplo, um docker-compose.yml
arquivo precisa ser reescrito para que um aplicativo possa ser implantado no Kubernetes.
Alguém poderia fornecer uma descrição aproximada e de alto nível de onde o Docker, o Docker Compose, o Docker Cloud e o Kubernetes se sobrepõem e onde um depende do outro?
fonte
Além da resposta de @ yamenk , gostaria de adicionar alguns detalhes aqui que podem ajudar as pessoas em sua jornada de entendimento do Kubernetes.
Resposta curta:
docker-compose
: é uma ferramenta que utiliza um arquivo YAML que descreve seu aplicativo com vários contêineres e ajuda a criar , iniciar / parar , remover todos esses contêineres sem precisar digitar váriosdocker ...
comandos para cada contêiner.Kubernetes
: é uma plataforma para gerenciar cargas de trabalho e serviços em contêiner , que facilita a configuração declarativa e a automação. O que? 🤔 Continue lendo ...Docker Compose
Kubernetes
Muitas pessoas argumentam que Kubernetes é difícil de aprender. É porque resolve uma série de problemas e as pessoas tentam entender sem conhecer todos os pré-requisitos. Isso torna complicado. Comece a montar as peças do quebra-cabeça lendo sobre conceitos / termos como os seguintes. Esse processo ajudará você a entender os tipos de problemas que o Kubernetes tenta resolver:
E como existem muitas coisas diferentes em relação aos contêineres e seu gerenciamento, fique de olho no cenário do Cloud Native:
Versão interativa aqui: landscape.cncf.io/
Atualizações
fonte
docker stack deploy --orchestrator=kubernetes
... docs.docker.com/engine/reference/commandline/stack_deploySe você estiver em contêineres em rede com o mesmo host, vá para a composição do docker .
Se você estiver contêineres de rede em vários hosts, escolha kubernetes .
fonte
A primeira distinção é entre o mecanismo do contêiner e o orquestrador de contêineres.
docker
é um mecanismo de contêiner, faz com que você construa e execute normalmente não mais que um contêiner, no máximo, localmente no seu PC para fins de desenvolvimento.docker-compose
é um utilitário do Docker para executar vários contêineres e permitir que eles compartilhem volumes e redes através dos recursos do mecanismo do docker, executa localmente para emular a composição do serviço e remotamente nos clusters.O Kubernetes é uma plataforma de orquestração de contêineres, que cuida da execução de contêineres e aprimora os recursos do mecanismo para que os contêineres possam ser compostos e dimensionados para atender a aplicativos complexos (tipo de PaaS, gerenciado por você ou por um provedor em nuvem). O principal recurso do Kubernetes é dissociar a infraestrutura do aplicativo usando contêineres e também está aberto para outros mecanismos que o Docker, por exemplo, pode executar contêineres com rkt ou cri-o.
A nuvem do Docker também é uma oferta PaaS que permite executar e orquestrar contêineres por meio da
docker
API do mecanismo.Agora, dependendo de suas necessidades, nível de controle na infraestrutura e público-alvo, você pode usar o Kubernetes no baremetal, ou o Azure ACS ou o Google GKE, etc ...
Espero que isso tenha ajudado :) Atenciosamente
fonte
O Docker Compose não é uma ferramenta pronta para produção. Ele funciona muito bem para ambientes de PoC ou desenvolvimento, mas não possui muitos recursos que são mais ou menos importantes para uso sério da produção. O Swarm está mais pronto para a produção, mas eu nunca investiria no Swarm em um cenário greenfield. O Kubernetes venceu a batalha de orquestração, como evidenciado por sua inclusão no Docker Desktop e por ser oferecido por todos os principais provedores de nuvem. O Kubernetes é muito mais capaz e possui muito mais suporte comunitário e corporativo.
Eu recomendaria mergulhar em alguns dos tutoriais do Kubernetes disponíveis no Pluralsight, Linux Academy etc. e criar um cluster para brincar na sua plataforma de nuvem preferida (EKS, AKS, GKE etc.). Se você está tentando usar o bare metal, dê uma olhada no OpenShift, mas reconheça que você perde um pouco da magia do Kubernetes nesta configuração.
fonte
Composição do Docker:
Em um
docker-compose.yml
arquivo, cada entrada pode, opcionalmente,docker-compose
criar uma imagem. cada entrada pode representar um único contêiner que queremos criar e cada entrada define os requisitos ou portas de rede.Kubernetes:
O Kubernetes espera que todas as imagens já sejam construídas e existe um arquivo de configuração por objeto que queremos criar e temos que configurar manualmente todas as redes.
Portanto, garantimos que nossa imagem esteja hospedada no Docker Hub, crie um arquivo de configuração para criar o contêiner e um arquivo de configuração para configurar a rede.
fonte
O Docker-Compose é um arquivo de implantação que predefiniu um ou mais contêineres com seu ambiente, como volumes, rede, um comando para executar e assim por diante.
O Kubernetes, por outro lado, é um sistema que orquestra contêineres de docker e outros microsserviços e os torna escalonados e confiáveis em vários nós
fonte
Composição do Docker: os contêineres do Docker podem ser executados diretamente sem a ajuda de qualquer arquivo yaml. Porém, com o auxílio do Docker, as propriedades do contêiner da ferramenta podem ser definidas dentro de um arquivo chamado arquivo docker-compose.yml. encontre o arquivo yml de amostra abaixo para obter mais detalhes.
nome da imagem, número de réplicas, etc. pode ser configurado através do arquivo yml.
Kubernetes: Esta é a plataforma de gerenciamento de contêiner executada sobre o Docker criado pelo Google. O Docker swam é outra plataforma de gerenciamento de contêiner criada pelo próprio docker. O Kubernetes também fornece a facilidade de salvar a configuração relacionada aos pods (corresponde ao contêiner na janela de encaixe) no arquivo yaml como o docker compor. arquivo yaml de exemplo
aqui também podem ser fornecidas imagens, portas a serem abertas e pod para hospedar mapeamentos de portas, etc. como o docker compor, o kubectl apply -f é o comando para executar este arquivo.
fonte