Docker Kubernetes k8s do básico ao proficiente

0. Janela de encaixe

insira a descrição da imagem aqui

insira a descrição da imagem aqui

O Docker é um software de código aberto e uma plataforma aberta para desenvolvimento, envio e execução de aplicativos. O Docker permite que os usuários separem aplicativos na infraestrutura (Infraestrutura) para formar partículas menores (contêineres), aumentando assim a velocidade de entrega de software. [1]

Os contêineres do Docker são semelhantes às máquinas virtuais, mas diferem em princípio. Os contêineres virtualizam a camada do sistema operacional e as máquinas virtuais são hardwares virtualizados, portanto, os contêineres são mais portáteis e utilizam servidores com mais eficiência. Um contêiner é mais usado para representar uma unidade padronizada de software. Devido à padronização dos containers, ele pode ser implantado em qualquer lugar independente das diferenças de infraestrutura. Além disso, o Docker também oferece maior compatibilidade de isolamento do setor para contêineres. [2]

O Docker usa os mecanismos de separação de recursos no kernel do Linux, como cgroups, e os namespaces do kernel do Linux (namespaces) para criar contêineres independentes (containers). Isso pode operar em uma única entidade Linux, evitando o fardo extra de iniciar uma máquina virtual [3]. O suporte do kernel Linux para namespaces isola completamente a visão do aplicativo do ambiente de trabalho, incluindo árvores de viagem, redes, IDs de usuário e sistemas de arquivos montados, enquanto os cgroups do kernel fornecem isolamento de recursos, incluindo CPU, memória, E/S de bloco e Internet . A partir da versão 0.9, o Dockers passou a incluir a biblioteca libcontainer como forma de utilizar diretamente as facilidades de virtualização fornecidas pelo kernel Linux, baseadas no uso de virtualização abstrata através da interface fornecida pelo LXC e systemd-nspawn da libvirt.

De acordo com a empresa de analistas do setor "451 Research": "Dockers são a capacidade de empacotar aplicativos e seus contêineres virtuais com dependências que podem ser executadas em qualquer servidor Linux, o que facilita a flexibilidade e portabilidade, aplicativos em qualquer lugar Tudo pode ser executado, seja um servidor de nuvem pública, um servidor de nuvem privada, uma única máquina, etc.” [4]

Docker é um conjunto de produtos de plataforma como serviço (PaaS) que usam virtualização no nível do sistema operacional para entregar software em pacotes chamados contêineres.[6] O serviço tem níveis gratuitos e premium. O software que hospeda os contêineres é chamado de Docker Engine.[7] Foi iniciado em 2013 e é desenvolvido pela Docker, Inc.

0.1 Motor Docker

O Docker Engine (Docker Engine) é um aplicativo de estrutura servidor-cliente, que inclui principalmente essas partes: Daemon do Docker, API do Docker Engine (backup de arquivo de página, armazenado no Internet Archive), cliente Docker. [6]

Os daemons do Docker, também conhecidos como dockerd, são processos persistentes em que os usuários gerenciam contêineres. O daemon escuta solicitações da API do Docker Engine (backup de arquivo de página, armazenado no Internet Archive). [7]
A API do Docker Engine (backup do arquivo de página, no Internet Archive) é uma API para interagir com o daemon do Docker. É uma API RESTful, portanto, pode ser chamada não apenas por clientes Docker, mas também por comandos como wget e curl. [8]
O cliente Docker, também conhecido como docker, é a principal maneira pela qual a maioria dos usuários interage com o Docker. O usuário envia comandos para o daemon através do cliente. Os comandos seguirão a API do Docker Engine (backup do arquivo da página, no Internet Archive) [9]

0.2 Registro do Docker

O registro do Docker (registro do Docker) é usado para armazenar imagens do Docker. O Docker Hub é um registro público que qualquer pessoa pode usar e, por padrão, o Docker procurará imagens aqui. [6]

Além disso, os usuários podem construir seu próprio registro privado. Os usuários do Docker Datacenter (DDC) podem usar o Docker Trusted Registry (DTR) diretamente.

0,3 Objetos

Os objetos do Docker referem-se a Imagens, Containers, Redes, Volumes, Plugins e assim por diante. [6]

  • Os contêineres são instâncias executáveis ​​de uma imagem. Os contêineres podem ser manipulados via API ou CLI (linha de comando). [6]
  • As imagens são um modelo somente leitura usado para indicar a criação do contêiner. [6] Camadas de imagem são construídas, e os arquivos que definem essas camadas são chamados de Dockerfiles. [10]
  • Os serviços permitem que os usuários adicionem contêineres em diferentes daemons do Docker e divida esses contêineres em gerentes e trabalhadores, permitindo que eles trabalhem juntos para o enxame. [6]

1. Kubernetes inicial

A versão de código aberto do Borg, o sistema interno de orquestração de contêineres do Google, foi iniciado pelo Google em 2014, e a versão 1.0 do Kubernetes foi lançada em 2015.
Kubernetes (muitas vezes abreviado como K8s) é um sistema de código aberto para implantar, dimensionar e gerenciar automaticamente "aplicativos em contêiner". [3] O sistema foi projetado pelo Google e doado à Cloud Native Computing Foundation (agora Linux Foundation) para uso.

O objetivo é fornecer "uma plataforma para implantação automatizada, dimensionamento e execução de contêineres de aplicativos em clusters de hosts". [4] Ele suporta uma variedade de ferramentas de contêiner, incluindo Docker, etc.

Ele agrupa os contêineres que compõem um aplicativo em unidades lógicas para facilitar o gerenciamento e a descoberta. O Kubernetes se baseia nos 15 anos de experiência do Google executando cargas de trabalho de produção e incorpora as melhores ideias e práticas da comunidade.
https://github.com/kubernetes/kubernetes

1.1 Cloud Native Computing Foundation (CNCF)

A Cloud Native Computing Foundation (CNCF) é um projeto da Linux Foundation fundado em 2015 para ajudar a avançar a tecnologia de contêiner [1] e alinhar o setor de tecnologia em torno de seu desenvolvimento.

Foi lançado com o gerenciador de cluster de contêiner de código aberto Kubernetes 1.0, que foi contribuído pelo Google como uma tecnologia semente para a Linux Foundation. Os membros fundadores incluem Google, CoreOS, Mesosphere, Red Hat, Twitter, Huawei, Intel, Cisco, IBM, Docker, Univa e VMware. [2] [3] Hoje, o CNCF é apoiado por mais de 450 membros. Um programa foi anunciado no CloudNativeDay inaugural em Toronto em agosto de 2016 para estabelecer representantes qualificados de tecnologias gerenciadas por CNCF. [4]
https://www.cncf.io/

Verificação do exame
https://training.linuxfoundation.cn/certificates/1

insira a descrição da imagem aqui

2. Projeto

O Kubernetes é estruturalmente definido por uma série de blocos de construção cujo objetivo é fornecer um mecanismo pelo qual os aplicativos podem ser implantados, mantidos e dimensionados juntos. Os componentes que compõem o Kubernetes são projetados para serem acoplados livremente e extensíveis para que possam atender a uma variedade de cargas de trabalho diferentes. A extensibilidade é amplamente fornecida pela API do Kubernetes, que é usada principalmente como componentes internos de extensões e contêineres executados no Kubernetes. [18]

3. Cápsula

A unidade básica de agendamento no Kubernetes é chamada de "pod". Essa classe abstrata permite a adição de abstrações de nível superior a componentes em contêineres. Um pod geralmente contém um ou mais contêineres, o que garante que eles estejam sempre no host e possam compartilhar recursos. [18] Cada pod no Kubernetes recebe um endereço IP exclusivo (intra-cluster) que permite que os aplicativos usem a mesma porta sem problemas conflitantes. [19] Um Pod pode definir um volume, como um diretório de disco local ou um disco de rede, e expô-lo em um contêiner dentro do pod. [20]. Os pods podem ser gerenciados manualmente por meio da API do Kubernetes ou delegados a um controlador para gerenciamento automático.

4. Construir

O Kubernetes segue um design de arquitetura mestre-escravo. Os componentes do Kubernetes podem ser divididos em componentes que gerenciam componentes de nós individuais e controlam as partes do plano. [18][26]

O Kubernetes Master é a unidade de controle principal do cluster, que gerencia suas cargas de trabalho e direciona a comunicação pelo sistema. O plano de controle do Kubernetes consiste em processos individuais, cada um dos quais pode ser executado em um único nó mestre ou vários nós mestres que suportam clusters de alta disponibilidade [26]. Os vários componentes do plano de controle do Kubernetes são os seguintes:

4.1 etc.

etcd (backup de arquivo de página, armazenado no Internet Archive) é um componente de armazenamento de dados de chave-valor distribuído, leve e persistente desenvolvido pelo CoreOS para armazenar dados de configuração de cluster de forma confiável. Esse componente pode representar o estado geral do cluster em um determinado momento. Outros componentes, após notar a mudança no armazenamento, mudarão para o estado correspondente. [26]

4.2 Servidor de API

O servidor de API é um componente chave e fornece interfaces internas e externas do Kubernetes usando a API do Kubernetes e JSON sobre HTTP. [18][27] O servidor API processa e valida solicitações REST e atualiza o estado de objetos API etcd (backups de arquivo de página, armazenados no Internet Archive), permitindo que os clientes configurem cargas de trabalho e contêineres entre nós de trabalho.

4.3 Agendador

O T-Scheduler é um componente conectável que escolhe em qual nó um pod não agendado (a entidade fundamental gerenciada pelo agendador) deve ser executado com base na disponibilidade de recursos. O agendador rastreia a utilização de recursos em cada nó para garantir que as cargas de trabalho não excedam os recursos disponíveis. Para fazer isso, o agendador deve estar ciente dos requisitos de recursos, disponibilidade de recursos e várias outras restrições fornecidas pelo usuário e diretivas de política, como qualidade de serviço, requisitos de afinidade/antiafinidade, localização de dados etc. Essencialmente, o papel do escalonador é combinar o "fornecimento" de recursos com a "demanda" da carga de trabalho para manter um sistema estável e confiável. [28]

4.4 Gerenciamento do Controlador

O gerenciador do controlador é o controlador principal do Kubernetes, que inclui o controlador DaemonSet e o controlador de replicação, entre outros. Esse controlador se comunica com o servidor da API para criar, atualizar e excluir os recursos que eles gerenciam (pods, endpoints de serviço etc.) conforme necessário [27]

4.5 Nós do Kubernetes

Node, também conhecido como Worker ou Minion, é uma única máquina (ou máquina virtual) na qual os contêineres (cargas de trabalho) são implantados. Cada nó no cluster deve ter um tempo de execução de contêiner (como Docker e outros componentes mencionados abaixo) para se comunicar com a configuração de rede desses contêineres.

4.6 Kubelet

O Kubelet é responsável pelo estado de execução de cada nó (ou seja, garantir que todos os contêineres no nó estejam funcionando). Ele lida com a inicialização, parada e manutenção de contêineres de aplicativos (organizados em pods) conforme indicado pelo painel de controle. [18][29]

O Kubelet monitora o estado do pod e se não estiver no estado desejado, o pod será reimplantado no mesmo nó. As mensagens de status do nó são entregues aos hosts de retransmissão a cada poucos segundos. Quando o mestre detecta uma falha de nó, o controlador de replicação observa essa mudança de estado e inicia os pods em outros nós íntegros. [solicitação de origem]

4.7 Contêineres

Os contêineres pertencem aos pods. Os contêineres são o nível mais baixo de microsserviços que executam aplicativos, bibliotecas e suas dependências. Ao vincular um IP externo, o contêiner pode ser acessado a partir da rede externa.

4.8 proxy Kube

O proxy Kube é uma implementação de um proxy de rede e balanceador de carga que dá suporte à abstração de serviço, bem como a outras operações de rede. [18] Com base no IP e na porta da solicitação recebida, esse componente encaminha o tráfego para o contêiner apropriado especificado.

4.9 cConselheiro

O cAdvisor é um componente de agente que monitora e coleta o uso de recursos e métricas de desempenho, como CPU, memória, arquivo e uso de rede de contêineres em cada nó.

5. Prática de Nuvem Alibaba

https://ecs.console.aliyun.com/

Servidor de nuvem ECS --> Criar instância
insira a descrição da imagem aqui
Selecione instância preemptiva (barata), selecione Zona de disponibilidade C para Zona de disponibilidade, não escolha alocação aleatória

insira a descrição da imagem aqui
insira a descrição da imagem aqui

insira a descrição da imagem aqui
insira a descrição da imagem aqui
Clique em Admin Console
insira a descrição da imagem aqui

insira a descrição da imagem aqui
Modifique o nome master01, node01, node02

insira a descrição da imagem aqui
SecureCRT SSH2 se conecta ao ip da rede pública, master01, node01, node02
insira a descrição da imagem aqui
mantém sessão
insira a descrição da imagem aqui

pesquisa do google opsx

https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.24a01b11k30fre

Docker CE é o novo nome do produto gratuito Docker. O Docker CE inclui a plataforma Docker completa e é ideal para desenvolvedores e equipes de operações que criam aplicativos de contêiner.

Endereço de download: https://mirrors.aliyun.com/docker-ce/

Método de configuração
Ubuntu 14.04/16.04 (instale usando apt-get)

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

Modo de economia de tempo de inatividade (sem cobrança pelo tempo de inatividade original)

Lembre-se, se você não usá-lo, pare sem cobrar
insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/zgpeace/article/details/124055598
Recomendado
Clasificación