Danilo Cutrim

Instalando MicroK8s

Instalando MicroK8s

Neste tutorial, vamos aprender a instalar e configurar o MicroK8s, uma versão leve do Kubernetes, desenvolvido pela Canonical, no Ubuntu 20.04.

1. Overview

MicroK8s é uma distribuição do Kubernetes desenvolvida pela Canonical e projetada para oferecer simplicidade, eficiência e rapidez em ambientes de desenvolvimento, testes e IoT, ele se destaca pela sua facilidade de instalação e configuração mínima, tornando-o uma escolha ideal para cenários que demandam agilidade e baixo consumo de recursos.

O MicroK8s possui um ecossistema inclui dezenas de extensões que fornecem funcionalidades e recursos adicionais chamados Addons.

Veja a lista de Addons em: Addons

E também Como gerenciar Addons : Gerenciando Addons

2. Instalando e configurando o Microk8s

Neste tutorial vamos instalar o MicroK8s em uma máquina com Ubuntu 20.04 LTS, mas também é possivel instalar em outras distribuições linux que suportem snapd.

A instalação do Microk8s é simples e pode ser feita com os comandos abaixo:

1. Instalar o Microk8s
1
sudo snap install microk8s --classic 

ou caso queira instalar uma versão especifica:

1
sudo snap install microk8s --classic --channel=1.30
2. Configurar o Grupo

Ao instalar o MicroK8s, um novo grupo chamado microk8s é criado para que sejam executados comandos que exigem permissões de administrador. Para adicionar seu usuário ao grupo microk8s, execute o seguinte comando:

1
2
3
sudo usermod -a -G microk8s $USER
mkdir -p ~/.kube
chmod 0700 ~/.kube

Agora é preciso reiniciar a sessão para que as alterações tenham efeito.

1
su - $USER

ou

1
newgrp microk8s
3. Verifique o status do cluster
1
microk8s status --wait-ready

a saida espera deve parecer com :

1
2
3
4
5
microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
...
4. Acessando o cluster

Listando os nodes do cluster:

1
microk8s kubectl get nodes
1
2
NAME                   STATUS   ROLES    AGE   VERSION
danilo-thinkpad-t480   Ready    <none>   31d   v1.29.4

Listando os Services do cluster:

1
microk8s kubectl get services
1
2
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.151.123.1   <none>        443/TCP   31d

Caso queira configurar um alias para o comando microk8s kubectl execute o seguinte comando:

1
alias kubectl='microk8s kubectl'

Agora não é mais necessário digitar microk8s kubectl para executar comandos kubectl, apenas kubectl é suficiente.

5. Habilitando Addons

Após a instalação do Microk8s, é recomendado habilitar alguns addons, como DNS, para facilitar a comunicação entre os serviços.

1
microk8s enable dns
5. Habilitando Addon Dashboard

Com o microk8s também é possivel instalar o dashboard do kubernetes, para isso execute o seguinte comando:

1
microk8s enable dashboard

Para ver o status dos pods, services, deployments e replicaset execute o seguinte comando:

1
kubectl get all --all-namespaces

ou

1
microk8s kubectl get all --all-namespaces

Output

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
NAMESPACE            NAME                                             READY   STATUS    RESTARTS        AGE
container-registry   pod/registry-6c9fcc695f-crdlc                    1/1     Running   72 (3h2m ago)   31d
kube-system          pod/calico-kube-controllers-77bd7c5b-pgzm5       1/1     Running   77 (3h2m ago)   31d
kube-system          pod/calico-node-2tl6k                            1/1     Running   60 (3h2m ago)   31d
kube-system          pod/coredns-864597b5fd-tf6pn                     1/1     Running   72 (3h2m ago)   31d
kube-system          pod/dashboard-metrics-scraper-5657497c4c-w8fzl   1/1     Running   73 (3h2m ago)   31d
kube-system          pod/hostpath-provisioner-756cd956bc-s7rgr        1/1     Running   82 (3h2m ago)   31d
kube-system          pod/kubernetes-dashboard-54b48fbf9-k27qr         1/1     Running   71 (3h2m ago)   31d
kube-system          pod/metrics-server-848968bdcd-n6bjj              1/1     Running   71 (3h2m ago)   31d

NAMESPACE            NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
container-registry   service/registry                    NodePort    10.152.183.204   <none>        5000:32000/TCP           31d
default              service/kubernetes                  ClusterIP   10.152.183.1     <none>        443/TCP                  31d
kube-system          service/dashboard-metrics-scraper   ClusterIP   10.152.183.218   <none>        8000/TCP                 31d
kube-system          service/kube-dns                    ClusterIP   10.152.183.10    <none>        53/UDP,53/TCP,9153/TCP   31d
kube-system          service/kubernetes-dashboard        ClusterIP   10.152.183.70    <none>        443/TCP                  31d
kube-system          service/metrics-server              ClusterIP   10.152.183.240   <none>        443/TCP                  31d

NAMESPACE     NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-system   daemonset.apps/calico-node   1         1         1       1            1           kubernetes.io/os=linux   31d

NAMESPACE            NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
container-registry   deployment.apps/registry                    1/1     1            1           31d
kube-system          deployment.apps/calico-kube-controllers     1/1     1            1           31d
kube-system          deployment.apps/coredns                     1/1     1            1           31d
kube-system          deployment.apps/dashboard-metrics-scraper   1/1     1            1           31d
kube-system          deployment.apps/hostpath-provisioner        1/1     1            1           31d
kube-system          deployment.apps/kubernetes-dashboard        1/1     1            1           31d
kube-system          deployment.apps/metrics-server              1/1     1            1           31d

NAMESPACE            NAME                                                   DESIRED   CURRENT   READY   AGE
container-registry   replicaset.apps/registry-6c9fcc695f                    1         1         1       31d
kube-system          replicaset.apps/calico-kube-controllers-77bd7c5b       1         1         1       31d
kube-system          replicaset.apps/coredns-864597b5fd                     1         1         1       31d
kube-system          replicaset.apps/dashboard-metrics-scraper-5657497c4c   1         1         1       31d
kube-system          replicaset.apps/hostpath-provisioner-756cd956bc        1         1         1       31d
kube-system          replicaset.apps/kubernetes-dashboard-54b48fbf9         1         1         1       31d
kube-system          replicaset.apps/metrics-server-848968bdcd              1         1         1       31d

Na linha 16 é possivel ver o serviço do dashboard service/kubernetes-dashboard, o ip 10.152.183.70 e a porta 443/TCP.

1
kube-system          service/kubernetes-dashboard        ClusterIP   10.152.183.70    <none>        443/TCP                  31d

Para acessar o dashboard bastar acessar o endereço https://10.152.183.70:443 e acessar a tela de login. login

Para obter o token de acesso ao dashboard execute o seguinte comando:

1
2
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token

Cole o token no campo de login e clique em Sign in para acessar o dashboard.

dash

Pronto, agora você tem um cluster Kubernetes rodando em sua máquina local. caso queira desligar o cluster execute o seguinte comando:

1
microk8s stop

Para iniciar o cluster novamente execute o seguinte comando:

1
microk8s start

3. Referências

comments powered by Disqus