管理 K8s 集群
远程管理 K8s 集群
在其他主机上远程管理 Kubernetes (K8s) 集群是非常常见且标准的日常操作。它的核心原理其实很简单:让远程主机上的 kubectl 命令行工具,通过认证文件(kubeconfig)与目标 K8s 集群的 API Server 建立安全的通信。
1. 确保网络连通性
- 远程主机必须能够访问 K8s 集群的 API Server 的 IP 地址和端口(默认 6443)。可通过 telnet 或 nc 命令测试连通性。
2. 在远程主机上安装 kubectl 工具
- 可使用 scp 命令将
kubectl二进制文件从 Master 节点复制到远程主机。 - 确保
kubectl可执行权限(chmod +x kubectl)。
3. 拷贝 kubeconfig 文件
kubeconfig文件包含了集群的连接地址、证书和身份认证信息。kubeconfig文件通常存放于 Master 节点的~/.kube/config路径下(如果是使用 kubeadm 安装的,也可以在/etc/kubernetes/admin.conf找到)。- 在远程主机上,创建相同的目录并粘贴内容(或直接通过
scp命令拷贝文件):
# 在远程主机上执行
mkdir -p ~/.kube
vim ~/.kube/config # 将刚刚在 Master 节点看到的内容粘贴进去并保存4. 检查 API Server 地址
打开远程主机上的 ~/.kube/config 文件,找到 clusters 下的 server 字段:
clusters:
- cluster:
certificate-authority-data: ...
server: https://<Master-IP>:6443 # 检查这里的 IP 是否为 API Server 的 IP5. 测试连接
在远程主机上运行以下命令,验证是否配置成功:
kubectl get nodes如果能正常打印出集群的节点信息,说明已经成功接管了该集群!
6. 配置 tab 补全
kubectl completion bash >> /etc/profile.d/kubectl_completion.sh
. /etc/profile.d/kubectl_completion.shPS :如果将来需要在这台远程主机上管理多个不同的 K8s 集群,直接覆盖 ~/.kube/config 会导致旧集群丢失。可以将不同的 config 文件合并,或者使用环境变量 KUBECONFIG 来指定:
export KUBECONFIG=~/.kube/config-cluster1:~/.kube/config-cluster2然后使用 kubectl config use-context <cluster-name> 在不同集群间无缝切换。
获取 yaml 文件的定义方式
- 可通过
kubectl explain命令获取资源的定义方式。
kubectl explain Pod.spec.containers.livenessProbe