Ku­ber­ne­tes pods são con­fi­gu­ra­dos de forma im­pe­ra­tiva, de­cla­ra­tiva ou usando in­ter­fa­ces de API. Também é possível es­pe­ci­fi­car e per­so­na­li­zar recursos adi­ci­o­nais para os res­pec­ti­vos con­têi­ne­res. Aprenda a criar um Ku­ber­ne­tes pod.

Ku­ber­ne­tes create pod: Pré-re­qui­si­tos

Para executar um Ku­ber­ne­tes pod, você precisa que um cluster do Ku­ber­ne­tes esteja em execução, seja lo­cal­mente em um sistema de de­sen­vol­vi­mento, na nuvem ou in­ter­na­mente. Para realizar sua ins­ta­la­ção, re­co­men­da­mos a leitura do nosso tutorial Ku­ber­ne­tes. Também é ne­ces­sá­rio que a fer­ra­menta de linha de comando kubectl esteja dis­po­ní­vel e con­fi­gu­rada no com­pu­ta­dor para habilitar a interação com o cluster do Ku­ber­ne­tes. Você ainda deverá verificar se o arquivo ku­be­con­fig foi con­fi­gu­rado cor­re­ta­mente para es­ta­be­le­cer uma conexão bem-sucedida com o cluster.

Dica

A solução Managed Ku­ber­ne­tes da IONOS assegura alta dis­po­ni­bi­li­dade para o de­sen­vol­vi­mento dos seus projetos no K8s ao mesmo tempo em que otimiza os custos. A in­te­gra­ção com o ecos­sis­tema em nuvem da IONOS também oferece ar­ma­ze­na­mento de dados per­sis­tente, avançado e to­tal­mente integrado.

Ku­ber­ne­tes create pod: Passo a passo para criar Ku­ber­ne­tes pod

Existem três formas de se criar Ku­ber­ne­tes pods:

  1. Con­fi­gu­ra­ção im­pe­ra­tiva
  2. Con­fi­gu­ra­ção de­cla­ra­tiva
  3. Uso de interface de API

Con­fi­gu­ra­ção im­pe­ra­tiva

No método im­pe­ra­tivo, você transmite ins­tru­ções ex­plí­ci­tas ao sistema por meio da linha de comando kubectl, in­for­mando como criar o Ku­ber­ne­tes pod sem ter preparado um arquivo de con­fi­gu­ra­ção detalhado com an­te­ce­dên­cia.

kubectl run nginx --image=nginx --restart=Never
shell

Esse comando cria um pod único chamado nginx que contém o servidor web Nginx.

Como o método im­pe­ra­tivo aplica al­te­ra­ções diretas sem uma definição clara do estado pre­ten­dido, a abordagem de­cla­ra­tiva costuma ser mais re­co­men­dada.

Con­fi­gu­ra­ção de­cla­ra­tiva

A abordagem de­cla­ra­tiva no Ku­ber­ne­tes requer que o estado desejado dos recursos seja definido por meio de arquivos de con­fi­gu­ra­ção YAML.

Abra um editor de texto e crie um arquivo YAML (por exemplo, nginx-pod.yaml) que descreva o estado desejado do pod Nginx.

apiVersion: apps/v1
kind: Deployment
metadata:
    name: nginx-deployment
spec:
    selector:
        matchLabels:
            app: nginx
    minReadySeconds: 5
    template:
        metadata:
            labels:
                app: nginx
        spec:
            containers:
            - name: nginx-container
                image: nginx:latest
                ports:
                - containerPort: 80
yaml

Use o comando kubectl apply para ativar o Ku­ber­ne­tes pod baseado na con­fi­gu­ra­ção de­cla­ra­tiva.

kubectl apply -f nginx-pod.yaml
shell

As con­fi­gu­ra­ções de­cla­ra­ti­vas que você es­pe­ci­fica nos arquivos YAML são um registro concreto do estado pre­ten­dido, incluindo a versão do pod a ser criado. Elas pos­si­bi­li­tam o ge­ren­ci­a­mento e o mo­ni­to­ra­mento trans­pa­ren­tes dos recursos no seu cluster do Ku­ber­ne­tes.

Uso de interface de API

O Ku­ber­ne­tes dis­po­ni­bi­liza uma API RESTful que você pode usar para interagir com o cluster. Antes de usar a API, é preciso realizar o processo de au­ten­ti­ca­ção e au­to­ri­za­ção. Isso costuma ser feito com tokens ou cer­ti­fi­ca­dos de acesso, de­pen­dendo da con­fi­gu­ra­ção do cluster do Ku­ber­ne­tes.

O exemplo abaixo mostra como criar um arquivo JSON para um pod Nginx usando a API REST.

cat > nginx-pod.json <<EOF
{
    "apiVersion": "apps/v1",
    "kind": "Deployment",
    "metadata": {
        "name": "nginx-deployment"
    },
    "spec": {
        "selector": {
            "matchLabels": {
                "app": "nginx"
            }
        },
        "minReadySeconds": 5,
        "template": {
            "metadata": {
                "labels": {
                    "app": "nginx"
                }
            },
            "spec": {
                "containers": [
                    {
                        "name": "nginx-container",
                        "image": "nginx:latest",
                        "ports": [
                            {
                                "containerPort": 80
                            }
                        ]
                    }
                ]
            }
        }
    }
}
EOF
shell

Para ativar o Ku­ber­ne­tes pod, use a fer­ra­menta curl para se comunicar com a API REST do cluster do Ku­ber­ne­tes:

curl -k -v -X POST -H "Authorization: Bearer <JWT_TOKEN>" -H "Content-Type: application/json" https://cluster-ip:6443/api/v1/namespaces/default/pods -d@nginx-pod.json
shell

Esse comando curl envia uma so­li­ci­ta­ção HTTPS-POST para um endpoint do cluster do Ku­ber­ne­tes. As opções -k e -v indicam que a ve­ri­fi­ca­ção do cer­ti­fi­cado SSL e o modo detalhado (verbose mode) devem ser ignorados. Uma so­li­ci­ta­ção POST é definida com -X POST. O cabeçalho Autho­ri­za­tion contém um token do portador, também chamado de bearer token (substitua <JWT_TOKEN> pelo token real), enquanto Content-Type es­pe­ci­fica o tipo do formato de dados como JSON. A opção -d@nginx-pod.json envia os dados para o servidor.

Vi­su­a­li­zar pods

Para verificar o status atual de todos os pods no res­pec­tivo namespace, insira o comando a seguir:

kubectl get pods
shell

O resultado traz uma lista dos pods exis­ten­tes e seus res­pec­ti­vos status, momento de ini­ci­a­li­za­ção e demais detalhes.

Para obter in­for­ma­ções mais de­ta­lha­das, insira o comando a seguir:

kubectl describe pod my-pod
shell

Esse comando retorna as in­for­ma­ções de­ta­lha­das sobre o pod, incluindo con­fi­gu­ra­ções, eventos e tran­si­ções de estados.

Para vi­su­a­li­zar os logs do contêiner principal no Ku­ber­ne­tes pod, use o comando a seguir:

kubectl logs my-pod
shell

Se houver vários con­têi­ne­res, você pode marcar o contêiner com a opção -c.

Excluir pod

A exclusão de pods é um processo direto que pode ser feito com um comando simples.

kubectl delete pod nginx
shell

O Ku­ber­ne­tes pod se­le­ci­o­nado será in­ter­rom­pido, e o contêiner associado a ele também será de­sa­ti­vado. No exemplo, removemos o pod “nginx” do cluster.

Managed Ku­ber­ne­tes da IONOS
O jeito mais simples de gerenciar cargas de trabalho em con­têi­ne­res.

Ins­ta­la­ção de clusters Ku­ber­ne­tes to­tal­mente au­to­ma­ti­zada, vi­si­bi­li­dade máxima e controle de clusters K8s.

Ir para o menu principal