Kubernetes: Criando um serviço e expondo-o ao mundo externo com o NodePort via Linha de Comando: Difference between revisions

From Wiki
 
(3 intermediate revisions by the same user not shown)
Line 51: Line 51:
  NAME          TYPE        CLUSTER-IP      EXTERNAL-IP  PORT(S)        AGE
  NAME          TYPE        CLUSTER-IP      EXTERNAL-IP  PORT(S)        AGE
  kubernetes    ClusterIP  10.96.0.1      <none>        443/TCP        6d20h
  kubernetes    ClusterIP  10.96.0.1      <none>        443/TCP        6d20h
  web-service  NodePort    10.100.253.18  <none>        80:31240/TCP  14s
  web-service  NodePort    10.100.253.18  <none>        80:'''31240'''/TCP  14s


O webservice foi criado no IP 10.100.253.18, e ao receber requisições na porta 31240 encaminha para a porta 80. O Pod a ser utilizado é realizado da instrução '''select'''.
O webservice foi criado no IP 10.100.253.18, e ao receber requisições na porta 31240 encaminha para a porta 80. O Pod a ser utilizado é realizado da instrução '''select'''.
Line 79: Line 79:
O valor em '''Endpoints''' informa os ips dos Pods.
O valor em '''Endpoints''' informa os ips dos Pods.


= Abrindo o serviço no navegador =
== Abrindo o serviço no navegador ==


== No Minikube ==
=== No Minikube ===


Neste exemplo estamos utilizando o minikube, vamos pegar o ip
Neste exemplo estamos utilizando o minikube, vamos pegar o ip
Line 101: Line 101:




== Na IBM Cloud ==
=== Na IBM Cloud ===


Pegando o nome dos clusters
Pegando o nome dos clusters
Line 107: Line 107:
  '''ibmcloud ks clusters'''
  '''ibmcloud ks clusters'''
   
   
Resultado:
  ID                    Estado  Criado      Trabalhadores  Local  Versão        Nome do Grupo de Recursos  Provedor
 
  Nome                ID                    Estado  Criado      Trabalhadores  Local  Versão        Nome do Grupo de Recursos  Provedor
  '''ebasso-k8s-cluster'''  brl8ua4f0d7u1d9g9lt0  normal  6 days ago  1              mil01  1.18.3_1514  default                    classic  
  '''ebasso-k8s-cluster'''  brl8ua4f0d7u1d9g9lt0  normal  6 days ago  1              mil01  1.18.3_1514  default                    classic  




  '''ibmcloud ks workers --cluster ebasso-k8s-cluster'''
  '''ibmcloud ks workers --cluster ebasso-k8s-cluster'''
 
Resultado:
 
  ID                                                      IP Público        IP Particular    Tipo  Estado  Status  Zona    Versão
  ID                                                      IP Público        IP Particular    Tipo  Estado  Status  Zona    Versão
  kube-brl8ua4f0d7u1d9g9lt0-ebassok8scl-default-00000015  '''159.122.179.120'''  10.144.185.225  free  normal  Ready    mil01  1.18.4_1517
  kube-brl8ua4f0d7u1d9g9lt0-ebassok8scl-default-00000015  '''159.122.179.120'''  10.144.185.225  free  normal  Ready    mil01  1.18.4_1517


Abra o navegador e acesse o endereço <nowiki>http://159.122.179.120:31240</nowiki>
Abra o navegador e acesse o endereço:
 
<nowiki>http://159.122.179.120:31240</nowiki>


= Ver também =
= Ver também =

Latest revision as of 22:16, 23 June 2020

Vamos criar um serviço e expor ele ao mundo externo com o NodePort via Linha de Comando

Este exemplo continua o que foi realizado em Kubernetes: Deploy de uma aplicação via Linha de comando


Via linha de comando (CLI)

Executar os comandos:

kubectl expose web-service --port=80 --type=NodePort


Via arquivo

Arquivo de deployment webserver-svc.yaml

1) Crie o arquivo webserver-svc.yaml e adicione o conteúdo:

apiVersion:   v1
kind:         Service
metadata:
  name:       web-service
  labels:
    run:      web-service
spec:
  type:       NodePort
  ports:
  - port:     80
    protocol: TCP
  selector:
    app:      nginx 
 

Salve e feche o arquivo.

2) Execute o comando kubectl para fazer o deploy das informações no arquivo

kubectl create -f webserver-svc.yaml

service "web-service" created

Verificando o que foi criado

  • Services
kubectl get services

NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes    ClusterIP   10.96.0.1       <none>        443/TCP        6d20h
web-service   NodePort    10.100.253.18   <none>        80:31240/TCP   14s

O webservice foi criado no IP 10.100.253.18, e ao receber requisições na porta 31240 encaminha para a porta 80. O Pod a ser utilizado é realizado da instrução select.

Para o K8s é indiferente a ordem para criar o deployment ou o serviço.

Vamos pegar mais detalhes:

kubectl describe svc web-service

Name:                     web-service
Namespace:                default
Labels:                   run=web-service
Annotations:              <none>
Selector:                 app=nginx
Type:                     NodePort
IP:                       10.100.253.18
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31240/TCP
Endpoints:                172.17.0.3:80,172.17.0.5:80,172.17.0.6:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

O valor em Endpoints informa os ips dos Pods.

Abrindo o serviço no navegador

No Minikube

Neste exemplo estamos utilizando o minikube, vamos pegar o ip

minikube ip

192.168.99.100

Abra o navegador e acesse o endereço

http://192.168.99.100:31240/

Você poderá ver a "Nginx welcome page".


Outra maneira para acessar o serviço é executar o comando:

minikube service web-service


Na IBM Cloud

Pegando o nome dos clusters

ibmcloud ks clusters

ID                     Estado   Criado       Trabalhadores   Local   Versão        Nome do Grupo de Recursos   Provedor
ebasso-k8s-cluster   brl8ua4f0d7u1d9g9lt0   normal   6 days ago   1               mil01   1.18.3_1514   default                     classic 


ibmcloud ks workers --cluster ebasso-k8s-cluster

ID                                                       IP Público        IP Particular    Tipo   Estado   Status   Zona    Versão
kube-brl8ua4f0d7u1d9g9lt0-ebassok8scl-default-00000015   159.122.179.120   10.144.185.225   free   normal   Ready    mil01   1.18.4_1517

Abra o navegador e acesse o endereço:

http://159.122.179.120:31240

Ver também