Meus sites


Sites relevantes


Contato

Email: devanon.kyosha@gmail.com

Try scrolling the rest of the page to see this option in action.

Sejam bem vindos

Fabrício Web Home Page

Desenvolvimento PHP Laravel, Manutenção em sites PHP, Arquitetura de serviços Web, Geração de endpoints REST API e Tutoriais.

Sejam bem vindos à página Fabrício Web. Eu sou o Fabrício Dias.
Passarei aqui uma parte significativa de minha experiência. Acompanhe minhas publicações. Vou publicar amenidades nerds também. O site está em desenvolvimento, e vou colocar melhorias ainda. E com certeza vou adicionar interação com o leitor em breve.

Fabrício Dias de Oliveira

Kubernetes e Ubuntu - Multinode com Microk8s

O Microk8s é uma implementação do Kubernetes para o Ubuntu. Esse artigo é um hello world do programa, já introduzindo o conceito de multinodes (esse é o trunfo máximo do Kubernetes). Importante: não riam do ícone que escolhi, essa matéria é relacionada a Ubuntu e Kubernetes. Então escolhi o ícone do Kubernetes porque é mais pertinente.

Primeiro vamos instalar o Microk8s em todos os nodes Ubuntu - usei o Virtual Box com duas máquinas Ubuntu de 4 Gigabytes de RAM e placas em modo bridge e host Ubuntu:

sudo snap install microk8s --classic

Configure em seu control pane o arquivo hosts:

vim /etc/hosts

E coloque as entradas para os nodes com IP e nome. Isso é importante ou o modo multinode não vai achar ninguém - ps: os nomes devem ser totamente em minúsculo.

Usaremos para isso StatefulSet ou Deployment, aliado com armazenamento nfs. Inicialmente instale o kit nfs em todos os nodes

 

sudo apt install nfs-kernel-server -y

 

Em seguida, instale o addon nfs em todos os nodes

 

microk8s enable community

microk8s enable nfs

 

Adicione os nodes, como WORKERS

Curiosamente apesar de não intuitivo, isso fará os pods serem distribuídos por todos os nodes incluindo o control pane. No control pane faça:

 

microk8s add-node

 

Copie o comando marcado com worker:

 

microk8s join 192.168.1.12:25000/e9b7521a71e0d165609c2c4ee81b16e4/331b0c6eca78 --worker

E o execute no node para o adicionar ao cluster. Realize um microk8s add-node para cada node, pois o comando gera um token único.

Adicione os arquivos do cluster

microk8s kubectl apply -f nginx-full.yaml

Esse passo é importante, pois em testes não foi possível fazer o upload do arquivo depois de adicionar os demais addons.

Habilite os demais addons essenciais para o cluster

 

microk8s enable  dashboard

microk8s enable  metrics-server

 

Crie PersistentVolumeClaim com storageClassName nfs

 

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: csi-pvc-nginx

spec:

  storageClassName: "nfs"

  accessModes: [ReadWriteMany]

  resources:

    requests:

      storage: 5G

 

E monte o replicaset pertinente ao projeto

 

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-deployment

spec:

  replicas: 5

  template:

    metadata:

      name: nginx

      labels:

        app: nginx-app

    spec:

      containers:

        - name: nginx-php-fpm

          image: wyveo/nginx-php-fpm:php74

          ports:

            - containerPort: 80

          volumeMounts:

          - mountPath: /usr/share/nginx/html

            name: disco002

          resources:

            requests:

              cpu: 10m

      volumes:

      - name: disco002

        persistentVolumeClaim:

          claimName: csi-pvc-nginx

  selector:

    matchLabels:

      app: nginx-app

 

Exemplo de um yaml de um cluster nginx

 

nginx-full.yaml

.

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: csi-pvc-nginx

spec:

  storageClassName: "nfs"

  accessModes: [ReadWriteMany]

  resources:

    requests:

      storage: 5G

---

apiVersion: v1

kind: Service

metadata:

  name: service-nginx

spec:

  type: LoadBalancer

  ports:

    - port: 80

      nodePort: 30000

  selector:

    app: nginx-app

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-deployment

spec:

  replicas: 5

  template:

    metadata:

      name: nginx

      labels:

        app: nginx-app

    spec:

      containers:

        - name: nginx-php-fpm

          image: wyveo/nginx-php-fpm:php74

          ports:

            - containerPort: 80

          volumeMounts:

          - mountPath: /usr/share/nginx/html

            name: disco002

          resources:

            requests:

              cpu: 10m

      volumes:

      - name: disco002

        persistentVolumeClaim:

          claimName: csi-pvc-nginx

  selector:

    matchLabels:

      app: nginx-app

Assista os nodes trabalhando

Subindo a configuração:

microk8s kubectl apply -f nginx-full.yaml

Assistir os pods sendo montados:

microk8s kubectl get pods -o wide --watch

Quais nodes fazem parte do meu cluster:

microk8s kubectl get nodes


 

Fabrício Dias de Oliveira

Procurar artigos