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