kubectl을 사용하여 원격 Minikube 클러스터에 연결

kubectl을 사용하여 원격 Minikube 클러스터에 연결

로컬(Mac) kubectl을 사용하여 원격 minikube 클러스터(Ubuntu 상자)에 연결할 수 있는지 알아보고 있습니다. 저는 현재 Docker를 사용하고 있으며 docker-machine. 단순히 시스템 이름을 평가하면 docker는 원격 시스템을 사용합니다.

minikube/kubectl과 비슷한 것이 있는지 궁금합니다. 원격 ~/.minikube디렉터리를 로컬 디렉터리에 복사하고 일부 구성을 변경해야 한다고 언급한 몇 가지 기사를 발견했습니다 . 그러나 이것은 같은 도구가 docker-machine원활하게 수행하는 작업에는 다소 복잡해 보입니다.

유사한 도구를 사용할 수 있습니까? 그렇지 않은 경우 원격 클러스터에 연결하는 데 필요한 단계를 누군가 도와줄 수 있습니까?

원격 머신 현재 저는 docker드라이버를 사용하고 있습니다(명령의 전체 출력은 단 한 줄입니다).

$ minikube config view
- driver: docker

그리고 다양한 NodePort서비스를 제공합니다:

$ kubectl get service -A
NAMESPACE     NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       apigateway        NodePort    10.100.122.255   <none>        8080:30601/TCP           19h
default       discoveryserver   NodePort    10.101.106.231   <none>        8761:30602/TCP           19h
default       elasticsearch     NodePort    10.97.197.14     <none>        9200:30604/TCP           19h
default       harness           NodePort    10.97.233.245    <none>        9090:30603/TCP           19h
default       kubernetes        ClusterIP   10.96.0.1        <none>        443/TCP                  19h
default       mongo             NodePort    10.97.172.108    <none>        27017:32625/TCP          19h
kube-system   kube-dns          ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   19h
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority: /home/meanwhileinhell/.minikube/ca.crt
    server: https://192.168.50.2:8443   <<<<<< `minikube ip`
  name: minikube
contexts:
- context:
    cluster: minikube
    namespace: default
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /home/meanwhileinhell/.minikube/profiles/minikube/client.crt
    client-key: /home/meanwhileinhell/.minikube/profiles/minikube/client.key

로컬 머신

$ kubectl config view
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://kubernetes.docker.internal:6443
  name: docker-desktop
- cluster:
    certificate-authority: /Users/mih.mac/remote/.minikube/ca.crt
    server: https://192.168.1.5:8443   <<<<<< Static IP of my remote machine
  name: minikube
contexts:
- context:
    cluster: docker-desktop
    user: docker-desktop
  name: docker-desktop
- context:
    cluster: minikube
    user: minikube
  name: minikube
current-context: docker-desktop
kind: Config
preferences: {}
users:
- name: docker-desktop
  user:
    client-certificate-data: REDACTED
    client-key-data: REDACTED
- name: minikube
  user:
    client-certificate: /Users/mih.mac/remote/.minikube/client.crt
    client-key: /Users/mih.mac/remote/.minikube/client.key

답변1

사용할 수 있는 도구가 없습니다. Minikube에 원격으로 접근하는 방법은 SSH 터널링을 하는 것입니다.

1- Mac에서 Ubuntu 상자로 SSH를 연결할 수 있어야 합니다.

2- 적절한 SSH 포트 전달 플래그를 추가합니다. 다음 명령을 실행합니다.

ssh -N -p 22 <user>@<public_ip> -L 127.0.0.1:18443:<minikube_ip>:8443

어디:

사용자는 당신의 이름입니다

public_ip는 서버의 공개 IP입니다.

minikube_ip는 minikube의 IP 주소이며, minikube ip 명령을 사용하여 서버에서 찾을 수 있습니다. 아마 192.168.49.2일 겁니다.

3- 그런 다음 적절한 K8s 자격 증명을 Mac의 kubectl에 연결하기만 하면 됩니다.

자세한 내용은 다음 링크를 참조하세요.

https://www.zepworks.com/posts/access-minikube-remotely-kvm/ https://www.chevdor.com/post/2021/02/docker_to_k8s/

답변2

kubectl에서 원격 Minikube 클러스터에 연결하는 단계:

  1. 공용 인터페이스를 수신하는 Minikube 클러스터 생성, 생성된 인증서에 원격 호스트 이름 및/또는 IP 주소 추가 minikube start --listen-address=0.0.0.0 --apiserver-names=example.com --apiserver-ips=1.2.3.4
  2. API 서버에 대한 공개 포트를 얻기 위해 사용 docker ps- minikube 컨테이너 내부의 8443 포트로 프록시되어야 합니다(예: 0.0.0.0:32774->8443/tcp포트는 32774입니다)
  3. minikube를 사용하는 kube 구성을 가져 minikube kubectl -- config view와서 로컬 파일에 저장합니다(예 ~/minikube.config: )
  4. 편집 clusters[0].cluster.server필드 ~/minikube.config- 2단계에서 얻은 적절한 원격 호스트 및 포트로 설정합니다.
  5. 인증서와 키를 위한 로컬 디렉터리를 만듭니다.mkdir -p ~/.minikube/profiles/minikube
  6. copy client.key, client.crt그리고 ca.crtminikube 호스트에서 로컬 호스트로: scp 'example.com:.minikube/profiles/minikube/client.*' ~/.minikube/profiles/minikube/그리고scp 'example.com:.minikube/ca.crt' ~/.minikube/
  7. 로컬로 실행하여 kubectl --kubeconfig ~/minikube.config get pod -A작동하는지 확인하세요.

답변3

socat를 사용하여 minikube 기본 IP 및 포트(192.168.49.2:8443)를 시스템 기본 네트워크 카드 IP로 전달할 수 있습니다.

socat TCP4-LISTEN:8443,fork TCP4:192.168.49.2:8443

관련 정보