Pesquisa de site

Como instalar um cluster Kubernetes no CentOS 7


Doado pelo Google à comunidade Opensource, o Kubernetes tornou-se agora a ferramenta preferida de gerenciamento de contêineres. Ele pode gerenciar e orquestrar não apenas tempos de execução do docker, mas também tempos de execução de contêineres e Rkt.

Um cluster Kubernetes típico geralmente teria um nó mestre e vários nós de trabalho ou Minions. Os nós de trabalho são então gerenciados a partir do nó mestre, garantindo assim que o cluster seja gerenciado a partir de um ponto central.

Também é importante mencionar que você também pode implantar um cluster Kubernetes de nó único, que geralmente é recomendado para cargas de trabalho muito leves e que não sejam de produção. Para isso, você pode usar o Minikube, que é uma ferramenta que executa um cluster Kubernetes de nó único em uma máquina virtual em seu nó.

Leitura recomendada: Como instalar um cluster Kubernetes no CentOS 8

Neste tutorial, vamos percorrer uma instalação de cluster Kubernetes de vários nós no CentOS 7 Linux. Este tutorial é baseado em linha de comando, então você precisará acessar a janela do seu terminal.

Pré-requisitos

  1. Vários servidores executando Centos 7 (1 nó mestre, 2 nós de trabalho). É recomendado que seu Nó Mestre tenha pelo menos 2 CPUs, embora este não seja um requisito estrito.
  2. Conectividade com a Internet em todos os seus nós. Estaremos buscando pacotes Kubernetes e docker do repositório. Da mesma forma, você precisará ter certeza de que o gerenciador de pacotes yum está instalado por padrão e pode buscar pacotes remotamente.
  3. Você também precisará de acesso a uma conta com privilégios sudo ou root. Neste tutorial, usarei minha conta root.

Nosso cluster de 3 nós será parecido com isto:

Instalação do Cluster Kubernetes no Master-Node

Para que o Kubernetes funcione, você precisará de um mecanismo de conteinerização. Para esta instalação, usaremos o docker por ser o mais popular.

As etapas a seguir serão executadas no Nó Mestre.

Etapa 1: preparar nome de host, firewall e SELinux

Em seu nó mestre, defina o nome do host e se você não tiver um servidor DNS, atualize também seu arquivo /etc/hosts.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Você pode executar ping em worker-node-1 e worker-node-2 para testar se seu arquivo host atualizado está correto usando o comando ping.

ping 10.128.0.29
ping 10.128.0.30

Em seguida, desative o SElinux e atualize suas regras de firewall.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

Defina as seguintes regras de firewall nas portas. Certifique-se de que cada comando firewall-cmd retorne um sucesso.

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/bridge/bridge-nf-call-iptables

Etapa 2: configurar o repositório Kubernetes

Você precisará adicionar repositórios Kubernetes manualmente, pois eles não vêm instalados por padrão no CentOS 7.

cat <<EOF > /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 e o Docker

Com o repositório de pacotes pronto, você pode prosseguir e instalar os pacotes kubeadm e docker.

yum install kubeadm docker -y 

Quando a instalação for concluída com sucesso, habilite e inicie ambos os serviços.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

Etapa 4: inicializar o mestre do Kubernetes e configurar o usuário padrão

Agora estamos prontos para inicializar o mestre do Kubernetes, mas antes disso você precisa desabilitar o swap para executar o comando “kubeadm init“.

swapoff -a

A inicialização do mestre Kubernetes é um processo totalmente automatizado gerenciado pelo comando “kubeadm init“ que você executará.

kubeadm init

Você pode querer copiar a última linha e salvá-la em algum lugar porque precisará executá-la nos nós de trabalho.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Dica: Às vezes, este comando pode reclamar dos argumentos (args) passados, então edite-o para evitar qualquer erros. Portanto, você excluirá o caractere '\' que acompanha o --token e seu comando final ficará assim.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Após inicializar o Kubernetes com sucesso, você precisará permitir que seu usuário comece a usar o cluster. No nosso caso, queremos executar esta instalação como usuário root, portanto iremos em frente e executaremos esses comandos como root. Você pode mudar para um usuário habilitado para sudo de sua preferência e executar o seguinte usando sudo.

Para usar root, execute:

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, execute:

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

Agora verifique se o comando kubectl está ativado.

kubectl get nodes

Neste ponto, você também notará que o status do nó mestre é ‘NotReady’. Isso ocorre porque ainda não implantamos a rede de pods no cluster.

A rede pod é a rede de sobreposição do cluster, que é implantada sobre a rede de nós atual. Ele foi projetado para permitir conectividade em todo o pod.

Etapa 5: configure sua rede de pods

A implantação do cluster de rede é um processo altamente flexível dependendo das suas necessidades e há muitas opções disponíveis. Como queremos manter nossa instalação o mais simples possível, usaremos o plugin Weavenet 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 quiser ver mais opções, confira aqui.

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

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Agora, se você verificar o status do seu nó mestre, ele deverá estar ‘Pronto’.

kubectl get nodes

A seguir, adicionamos os nós de trabalho ao cluster.

Configurando nós de trabalho para ingressar no cluster Kubernetes

As etapas a seguir serão executadas nos nós de trabalho. Essas etapas devem ser executadas em cada nó de trabalho ao ingressar no cluster Kubernetes.

Etapa 1: preparar nome de host, firewall e SELinux

Em seu worker-node-1 e worker-node-2, defina o nome do host e caso você não tenha um servidor DNS, atualize também seu mestre e trabalhador nós no arquivo /etc/hosts.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Você pode executar ping em master-node para testar se seu arquivo host atualizado está correto.

Em seguida, desative o SElinux e atualize suas regras de firewall.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Defina as seguintes regras de firewall nas portas. Certifique-se de que todos os comandos firewall-cmd retornem sucesso.

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
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Etapa 2: configurar o repositório Kubernetes

Você precisará adicionar repositórios Kubernetes manualmente, pois eles não vêm pré-instalados no CentOS 7.

cat <<EOF > /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 e o Docker

Com o repositório de pacotes pronto, você pode prosseguir e instalar os pacotes kubeadm e docker.

yum install kubeadm docker -y 

Inicie e habilite ambos os serviços.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

Etapa 4: Junte-se ao nó de trabalho ao cluster Kubernetes

Agora exigimos o token que o kubeadm gerou para ingressar no cluster. Você pode copiá-lo e colá-lo em node-1 e node-2 se tiver copiado em algum lugar.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Conforme sugerido na última linha, volte ao seu nó-mestre e verifique se nó de trabalho-1 e nó de trabalho-2 se juntaram ao cluster usando o seguinte comando.

kubectl get nodes

Se todas as etapas forem executadas com êxito, você deverá ver node-1 e node-2 com status pronto no nó mestre.

Leitura recomendada: Como implantar o Nginx em um cluster Kubernetes

Neste ponto, concluímos com sucesso a instalação de um cluster Kubernetes no Centos 7 e integramos com sucesso dois nós de trabalho. Agora você pode começar a criar seus pods e implantar seus serviços.