|
| 1 | +--- |
| 2 | +title: Compartilhando o Namespace de Processo Entre Contêineres em um Pod |
| 3 | +reviewers: |
| 4 | +- verb |
| 5 | +- yujuhong |
| 6 | +- dchen1107 |
| 7 | +content_type: task |
| 8 | +weight: 160 |
| 9 | +--- |
| 10 | + |
| 11 | +<!-- overview --> |
| 12 | + |
| 13 | +Esta página mostra como configurar o compartilhamento de namespace de processos para um Pod. Quando |
| 14 | +O compartilhamento de namespace de processos está ativado, os processos em um Contêiner são visíveis |
| 15 | +para todos os outros Contêineres no mesmo Pod. |
| 16 | + |
| 17 | +Você pode usar este recurso para configurar Contêineres de cooperação, como um manipulador de log |
| 18 | +`sidecar` de contêiner, ou para solucionar problemas em imagens de contêiner que não |
| 19 | +incluem utilitários de depuração como um shell. |
| 20 | + |
| 21 | +## {{% heading "prerequisites" %}} |
| 22 | + |
| 23 | +{{< include "task-tutorial-prereqs.md" >}} |
| 24 | + |
| 25 | +<!-- steps --> |
| 26 | + |
| 27 | +## Configure um pod |
| 28 | + |
| 29 | +O compartilhamento de namespace de processos é ativado usando o campo `shareProcessNamespace` da |
| 30 | +`.spec` para um Pod. Por exemplo: |
| 31 | + |
| 32 | +{{< codenew file="pods/share-process-namespace.yaml" >}} |
| 33 | + |
| 34 | +1. Crie o pod `nginx` no seu cluster: |
| 35 | + |
| 36 | + ```shell |
| 37 | + kubectl apply -f https://k8s.io/examples/pods/share-process-namespace.yaml |
| 38 | + ``` |
| 39 | + |
| 40 | +1. Conecte ao `shell` do contêiner e execute o comando `ps`: |
| 41 | + |
| 42 | + ```shell |
| 43 | + kubectl attach -it nginx -c shell |
| 44 | + ``` |
| 45 | + |
| 46 | + Se você não vir um prompt de comando, tente pressionar Enter. No shell do Contêiner execute: |
| 47 | + |
| 48 | + ```shell |
| 49 | + # execute este comando dentro do "shell" do contêiner |
| 50 | + ps ax |
| 51 | + ``` |
| 52 | + |
| 53 | + A saída é semelhante a esta: |
| 54 | + |
| 55 | + ```none |
| 56 | + PID USER TIME COMMAND |
| 57 | + 1 root 0:00 /pause |
| 58 | + 8 root 0:00 nginx: master process nginx -g daemon off; |
| 59 | + 14 101 0:00 nginx: worker process |
| 60 | + 15 root 0:00 sh |
| 61 | + 21 root 0:00 ps ax |
| 62 | + ``` |
| 63 | + |
| 64 | +Você pode sinalizar processos em outros Contêineres. Por exemplo, mandando `SIGHUP` ao |
| 65 | +`nginx` para restartar o processo `worker`. Isso requer a capacidade `SYS_PTRACE`. |
| 66 | + |
| 67 | +```shell |
| 68 | +# execute este comando dentro do "shell" do contêiner |
| 69 | +kill -HUP 8 # substitua o "8" pelo PID do processo principal do nginx, se necessário |
| 70 | +ps ax |
| 71 | +``` |
| 72 | + |
| 73 | +A saída é semelhante a esta: |
| 74 | + |
| 75 | +```none |
| 76 | +PID USER TIME COMMAND |
| 77 | + 1 root 0:00 /pause |
| 78 | + 8 root 0:00 nginx: master process nginx -g daemon off; |
| 79 | + 15 root 0:00 sh |
| 80 | + 22 101 0:00 nginx: worker process |
| 81 | + 23 root 0:00 ps ax |
| 82 | +``` |
| 83 | + |
| 84 | +É até possível acessar o sistema de arquivos de outro contêiner usando o link |
| 85 | +`/proc/$pid/root`. |
| 86 | + |
| 87 | +```shell |
| 88 | +# execute este comando dentro do "shell" do contêiner |
| 89 | +# substitua o "8" pelo PID do processo Nginx, se necessario |
| 90 | +head /proc/8/root/etc/nginx/nginx.conf |
| 91 | +``` |
| 92 | + |
| 93 | +A saída é semelhante a esta: |
| 94 | + |
| 95 | +```none |
| 96 | +user nginx; |
| 97 | +worker_processes 1; |
| 98 | +
|
| 99 | +error_log /var/log/nginx/error.log warn; |
| 100 | +pid /var/run/nginx.pid; |
| 101 | +
|
| 102 | +
|
| 103 | +events { |
| 104 | + worker_connections 1024; |
| 105 | +``` |
| 106 | + |
| 107 | +<!-- discussion --> |
| 108 | + |
| 109 | +## Compreendendo o compartilhamento de namespace de processos |
| 110 | + |
| 111 | +Os Pods compartilham muitos recursos, por isso faz sentido que eles também compartilhem um namespace de processo. |
| 112 | +Alguns Contêineres podem esperar serem isolados de outros, no entanto, |
| 113 | +por isso, é importante entender as diferenças: |
| 114 | + |
| 115 | +1. **O processo de contêiner não tem mais o PID 1.** Alguns Contêineres recusam |
| 116 | + começar sem o PID 1 (por exemplo, contêineres usando `systemd`) ou executando comandos |
| 117 | + como `kill -HUP 1` para sinalizar o processo de Contêiner. Em pods com um |
| 118 | + namespace de processos compartilhado, `kill -HUP 1` irá sinalizar a `sandbox` |
| 119 | + (`/pause` no exemplo acima). |
| 120 | + |
| 121 | +1. **Os processos são visíveis para outros contêineres no Pod.** Isso inclui todas |
| 122 | + informações visíveis em `/proc`, como senhas que foram passadas como argumentos |
| 123 | + ou variáveis de ambiente. Estes são protegidos apenas por permissões regulares do Unix. |
| 124 | + |
| 125 | +1. **Sistema de arquivos do Contêiner são visíveis para outros Contêineres do pod através do link |
| 126 | + `/proc/$pid/root`.** Isso facilita a depuração, mas também significa |
| 127 | + que os segredos do sistema de arquivos, são protegidos apenas por permissões de sistema de arquivos. |
| 128 | + |
0 commit comments