Skip to content

Latest commit

 

History

History
169 lines (137 loc) · 4.44 KB

questoes.md

File metadata and controls

169 lines (137 loc) · 4.44 KB

DAY2

Questão 1

Precisamos levantar algumas informações sobre o nosso cluster:

  • Quantos nodes são workers?
  • Quantos nodes são masters?
  • Qual o Pod Network (CNI) que estamos utilizando?
  • Qual o CIDR dos pods no segundo workers

Adicionar as informações colhidas no arquivo /opt/cluster_info.txt

Resposta 1 (clique para ver a resposta)
  • Quantos nodes são workers?
kubectl get nodes
  • Quantos nodes são masters?
kubectl get nodes
  • Qual o Pod Network (CNI) que estamos utilizando? Liste os pods do namespace kube-system e tente inferir a partir do resultado.
kubectl get pods -n kube-system

Uma outra forma é executando os seguintes comandos:

ssh NODE-WORKER
ls -lRha /etc/cni

Neste caso está sendo usado o weave-net. Comando para visualizar as configurações:

cat /etc/cni/net.d/10-weave.conflist | more

Referências:

  • Qual o CIDR dos pods no segundo workers Uma forma é executar o seguinte comando:
kubectl get node -o jsonpath="{range .items[*]}{.metadata.name} {.spec.podCIDR}"

Outra forma é obter a informação a partir do describe dos nodes

kubectl describe nodes NODE_NAME | grep PodCIDR

Se estiver usando kubeadm, pode executar qualquer um dos seguintes comandos no node master:

kubeadm config print init-defaults | grep Subnet
  
ps -aux | grep kube-apiserver | grep service-cluster-ip-range

sudo cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep service-cluster-ip-range

Outra forma de listar o CIDR usado pelo pods é olhando o log do CNI que está sendo utilizado. Os comandos a seguir funcionam se você estiver utilizando o weave-net.

kubectl get pods -n kube-system
kubectl logs pod/POD_NAME_WEAVE -c weave -n kube-system | grep address

Referências:

  • Qual é o nosso serviço de DNS para o nosso cluster? Liste os pods do namespace kube-system e tente inferir a partir do resultado.
kubectl get pods -n kube-system

Referências:

Questão 2

Precisamos criar um pod com as seguintes caracteristicas:

  • Precisa ter um container rodando a imagem do Nginx, com um volume montado no diretorio html do nginx.

  • Precisa ter um outro container rodando busybox e adicionando algum conteúdo ao arquivo /tmp/index.html

      => command: ["sh", "-c", "while true; do uname -a >> /tmp/index.html; date >> /tmp/index.html; sleep 2; done"]
  • Precisamos ter um outro container rodando o busybox e executando o seguinte comando:
      => command: ["sh", "-c", "tail -f /tmp/index.html"]
Resposta 2 (clique para ver a resposta)

Criamos o arquivo pod.yaml e nele adicionamos os tres containers

---
apiVersion: v1
kind: Pod
metadata:
  name: meu-pod
spec:
  containers:
    - name: container-1
      image: nginx
      ports:
        - containerPort: 80
      volumeMounts:
        - name: workdir
          mountPath: /usr/share/nginx/html
      resources:
        limits:
          memory: '1Gi'
          cpu: '800m'
        requests:
          memory: '700Mi'
          cpu: '400m'
    - name: container-2
      image: busybox
      command: ["sh", "-c", "while true; do uname -a >> /tmp/index.html; date >> /tmp/index.html; sleep 2; done"]
      volumeMounts:
        - name: workdir
          mountPath: /tmp/
    - name: container-3
      image: busybox
      command: ["sh", "-c", "tail -f /tmp/index.html"]
      volumeMounts:
        - name: workdir
          mountPath: /tmp/
  # These containers are run during pod initialization
  dnsPolicy: Default
  volumes:
    - name: workdir
      emptyDir: {}

Criando o pod

kubectl create -f pod.yaml

Verificando os logs par ver tudo funcionando

kubectl logs -f meu-pod container-1
kubectl logs -f meu-pod container-2
kubectl logs -f meu-pod container-3
kubectl exec -ti meu-pod -c container-1 -- bash