Como instalar um cluster Kubernetes no CentOS 8

Como instalar um cluster Kubernetes no CentOS 8

O processo de instalação de um Cluster de Kubernetes sobre CENTOS 8 é quase semelhante ao de CENTOS 7 (que você pode passar por aqui), mas o processo aqui tem algumas mudanças. Essas mudanças, principalmente giram em torno da instalação de Docker.

Começando de CENTOS 8 (e por extensão RHEL 8), Docker agora foi substituído nativamente por Podman e Buildah quais são ferramentas de Chapéu vermelho. De fato, o pacote Docker foi removido do repositório de pacote padrão.

Com este movimento, o Chapéu vermelho A equipe pretende simplificar o processo de criação e uso de contêineres, sem precisar de permissões especiais, e ao mesmo tempo, mantendo a compatibilidade com as imagens do Docker e operando -as sem precisar de um daemon. Podman promete oferecer mais flexibilidade ao executar Kubernetes ambientes, mas o júri permanece lá fora.

Para este artigo, seguiremos o processo de instalação Kubernetes com um CENTOS 8 plataforma, executando em Docker-CE (Edição da comunidade). Em um artigo posterior, também percorreremos uma instalação semelhante, usando Podman para nossos recipientes.

Pré -requisitos

  1. Três servidores executando o CentOS 8 - 1 nó mestre e 2 nós do trabalhador.
  2. Recomenda -se que seus nós tenham pelo menos 2 CPUs com 2 GB de RAM ou mais por máquina. Este não é um requisito rigoroso, mas é amplamente impulsionado pelas necessidades do aplicativo que você pretende executar.
  3. Conectividade da Internet em todos os seus nós. Nós estaremos buscando Kubernetes e Docker pacotes do repositório. Da mesma forma, você precisará garantir que o gerenciador de pacotes DNF esteja instalado por padrão e possa buscar pacotes remotamente.
  4. Todos os seus nós também devem ser capazes de se conectar, em uma rede pública ou privada, o que estiver disponível.
  5. Você também precisará de acesso a uma conta com sudo ou privilégios de raiz. Neste tutorial, estarei usando minha conta raiz.

Precaução

A maioria dos nós geralmente vem com único MAC endereços, no entanto, em alguns casos únicos, alguns Máquinas virtuais pode ter endereços MAC idênticos. Portanto, é recomendável que você confirme que o Product_uuid e a MAC O endereço não é idêntico em nenhum dos nós.

Kubernetes usa esses valores para identificar exclusivamente os nós no cluster. Se esses valores não forem exclusivos para cada nó, o processo de instalação poderá falhar.

Para verificar o endereço MAC da interface de rede e compará -lo.

# link IP 

Para verificar o Product_uuid e compare, execute o seguinte comando.

# cat/sys/classe/dmi/id/product_uuid 

Arquitetura lógica

Nossa instalação foi projetada para ter o Nó mestre controlando o Nós do trabalhador. No final desta instalação, nossa arquitetura lógica parecerá algo assim.

Nó mestre - Esta máquina geralmente atua como o plano de controle e executa o banco de dados de cluster e o servidor de API (com o qual a CLI KUBECTL se comunica).

Nossos 3 nós Cluster de Kubernetes vai parecer algo assim:

Diagrama de cluster de Kubernetes

Instalação do cluster de Kubernetes no nó mestre

Para Kubernetes Para trabalhar, você precisará de um mecanismo de contêinerização. Como mencionado, estaremos usando Docker-CE.

As seguintes instituições serão realizadas em CentOS 8 Nó mestre.

Etapa 1: Prepare o nome do host, o firewall e o Selinux

Nas suas CentOS 8 Nó mestre, Defina o nome do host do sistema e atualize o DNS em seu /etc/hosts arquivo.

# hostnamectl set-hostname mestre nó # cat <> etc /hosts 192.168.0.47 Nó mestre 192.168.0.48 Node-1 Nó do trabalhador-1 192.168.0.49 nó-2-nó-2 eof 

Em seguida, ping no seu Nó do trabalhador-1 e Nó do trabalhador-2 Para verificar se o seu arquivo host atualizado está funcionando corretamente usando o comando ping.

# ping 192.168.0.48 # ping 192.168.0.49 

Em seguida, desativar Selinux, Como isso é necessário para permitir que os contêineres acessem o sistema de arquivos host, necessário para as redes de pod e outros serviços.

# setenforce 0 

Contexto setEnforce para 0 Definir efetivamente o Selinux como permissivo, que efetivamente desativa o Selinux até a próxima reinicialização. Para desativá -lo completamente, use o comando abaixo e reinicie.

# sed -i - -sollow -symlinks 's/selinux = aplicativo/selinux = desativado/g'/etc/sysconfig/selinux # reinicialização 

Kubernetes faz uso de várias portas para comunicação e acesso e essas portas precisam estar acessíveis a Kubernetes e não limitadas pelo firewall.

Portas Kubernetes

Configure as regras do firewall nos portos.

# firewall-cmd --permanent --add-port = 6443/tcp # firewall-cmd --permanent --add-port = 2379-2380/tcp # firewall-cmd --permanent --add-port = 10250/tcp # firewall-cmd --permanent --add-port = 10251/tcp # firewall-cmd --permanent --add-port = 10252/tcp # firewall-cmd --permanent --add-port = 10255/tcp # firewall -CMD--Reload # modProbe BR_NETFILTER # echo '1'>/proc/sys/net/ponte/ponte-nf-call-iptables 

Etapa 2: Instale Docker-CE no CentOS 8

Você precisará adicionar o Docker repositório primeiro, pois não está mais na lista de pacotes padrão usando o seguinte DNF Config-manager comando.

# dnf config-manager --add-repo = https: // download.Docker.com/linux/CentOS/Docker-CE.repo 

Também instale contêiner.io Pacote disponível como um daemon que gerencia o ciclo de vida completo do contêiner de seu sistema host, desde a transferência e armazenamento de imagens até a execução e supervisão de contêineres a armazenamento de baixo nível a anexos de rede e além.

# dnf install https: // download.Docker.com/linux/CentOS/7/x86_64/estábulo/pacotes/contêinerd.io-1.2.6-3.3.EL7.x86_64.RPM 

Agora instale a versão mais recente de um Docker-CE pacote.

# DNF Instale Docker-CE 

Agora você pode ativar e iniciar o serviço do Docker.

# SystemCtl Ativar Docker # SystemCtl Start Docker 

Etapa 3: Instale Kubernetes (Kubeadm) no CentOS 8

Em seguida, você precisará adicionar Kubernetes repositórios manualmente, pois não são instalados por padrão em CENTOS 8.

# gato < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF 

KUBEADM Ajuda você a inicializar um cluster Kubernetes mínimo viável que está em conformidade com as práticas recomendadas. Com KUBEADM, Seu cluster deve passar nos testes de conformidade de Kubernetes.

KUBEADM Também suporta outras funções do ciclo de vida do cluster, como atualizações, rebaixamentos e gerenciamento de tokens de bootstrap. Kubeadm também é fácil de integração com outras ferramentas de orquestração, como Ansible e Terraform.

Com o pacote repo agora pronto, você pode seguir em frente e instalar KUBEADM pacote.

# dnf install kubeadm -y 

Quando a instalação for concluída com êxito, ative e inicie o serviço.

# SystemCtl Ativar Kubelet # SystemCtl Iniciar Kubelet 

Etapa 4: Crie um mestre de plano de controle com Kubeadm

O mestre de Kubernetes que age como o plano de controle Para o cluster, executa alguns serviços críticos necessários para o cluster. Como tal, o processo de inicialização fará uma série de pré -picadas para garantir que a máquina esteja pronta para executar o Kubernetes. Esses pré -conquistas expõem avisos e saem de erros. KUBEADM INIT Em seguida, downloads e instala os componentes do plano de controle do cluster.

Agora é hora de inicializar o mestre de Kubernetes, mas antes disso, você deve desativar a troca para executar “KUBEADM INIT“Command.

# swapoff -a 

Inicialização Kubernetes Master é um processo completamente automatizado que é controlado pelo “KUBEADM INIT“Comando como mostrado.

# kubeadm init 
Inicialize o mestre de Kubernetes

Em seguida, copie o seguinte comando e armazene -o em algum lugar, pois precisamos executar este comando nos nós do trabalhador posteriormente.

KUBEADM JUNTA 192.168.0.47: 6443 -TOKEN NU06LU.XRSUX0SS0IXTNMS5 \-Discovery-Token-Cer-Cert-Hash HA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJJMF7

Dica: Às vezes, o comando acima pode lançar erros sobre os argumentos passados, para evitar erros, você precisa remover o '\' personagem e seu comando final ficarão assim.

# kubeadm Junte -se 192.168.0.47: 6443 -TOKEN NU06LU.XRSUX0SS0IXTNMS5 -Discovery Token-CA-Cert-Hash SHA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJJJMF7 

Uma vez Kubernetes Inicializado com sucesso, você deve permitir que seu usuário comece a usar o cluster. Em nosso cenário, usaremos o usuário root. Você também pode iniciar o cluster usando o usuário sudo como mostrado.

Usar raiz, correr:

# mkdir -p $ home/.kube # cp -i/etc/kubernetes/admin.conf $ home/.kube/config # chown $ (id -u): $ (id -g) $ home/.kube/config 

Para usar um Usuário habilitado para sudo, correr:

$ mkdir -p $ home/.kube $ sudo cp -i/etc/kubernetes/admin.conf $ home/.kube/config $ sudo chown $ (id -u): $ (id -g) $ home/.kube/config 

Agora confirme que o Comando Kubectl é ativado.

# kubectl Get nós 
Verifique o status dos nós

Neste momento, você verá o status do nó mestre é 'Não está pronto'. Isso ocorre porque ainda estamos para implantar a rede de pod no cluster.

A rede POD é a rede de sobreposição para o cluster, que é implantada no topo da atual rede de nó. Ele foi projetado para permitir a conectividade em todo o pod.

Etapa 5: Configure sua rede de pod

Implantar o cluster de rede é um processo altamente flexível, dependendo de suas necessidades e há muitas opções disponíveis. Como queremos manter nossa instalação o mais simples possível, usaremos Weavenet plug -in que não requer nenhuma configuração ou código extra e fornece um endereço IP por pod, o que é ótimo para nós. Se você quiser ver mais opções, verifique aqui.

Esses comandos serão importantes para obter a configuração da rede POD.

# Exportar Kubever = $ (Kubectl Versão | Base64 | tr -d '\ n') # kubectl Aplicar -f "https: // nuvem.tecer.Works/K8s/Net?k8s-version = $ kubever " 
Configuração da rede de pod

Agora, se você verificar o status do seu nó mestre, deve ser 'Preparar'.

# kubectl Get nós 
Verifique o status dos nós mestre

Em seguida, adicionamos o nós do trabalhador para o cluster.

Adicionando nós do trabalhador ao cluster de Kubernetes

As seguintes instruções serão realizadas em cada Nó do trabalhador Ao ingressar no cluster Kubernetes.

Etapa 1: Prepare o nome do host, o firewall e o Selinux

Primeiro definiu o nome do host em seu Nó do trabalhador-1 e Nó do trabalhador-2, e então adicione as entradas do host ao /etc/hosts arquivo.

# hostnamectl set-hostname 'node-1' # cat <> etc /hosts 192.168.0.47 Nó mestre 192.168.0.48 Node-1 Nó do trabalhador-1 192.168.0.49 nó-2-nó-2 eof 

Em seguida, ping no seu nó mestre de você nós do trabalhador Para confirmar que seu arquivo host atualizado está funcionando bem usando o comando ping.

# 192.168.0.47 

Em seguida, desativar Selinux e atualize suas regras de firewall.

# setEnforce 0 # sed -i-siga-symlinks 's/selinux = aplicativo/selinux = desativado/g'/etc/sysconfig/Selinux # firewall-cmd --permanent --add-port = 6783/tcp # firewall- cmd --permanent --add-port = 10250/tcp # firewall-cmd --permanent --add-port = 10255/tcp # firewall-cmd --permanent --add-port = 30000-32767/tcp # firewall- cmd--reload # eco '1'>/proc/sys/net/ponte/ponte-nf-call-iptables 

Etapa 2: Setup Docker-CE e Kubernetes Repo

Adicione o repositório do docker primeiro usando o DNF Config-manager.

# dnf config-manager --add-repo = https: // download.Docker.com/linux/CentOS/Docker-CE.repo 

Em seguida, adicione o contêiner.io pacote.

# dnf install https: // download.Docker.com/linux/CentOS/7/x86_64/estábulo/pacotes/contêinerd.io-1.2.6-3.3.EL7.x86_64.RPM 

Com esses dois pacotes instalados, instale a versão mais recente de Docker-CE.

# DNF Instale Docker-CE 

Ativar e iniciar o serviço do Docker.

# SystemCtl Ativar Docker # SystemCtl Start Docker 

Você precisará adicionar Kubernetes repositórios manualmente, pois não são pré-instalados CENTOS 8.

# gato < /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF 

Etapa 3: Instale o Kubeadm no CentOS 8

Com o pacote repo agora pronto, você pode seguir em frente e instalar KUBEADM.

# dnf install kubeadm -y 

Inicie e habilite o serviço.

# SystemCtl Ativar Kubelet # SystemCtl Iniciar Kubelet 

Etapa 4: junte -se ao nó do trabalhador ao cluster Kubernetes

Agora exigimos o token que KUBEADM INIT gerado, para se juntar ao cluster. Você pode copiar e colá -lo para o seu nó-1 e nó-2 Se você tivesse copiado em algum lugar.

# kubeadm Junte -se 192.168.0.47: 6443 -TOKEN NU06LU.XRSUX0SS0IXTNMS5-Discovery-Token-Cer-Cert-Hash SHA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF780 

Conforme sugerido na última linha, volte para o seu Nó mestre e verifique se o trabalhador nó-1 e Nó do trabalhador-2 ingressou no cluster usando o seguinte comando.

# kubectl Get nós 
Verifique todos os nós Status no cluster de Kubernetes

Se todas as etapas funcionarem com sucesso, então você deve ver nó-1 e nó-2 em status pronto no Nó mestre. Neste ponto, agora você implantou com sucesso um cluster de Kubernetes em CENTOS 8.

Leitura recomendada: Como implantar o nginx em um cluster Kubernetes

Algumas limitações

O cluster que criamos aqui tem um único Nó mestre, e como tal, se o Nó mestre Falha, seu cluster pode perder dados e pode precisar ser recriado do zero.

Por esse motivo, recomendo uma configuração altamente disponível.