Skip to content

Commit 945babc

Browse files
authored
Merge pull request #38979 from AnaCarolinaRodriguesLeite/communicate-containers
[pt-br] Add docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume.md
2 parents 9b05790 + 7f5e0fa commit 945babc

File tree

2 files changed

+163
-0
lines changed

2 files changed

+163
-0
lines changed
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
---
2+
title: Comunicação entre contêineres no mesmo pod usando um volume compartilhado
3+
content_type: task
4+
weight: 110
5+
---
6+
7+
<!-- overview -->
8+
9+
Esta página mostra como usar um Volume para realizar a comunicação entre dois contêineres rodando
10+
no mesmo Pod. Veja também como permitir que processos se comuniquem por
11+
[compartilhamento de namespace do processo](/docs/tasks/configure-pod-container/share-process-namespace/)
12+
entre os contêineres.
13+
14+
## {{% heading "prerequisites" %}}
15+
16+
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
17+
18+
<!-- steps -->
19+
20+
## Criando um pod que executa dois contêineres
21+
22+
Neste exercício, você cria um Pod que executa dois contêineres. Os dois contêineres
23+
compartilham um volume que eles podem usar para se comunicar. Aqui está o arquivo de configuração
24+
para o Pod:
25+
26+
{{< codenew file="pods/two-container-pod.yaml" >}}
27+
28+
No arquivo de configuração, você pode ver que o Pod tem um shared-data chamado
29+
`shared-data`.
30+
31+
O primeiro contêiner listado no arquivo de configuração executa um servidor nginx.
32+
O caminho de montagem para o volume compartilhado é `/usr/share/nginx/html`.
33+
O segundo contêiner é baseado na imagem debian e tem um caminho de montagem
34+
`/pod-data`. O segundo contêiner executa o seguinte comando e é encerrado.
35+
36+
echo Hello from the debian container > /pod-data/index.html
37+
38+
Observe que o segundo contêiner grava o arquivo `index.html` no diretório raiz do servidor nginx.
39+
40+
Crie o Pod e os dois contêineres:
41+
42+
kubectl apply -f https://k8s.io/examples/pods/two-container-pod.yaml
43+
44+
Veja as informações sobre o Pod e os contêineres:
45+
46+
kubectl get pod two-containers --output=yaml
47+
48+
Aqui está uma parte da saída:
49+
50+
apiVersion: v1
51+
kind: Pod
52+
metadata:
53+
...
54+
name: two-containers
55+
namespace: default
56+
...
57+
spec:
58+
...
59+
containerStatuses:
60+
61+
- containerID: docker://c1d8abd1 ...
62+
image: debian
63+
...
64+
lastState:
65+
terminated:
66+
...
67+
name: debian-container
68+
...
69+
70+
- containerID: docker://96c1ff2c5bb ...
71+
image: nginx
72+
...
73+
name: nginx-container
74+
...
75+
state:
76+
running:
77+
...
78+
79+
Você pode ver que o contêiner debian foi encerrado e o contêiner nginx ainda está em execução.
80+
81+
Obtenha um shell para o contêiner nginx:
82+
83+
kubectl exec -it two-containers -c nginx-container -- /bin/bash
84+
85+
Em seu shell, verifique que o nginx está em execução:
86+
87+
root@two-containers:/# apt-get update
88+
root@two-containers:/# apt-get install curl procps
89+
root@two-containers:/# ps aux
90+
91+
A saída é semelhante a esta:
92+
93+
USER PID ... STAT START TIME COMMAND
94+
root 1 ... Ss 21:12 0:00 nginx: master process nginx -g daemon off;
95+
96+
Lembre-se de que o contêiner debian criou o arquivo `index.html` no diretório raiz do nginx.
97+
Use `curl` para enviar uma solicitação GET para o servidor nginx:
98+
99+
```
100+
root@two-containers:/# curl localhost
101+
```
102+
103+
A saída mostra que o nginx responde com uma página da web escrita pelo contêiner debian:
104+
105+
```
106+
Hello from the debian container
107+
```
108+
109+
<!-- discussion -->
110+
111+
## Discussão
112+
113+
O principal motivo pelo qual os pods podem ter vários contêineres é oferecer suporte a aplicações extras que apoiam uma aplicação principal.
114+
Exemplos típicos de aplicativos auxiliares são extratores de dados, aplicações para envio de dados e proxies.
115+
Aplicativos auxiliares e primários geralmente precisam se comunicar uns com os outros.
116+
Normalmente, isso é feito por meio de um sistema de arquivos compartilhado, conforme mostrado neste exercício,
117+
ou por meio da interface de rede de loopback, localhost.
118+
Um exemplo desse padrão é um servidor web junto com um programa auxiliar que consulta um repositório Git para novas atualizações.
119+
120+
O volume neste exercício fornece uma maneira dos contêineres se comunicarem durante
121+
a vida útil do Pod. Se o Pod for excluído e recriado, todos os dados armazenados no volume compartilhado serão perdidos.
122+
123+
## {{% heading "whatsnext" %}}
124+
125+
126+
* Saiba mais sobre [padrões para contêineres compostos](/blog/2015/06/the-distributed-system-toolkit-patterns/).
127+
128+
* Saiba sobre [contêineres compostos para arquitetura modular](https://www.slideshare.net/Docker/slideshare-burns).
129+
130+
* Veja [Configurando um Pod para usar um volume para armazenamento](/docs/tasks/configure-pod-container/configure-volume-storage/).
131+
132+
* Veja [Configurar um Pod para compartilhar namespace de processo entre contêineres em um Pod](/docs/tasks/configure-pod-container/share-process-namespace/)
133+
134+
* Veja [Volume](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#volume-v1-core).
135+
136+
* Veja [Pod](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#pod-v1-core).
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: two-containers
5+
spec:
6+
7+
restartPolicy: Never
8+
9+
volumes:
10+
- name: shared-data
11+
emptyDir: {}
12+
13+
containers:
14+
15+
- name: nginx-container
16+
image: nginx
17+
volumeMounts:
18+
- name: shared-data
19+
mountPath: /usr/share/nginx/html
20+
21+
- name: debian-container
22+
image: debian
23+
volumeMounts:
24+
- name: shared-data
25+
mountPath: /pod-data
26+
command: ["/bin/sh"]
27+
args: ["-c", "echo Hello from the debian container > /pod-data/index.html"]

0 commit comments

Comments
 (0)