如何将第二个Minikube集群(dev)添加到部署在prod的Argo CD?
无法将Minikube dev集群添加到prod集群上的Argo CD
我已创建dev和prod两个Minikube集群,计划基于Argo CD搭建多集群部署方案,但尝试将dev集群添加至部署在prod集群的Argo CD时失败。
操作流程
启动集群
# 启动dev集群 minikube start -p dev # 启动prod集群并切换到该集群上下文 minikube start -p prod minikube profile prod
在prod集群安装Argo CD
kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
暴露Argo CD服务并登录
kubectl port-forward svc/argocd-server -n argocd 8081:443 argocd login localhost --username admin
添加dev集群时的错误
执行命令 argocd cluster add dev --name dev 后返回以下错误:
$ argocd cluster add dev --name dev WARNING: This will create a service account `argocd-manager` on the cluster referenced by context `dev` with full cluster level privileges. Do you want to continue [y/N]? y INFO[0001] ServiceAccount "argocd-manager" already exists in namespace "kube-system" INFO[0001] ClusterRole "argocd-manager-role" updated INFO[0001] ClusterRoleBinding "argocd-manager-role-binding" updated FATA[0001] rpc error: code = Unknown desc = Get "https://127.0.0.1:55640/version?timeout=32s": dial tcp 127.0.0.1:55640: connect: connection refused
当前kubeconfig片段
clusters: - cluster: certificate-authority: /root/.minikube/ca.crt extensions: - extension: provider: minikube.sigs.k8s.io version: v1.27.1 name: cluster_info server: https://127.0.0.1:55640 name: dev - cluster: certificate-authority: /root/.minikube/ca.crt extensions: - extension: provider: minikube.sigs.k8s.io version: v1.27.1 name: cluster_info server: https://127.0.0.1:55409 name: prod
解决方案
问题根源
Argo CD运行在prod集群的Pod内部,它尝试访问dev集群配置中的https://127.0.0.1:55640地址,但这个本地回环地址在prod集群Pod内部无法映射到你的本地Minikube dev集群,导致连接拒绝。
修复步骤
获取dev集群的实际IP地址
切换到dev集群上下文,获取Minikube分配的集群IP:minikube profile dev minikube ip记录输出的IP(例如
192.168.49.2)。更新dev集群的kubeconfig服务器地址
将kubeconfig中dev集群的server字段从本地回环地址替换为Minikube IP+API端口:# 获取dev集群原API端口 DEV_PORT=$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}' | cut -d: -f3) # 更新kubeconfig kubectl config set-cluster dev --server=https://$(minikube ip -p dev):$DEV_PORT确保网络可达性
检查运行Minikube的主机防火墙,允许prod集群所在的Minikube节点访问dev集群的API端口(默认6443或上述获取的DEV_PORT)。重新添加dev集群
再次执行添加命令:argocd cluster add dev --name dev
备选方案:使用Minikube Tunnel
如果上述方法仍有问题,可通过Minikube Tunnel暴露dev集群的API server到可访问地址:
# 启动后台隧道 minikube tunnel -p dev & # 获取隧道分配的API server地址并更新kubeconfig kubectl config set-cluster dev --server=https://$(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}' | sed 's/127.0.0.1/localhost/')
之后再重新执行集群添加命令。
内容的提问来源于stack exchange,提问作者Carlos Eduardo Troleis
相关产品推荐
相关产品推荐

