如何正确连接本地部署的MiniKF k8s集群?
本地连接arrikto/minikf内置K8s集群正确操作方法
直接复制Vagrant虚拟机内的./kube/config到本地不生效,核心原因是原配置文件内的APIServer地址是Vagrant私网网段/虚拟机内部回环地址,本地主机无法直接路由,同时内置证书绑定的是虚拟机内部主机标识,直连会触发证书校验失败。
按以下步骤操作即可正常连接:
- 第一步:在本地存放MiniKF Vagrantfile的目录下,执行命令获取Vagrant虚拟机的SSH连接参数,记录输出中的
HostName、Port、IdentityFile三个字段值:
vagrant ssh-config
- 第二步:登录Vagrant虚拟机导出扁平化的合法kubeconfig文件,避免证书、密钥路径引用虚拟机内部路径失效:
# 登录虚拟机 vagrant ssh # 导出kubeconfig到临时目录 kubectl config view --flatten > /tmp/kubeconfig-minikf # 退出虚拟机 exit # 将导出的配置文件复制到本地kube配置目录 vagrant scp default:/tmp/kubeconfig-minikf ~/.kube/config-minikf
- 第三步:建立SSH隧道将本地端口映射到虚拟机内部的K8s APIServer(默认APIServer监听虚拟机内6443端口),命令里的参数替换成第一步记录的对应值,执行后会在后台常驻:
ssh -i <记录的IdentityFile路径> -p <记录的SSH端口> -L 6443:127.0.0.1:6443 vagrant@<记录的HostName> -fN
默认参数下命令示例:
ssh -i ./.vagrant/machines/default/virtualbox/private_key -p 2222 -L 6443:127.0.0.1:6443 vagrant@127.0.0.1 -fN
如果本地6443端口已经被其他服务占用,可以把命令里第一个6443换成任意未占用端口(比如16443)即可。
- 第四步:修改本地的
~/.kube/config-minikf配置:- 找到clusters列表下对应集群的
server字段,值改为https://127.0.0.1:6443(如果上一步换了本地端口,这里对应改端口号) - 在该集群配置块下新增一行
insecure-skip-tls-verify: true,跳过本地环境的证书域名校验
- 找到clusters列表下对应集群的
- 第五步:指定配置文件测试集群连通性:
export KUBECONFIG=~/.kube/config-minikf kubectl get nodes
命令正常返回节点列表即代表连接成功。
连接成功后直接执行kubectl port-forward即可完成S3服务的端口转发,MiniKF内置S3服务默认在minio命名空间下,转发示例:
kubectl port-forward svc/minio -n minio 9000:9000
执行后本地访问127.0.0.1:9000即可对接内置S3服务。
注意:如果重启了Vagrant虚拟机,需要重新执行第三步的SSH隧道命令,否则连接会中断。
内容的提问来源于stack exchange,提问作者Tlaloc-ES
相关产品推荐
相关产品推荐

