我想看看是否可以使用本地(Mac)kubectl 連接到遠端 minikube 叢集(Ubuntu 盒子)。我目前使用 Docker,並且可以使用docker-machine
.只需 eval 到機器名稱,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
- 用於
docker ps
獲取 API 伺服器的公共連接埠 - 它應該代理到 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
- 複製
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