Home

MacBook 配置 kubectl 连接 K8s 集群

环境信息

  • 集群 VIP: 10.0.5.10 (HAProxy + Keepalived)
  • Master 节点: 10.0.5.1 / 10.0.5.2 / 10.0.5.3
  • SSH 密码: a110120119

配置步骤

1. 安装 kubectl(如果还没装)


brew install kubectl

# 验证安装
kubectl version --client

2. 创建 kubeconfig 目录

mkdir -p ~/.kube

3. 下载集群配置文件

从任意 Master 节点复制 admin.conf 到本地:

# 使用 sshpass 自动输入密码(需先安装: brew install sshpass)
sshpass -p 'a110120119' ssh -o StrictHostKeyChecking=no root@10.0.5.1 'cat /etc/kubernetes/admin.conf' > ~/.kube/config

或者手动复制

# SSH 到 master 节点
ssh root@10.0.5.1

# 查看配置文件内容
cat /etc/kubernetes/admin.conf

# 复制内容到本地 ~/.kube/config 文件

4. 修改 server 地址(关键!)

原配置使用的是 lb-vip 域名:

server: https://lb-vip:6443

由于 API Server 证书没有包含 VIP (10.0.5.10),需要改为直接使用 Master IP:

# 修改为 Master-01 的 IP
sed -i '' 's|server: https://lb-vip:6443|server: https://10.0.5.1:6443|' ~/.kube/config

注意: 如果集群证书包含了 VIP,可以直接使用 https://10.0.5.10:6443 实现高可用。


5. 验证连接

# 测试连接
kubectl get nodes

# 预期输出
NAME            STATUS   ROLES           AGE   VERSION
k8s-master-01   Ready    control-plane   11h   v1.30.14
k8s-master-02   Ready    control-plane   11h   v1.30.14
k8s-master-03   Ready    control-plane   11h   v1.30.14
k8s-node-01     Ready    <none>          11h   v1.30.14
k8s-node-02     Ready    <none>          11h   v1.30.14
k8s-node-03     Ready    <none>          11h   v1.30.14

常见问题

Q1: 证书错误(x509: certificate is valid for…)

原因: API Server 证书没有包含你使用的 IP/域名

解决:

  • 使用证书中包含的 IP(如 10.0.5.1/2/3)
  • 或重新生成证书包含 VIP

Q2: 连接超时

检查:

# 测试网络连通性
ping 10.0.5.1

# 测试端口
nc -zv 10.0.5.1 6443

Q3: 权限不足

解决: 确保使用的是 admin.conf(集群管理员权限)


可选:配置命令补全

# Bash
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

# Zsh (Mac 默认)
source <(kubectl completion zsh)
echo "source <(kubectl completion zsh)" >> ~/.zshrc

完整命令速查

# 一键配置(复制粘贴执行)
mkdir -p ~/.kube
sshpass -p 'a110120119' ssh -o StrictHostKeyChecking=no root@10.0.5.1 'cat /etc/kubernetes/admin.conf' > ~/.kube/config
sed -i '' 's|server: https://lb-vip:6443|server: https://10.0.5.1:6443|' ~/.kube/config
kubectl get nodes

配置完成!现在可以在 MacBook 上直接管理 K8s 集群了。

Kubernetes 网络