在运维工作中,如果使用kubeasz部署k8s集群,如何使用本地连接这个集群?
使用 kubeasz 部署的 K8s 集群本地连接方法
核心就一件事:把部署节点上的 kubeconfig 文件拷到本地,修改 server 地址,然后用 kubectl 连接。
具体步骤
1. 在部署节点上找到 kubeconfig
kubeasz 部署完成后,配置文件在部署节点的以下位置:
# kubeasz 的配置目录(默认)
ls /etc/kubeasz/ clusters/your-cluster/
# 关键文件:集群的 kubeconfig
cat /etc/kubeasz/clusters/your-cluster/servers/kube-controllers/manifests/kube-controller-manager.conf
更直接的方式,部署节点上 kubectl 已经配好了,直接看:
# 在部署节点上执行
cat ~/.kube/config
或者如果 kubeasz 用了标准路径:
# kubeasz 生成的 kubeconfig 通常在这里
cat /etc/kubeasz/ssl/kube-client/kubectl.pem
# 或者
ls /etc/kubeasz/clusters/*/kubeconfig
2. 拷贝 kubeconfig 到本地
在部署节点上拿到 ~/.kube/config 的内容后,拷到你的本地机器:
# 在本地机器上执行(把 <deploy-ip> 换成部署节点 IP)
scp root@<deploy-ip>:~/.kube/config ~/.kube/config
3. 修改 server 地址(关键)
拷过来的 config 文件里 server 地址通常是内网 IP,需要改成你能访问的地址:
# 编辑本地 kubeconfig
vi ~/.kube/config
找到 server: 那行,把地址改成部署节点(或 master 节点)的公网 IP / 可达 IP:
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTi...
server: https://<部署节点可达IP>:6443 # ← 改这里
name: cluster.local
4. 确保 6443 端口可达
本地到 master 节点的 6443 端口(kubeasz 默认 API 端口)必须能通:
# 在本地测试端口连通性
telnet <master-ip> 6443
# 或
nc -zv <master-ip> 6443
如果不通,检查:
- 云服务器安全组放行 6443
- 节点防火墙放行(
iptables -L -n或firewall-cmd --list-all)
5. 本地安装 kubectl(如果还没装)
# macOS
brew install kubectl
# Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Windows (PowerShell)
choco install kubernetes-cli
6. 验证连接
# 查看集群信息
kubectl cluster-info
# 查看节点
kubectl get nodes
# 查看 kubeconfig 当前上下文
kubectl config current-context
输出类似这样就成功了:
Kubernetes control plane is running at https://<ip>:6443
NAME STATUS ROLES AGE VERSION
node1 Ready control-plane,master 30d v1.28.x
node2 Ready <none> 30d v1.28.x
常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
Unable to connect to the server |
网络不通/IP 不对 | 检查 server 地址和 6443 端口可达性 |
certificate signed by unknown authority |
CA 证书不匹配 | 确保拷贝了完整的 certificate-authority-data |
Unauthorized |
客户端证书问题 | 重新拷贝完整的 config 文件,不要手动改证书部分 |
| server 是内网 IP 无法访问 | kubeconfig 默认用内网地址 | 把 server 改成公网 IP 或通过 VPN/SSH 隧道 |
如果用 SSH 隧道方式(不想暴露 6443 端口):
# 建立隧道,把本地 6443 转发到 master 节点
ssh -L 6443:127.0.0.1:6443 root@<master-ip> -N
# 然后 kubeconfig 里 server 改成
server: https://127.0.0.1:6443
这样更安全,适合生产环境。

浙公网安备 33010602011771号