Przed przybyciem kontenerów, programiści napotykają problemy z kompatybilnością wdrażania. Może się to zdarzyć, gdy oprogramowanie działa zgodnie z przeznaczeniem na etapie rozwoju, ale nieprawidłowe działanie w środowisku produktowym ze względu na problemy z zależnością. Jednak wszystkie wymagania oprogramowania wykorzystywane do rozwoju mogą być teraz dostarczane i wykorzystywane w środowisku produkcyjnym z powodu kontenerów. Po zbudowaniu obrazu kontenera i uruchomieniu jego instancji możesz potrzebować połączenia z kontenerem do celów debugowania lub zastosowania hotfix, które wymagają dostępu do środowiska kontenera. Musisz wprowadzić skorupę dowolnego działającego pojemnika, aby w jakikolwiek sposób z nim wchodzić w interakcje. W tym artykule dowiesz się, jak uzyskać dostęp do działającego kontenera Docker lub Kubernetes Pod przez SSH.
Co to jest SSH?
Protokół Secure Shell (powszechnie znany jako SSH) zapewnia sposób bezpiecznego logowania się z jednego komputera do drugiego. Silne szyfrowanie służy do ochrony bezpieczeństwa i integralności komunikacji oraz oferuje kilka dodatkowych alternatyw dla silnego uwierzytelnienia. Jest to bezpieczny substytut niebezpiecznych protokołów transferu plików i niezabezpieczonych protokołów logowania (takich jak Telnet i Rlogin) (takie jak FTP). Dodatkowo działa dobrze z Kubernetes.
Przydatne polecenia i przykłady powłoki dla Kubectl Exec
Dzięki Kubectl Exec możesz rozpocząć sesję powłoki do kontenerów działających w klastrze Kubernetes. Jest to funkcja podobna do SSH dla Kubernetes. Informacje, których potrzebujesz, wraz z scenariuszami, w których ma najbardziej sens, są podane poniżej, abyś mógł użyć tego polecenia jako części procesów zarządzania klastrami.
Orkiestrator kontenerowy o nazwie Kubernetes umożliwia zautomatyzowane wdrożenia na wielu komputerach fizycznych. Bezpieczna powłoka na serwerze fizycznym różni się od uruchamiania sesji powłoki do kontenera w klastrze Kubernetes. Mimo że kontenery powinny być bezstanowe i zdolne do działania bez nadzoru, czasami możesz potrzebować powłoki, aby rozwiązywać problemy lub pobrać dane.
Możesz połączyć się z kontenerami w klastrze za pomocą Kubectl Exec. Jest to element narzędzia Kubectl CLI do komunikowania się z instalacjami Kubernetes. Podobnie jak SSH lub Docker Exec, polecenie EXEC zasiluje sesję powłoki do terminalu.
Najprostsze wywołanie dostępu do kapsuły „Demo-POD” jest następujące:
Kubectl połączy się z Twoim klastrem, uruchamia /bin /sh w pierwszym kontenerze Demo-Pod kapsuły i przekazuje strumienie wejściowe i wyjściowe z terminalu do procesu kontenera. Ten post przyjrzy się sytuacji, w których Kubectl Exec jest pomocny, co wykonuje każda część polecenia i jak można dostosować połączenie powłoki.
Kiedy używać Kubectl Exec?
Potrzebne są różne techniki zarządzania obciążeniami kontenerowymi w klastrze Kubernetes niż do zarządzania aplikacjami na konwencjonalnym serwerze gołym metalowym. Musisz wykopać z hosta klastra do instancji kontenera, które wdrażają system, dodając kolejną warstwę między tobą a programem.
Zdolność Kubernetes do wdrażania replików na komputerach fizycznych jest jednym z jego silnych punktów (węzłów). Nawet gdybyś mógł administrować przez SSH, nadal będziesz musiał śledzić, który węzeł nadzorował każdy kontener. Bez dbania o węzeł Kubernetes, pojemnik jest włączony. Możesz określić kontener, aby połączyć się z za pomocą Kubectl Exec.
Najczęstszym użyciem uruchamiania skorupy w pojemniku jest rozwiązywanie problemów z problemem. Możesz pozostać bez wyboru, jak tylko zbadać pojemnik od wewnątrz po wyczerpaniu wszystkich innych opcji, takich jak patrzenie na dzienniki kontenera.
Możesz wyświetlić pełny system plików kontenera i potwierdzić, że środowisko jest zgodne z przewidywaniem, wykonując polecenia powłoki. Ponadto może ci pomóc w znalezieniu przypadków niepoprawnie zdefiniowanych zmiennych środowiskowych i ustaleniu, czy kluczowy plik jest zablokowany lub brakuje.
KUBECTL EXEC SPREATUTETY
Najbardziej skuteczną metodą łączenia się z powłoką kontenera Kubernetes jest Kubectl Exec. Stworzony jest do tego użycia i rozwiązuje wszystkie problemy z wyborem odpowiedniego węzła fizycznego, z którym można się połączyć.
Zastanów się nad uruchomieniem demona SSH w pojemniku, jeśli naprawdę potrzebujesz innej opcji, ponieważ musisz połączyć się z systemu bez kubectl. Należy pamiętać, że podatność na zagrożenia bezpieczeństwa i zaprzecza założeniu, że każdy kontener powinien służyć jeden cel.
Jak uzyskać dostęp do mojego węzła robotniczego za pośrednictwem SSH?
Użyj zestawu demonu lub zadań Kubernetes dla jednorazowych działań, aby uruchomić w każdym węźle pracowniczym.
Przejrzyj następujące opcje, aby uzyskać dostęp hosta do węzłów pracowniczych w celu debugowania i rozwiązywania problemów.
Korzystanie z debugowania Kubectl do debugowania
Użyj polecenia Kubectl Debug Node, aby wdrożyć kapsułkę z uprzywilejowanym kontekstem bezpieczeństwa w węźle pracowniczym. Aby zapewnić dostęp do węzła robotniczego, gdy tylko zostanie utworzona debugowanie, interaktywna powłok.
Debugowanie za pomocą Kubectl Exec
Możesz zbudować alpine z uprzywilejowanym kontekstem bezpieczeństwa i zastosować polecenie Kubectl Exec do wykonywania poleceń debugowania z interaktywnej powłoki POD, jeśli nie możesz wykonać polecenia Kubectl Debug Węzeł.
Budowanie kapsuły z dostępem do root SSH do debugowania
Jeśli nie możesz użyć poleceń debugowania Kubectl lub Kubectl Exec, na przykład w przypadku połączenia VPN między węzłami klastra a węzłami pracowniczymi. Możesz utworzyć POD, który umożliwia root SSH dostęp i kopiuje publiczny klucz SSH do węzła pracownika dla SSH Access.
Sprzątanie po debugowaniu
Po zakończeniu debugowania wyczyść zasoby, aby wyłączyć dostęp do SSH.
Jakie są zalety SSH Access?
Zalety są wymienione poniżej:
Wniosek
Korzystając z polecenia Kubectl Exec, możesz uruchomić sesję powłoki wewnątrz dowolnego aktualnie aktywnego kontenera w klastrze Kubernetes. Gdy same dzienniki są niewystarczające, możesz użyć tego polecenia do zbadania systemu plików kontenera, oceny środowiska i uruchomienia wyrafinowanych narzędzi debugowania. Jako ostatnia opcja powinieneś ręcznie zarządzać kontenerami za pomocą poleceń Shell.