반응형
어떻게 렌즈(쿠베르네테스 IDE)가 SSH 키 없이 쿠베르네테스 노드에 직접 셸 액세스할 수 있습니까?
나는 이와 같은 일을 할 만한 k8s cli 명령을 찾을 수 없었고, k8s 비밀로 저장된 ssh 키도 찾을 수 없었다. 또한 클라우드에 구애받지 않는 방식으로 이를 수행하는 것으로 보입니다.
그것은 단지 특권이 있는 k8s 포드를 사용하는 것인가요?
편집: 이런, 오픈 소스입니다. 그에 따라 이 질문을 조사하고 업데이트하겠습니다
이 질문을 다룬 Github 이슈에서 작성된 의견에 대해 더 많은 가시성을 제공하기 위해 커뮤니티 위키 답변을 게시합니다:
렌즈가 선택한 노드에 포드를 생성합니다
protected async createNodeShellPod(podId: string, nodeName: string) { const kc = this.getKubeConfig(); const k8sApi = kc.makeApiClient(k8s.CoreV1Api); const pod = { metadata: { name: podId, namespace: "kube-system" }, spec: { restartPolicy: "Never", terminationGracePeriodSeconds: 0, hostPID: true, hostIPC: true, hostNetwork: true, tolerations: [{ operator: "Exists" }], containers: [{ name: "shell", image: "docker.io/alpine:3.9", securityContext: { privileged: true, }, command: ["nsenter"], args: ["-t", "1", "-m", "-u", "-i", "-n", "sleep", "14000"] }], nodeSelector: { "kubernetes.io/hostname": nodeName } } } as k8s.V1Pod;
그리고 렌즈 터미널에 있는 용기로 실행합니다.
--
확인해보니 아래에 보이는 것처럼 (체크인됨)에 위드가 생성됩니다:
- (출력 수정됨)
kube-system node-shell-09f6baaf-dc4a-4faa-969e-8016490eb8e0 1/1 Running 0 10m
추가 리소스:
@premid-shellk의 답을 기반으로, 여기에 kubectl을 사용하여 노드-shell-shell 포드를 시작하는 최소한의 예가 있다:
매니페스트 파일을 만들고 연결할 노드와 일치하도록 업데이트하십시오:
apiVersion: v1 kind: Pod metadata: name: node-debug-shell spec: nodeName: <<hostname>> hostNetwork: true hostPID: true hostIPC: true containers: - name: node-debug-shell image: docker.io/alpine:3.13 command: - nsenter args: - '-t' - '1' - '-m' - '-u' - '-i' - '-n' - sleep - '14000' securityContext: privileged: true
kubectl을 사용하여 포드를 만듭니다:
kubectl create -f node-debug-shell.yml
새 포드 내의 셸을 연결하고 액세스합니다:
kubectl exec -it node-debug-shell -- bash
반응형
'개발하자' 카테고리의 다른 글
(도커 명령 없이) 쿠버네티스에서 컨테이너의 디스크 사용량을 가져오는 방법은 무엇입니까? (0) | 2023.07.06 |
---|---|
Kubernetes 조타 장치 - 주행 포드에 주행 조타 장치 설치 (0) | 2023.07.06 |
유형 스크립트에서 정규식과 일치하는 문자열 유형을 정의하는 방법은 무엇입니까? (0) | 2023.07.05 |
유형 스크립트를 사용한 인터페이스 유형 검사 (0) | 2023.07.04 |
Float Dart 객체 목록에서 문자열 목록 가져오기 (0) | 2023.07.04 |