Antes da chegada dos contêineres, os problemas de compatibilidade de implantação foram enfrentados pelos desenvolvedores de software. Isso pode acontecer quando o software funciona como pretendido durante o estágio de desenvolvimento, mas faltam no ambiente do produto devido a problemas de dependência. No entanto, todos os requisitos de software utilizados para desenvolvimento podem agora ser entregues e usados no ambiente de produção devido a contêineres. Depois de construir a imagem do seu contêiner e executar uma instância, você pode precisar de uma conexão com o contêiner para fins de depuração ou para aplicar um hotfix, os quais exigem acesso ao ambiente do contêiner. Você deve entrar na concha de qualquer contêiner em execução para interagir com ele de qualquer forma. Você aprenderá neste artigo como acessar um contêiner em execução ou kubernetes pod através do SSH.
O que é SSH?
O Protocolo de Shell seguro (comumente conhecido como SSH) fornece uma maneira de fazer login remotamente de um computador para outro com segurança. Criptografia forte é usada para salvaguardar a segurança e a integridade das comunicações e oferece várias alternativas adicionais para uma autenticação forte. É um substituto seguro para protocolos de transferência de arquivos inseguros e protocolos de login não garantidos (como Telnet e Rlogin) (como FTP). Além disso, funciona bem com Kubernetes.
Comandos e exemplos úteis de shell para Kubectl Exec
Com o Kubectl Exec, você pode iniciar uma sessão de shell para recipientes que operam em seu cluster Kubernetes. É uma funcionalidade do tipo SSH para Kubernetes. As informações necessárias, juntamente com os cenários em que fazem mais sentido, são fornecidos abaixo para que você possa usar esse comando como parte de seus processos de gerenciamento de cluster.
Um orquestrador de contêineres chamado Kubernetes permite implantações automatizadas em vários computadores físicos. O Secure Shell em um servidor físico é diferente de iniciar uma sessão de shell para um contêiner em um cluster de Kubernetes. Embora os contêineres sejam apátridas e capazes de operar sem supervisão, você pode ocasionalmente precisar de um shell para solucionar problemas ou recuperar dados.
Você pode se conectar a recipientes dentro do seu cluster usando o Kubectl Exec. É um componente da ferramenta Kubectl CLI para se comunicar com as instalações do Kubernetes. Semelhante ao executivo SSH ou Docker, o comando EXEC alimenta uma sessão de shell em seu terminal.
A invocação mais simples para acessar o pod "Demo-Pod" é a seguinte:
Kubectl se conectará ao seu cluster, iniciar /bin /sh no primeiro contêiner do poder de demonstração e passar os fluxos de entrada e saída do seu terminal para o processo do contêiner. Este post analisará as situações em que o Kubectl Exec é útil, o que cada parte do comando realiza e como a conexão da Shell pode ser personalizada.
Quando usar o Kubectl Exec?
Diferentes técnicas são necessárias para gerenciar cargas de trabalho em contêiner em um cluster Kubernetes do que para gerenciar aplicativos em um servidor convencional de metal. Você deve cavar do host do cluster às instâncias de contêiner que implantam seu sistema, adicionando outra camada entre você e seu programa.
A capacidade dos Kubernetes de implantar réplicas em computadores físicos é um de seus pontos fortes (nós). Mesmo se você pudesse administrar o SSH, ainda precisaria acompanhar qual nó supervisionou cada contêiner. Sem se preocupar com o nó Kubernetes, o recipiente está ligado. Você pode especificar o contêiner para se conectar ao uso do Kubectl Exec.
O uso mais frequente de iniciar uma concha dentro de um recipiente é quando solucionando um problema. Você pode ficar sem escolha a não ser examinar o recipiente de dentro depois de esgotar todas as outras opções, como olhar para os toras do contêiner.
Você pode visualizar o sistema de arquivos completo do contêiner e confirmar que o ambiente é como você antecipou executando os comandos do shell. Além disso, ele pode ajudar você a encontrar casos de variáveis de ambiente definidas incorretamente e determinar se um arquivo crucial está bloqueado ou ausente.
Substitutos do Kubectl Exec
O método mais eficaz para conectar -se ao shell de um contêiner de Kubernetes é o Kubectl Exec. É feito para esse uso e resolve todos os problemas de escolher o nó físico certo para se conectar.
Considere executar um daemon SSH dentro do seu contêiner se você realmente precisar de uma opção diferente, porque precisa se conectar de um sistema sem Kubectl. Esteja ciente de que isso levanta sua vulnerabilidade a ameaças à segurança e contradiz a premissa de que cada contêiner deve servir a um único propósito.
Como acessar meu nó do trabalhador através do SSH?
Use um conjunto ou tarefas de daemon Kubernetes para ações únicas para executar em cada nó do trabalhador.
Revise as seguintes opções para obter acesso ao host aos nós do trabalhador para fins de depuração e solução de problemas.
Usando o Kubectl Debug para depuração
Use o comando Kubectl Debug Node para implantar um pod com um contexto de segurança privilegiado para um nó do trabalhador que você deseja depurar. Para fornecer acesso ao nó do trabalhador assim que a cápsula de depuração for formada, uma concha interativa é implantada com ele.
Depuração usando o Kubectl Exec
Você pode construir uma vagem alpina com um contexto de segurança privilegiado e empregar o comando Kubectl Exec para executar comandos de depuração do shell interativo do pod se você não puder executar o comando kubectl depurs node.
Construindo um pod com acesso SSH raiz para depuração
Se você não puder usar os comandos Kubectl Debug Node ou Kubectl Exec, como se a conexão VPN entre o mestre de cluster e os nós do trabalhador estiverem baixos. Você pode criar um pod que permita o acesso SSH da raiz e copia uma chave SSH pública para o nó do trabalhador para acesso SSH.
Limpando após a depuração
Depois de terminar a depuração, limpe os recursos para desativar o acesso SSH.
Quais são as vantagens do acesso SSH?
As vantagens estão listadas abaixo:
Conclusão
Usando o comando kubectl exec, você pode lançar uma sessão de shell dentro de qualquer contêiner atualmente ativo em seu cluster Kubernetes. Quando os logs sozinhos são insuficientes, você pode usar este comando para explorar o sistema de arquivos do contêiner, avaliar o ambiente e executar ferramentas de depuração sofisticadas. Como última opção, você deve gerenciar seus contêineres usando comandos de shell.