作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,如果使用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 -nfirewall-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

这样更安全,适合生产环境。

posted @ 2026-08-14 14:39  黄嘉波  阅读(17)  评论(0)    收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波