Meus sites
Sites relevantes
Contato
Email: devanon.kyosha@gmail.com
Meus sites
Sites relevantes
Contato
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.
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.
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