验证Debian上Kubernetes安装是否成功,需通过系统组件状态检查、集群功能测试、网络插件验证及版本兼容性确认等多维度进行,以下是具体步骤:
使用systemctl命令确认kubelet服务(Kubernetes节点代理)是否正常运行,这是集群的基础组件:
sudo systemctl status kubelet
预期输出应显示active (running),若未运行,可通过sudo systemctl start kubelet启动并设置开机自启(sudo systemctl enable kubelet)。
通过kubectl命令查看集群中所有节点的状态,确保节点已成功加入并处于Ready状态(表示节点可接收工作负载):
kubectl get nodes
预期输出中,STATUS列应显示Ready(若节点未就绪,需等待几分钟或检查节点日志journalctl -u kubelet排查问题)。
使用kubectl cluster-info命令查看集群的关键服务(如API Server、Controller Manager、Scheduler)是否正常运行,输出应包含集群的API Server地址(如Kubernetes master is running at https://<master-ip>:6443):
kubectl cluster-info
若无法访问API Server,需检查防火墙是否开放6443端口(或其他配置的端口)。
Kubernetes依赖网络插件实现Pod间通信,需确认插件已正确安装并运行。以Flannel(常用轻量级插件)为例,执行以下命令:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 若未安装则部署
kubectl get pods -n kube-system # 查看kube-system命名空间下的网络插件Pod
预期输出中,所有Pod的STATUS应为Running(若有Pending或Error状态的Pod,需通过kubectl describe pod <pod-name> -n kube-system排查原因)。
通过部署一个简单的Nginx应用,测试集群的调度、运行及服务暴露能力:
# 创建Nginx Deployment(部署2个副本)
kubectl create deployment nginx-app --image=nginx --replicas=2
# 暴露Deployment为NodePort类型服务(允许外部访问)
kubectl expose deployment nginx-app --name=nginx-web-svc --type=NodePort --port=80 --target-port=80
# 查看Pod状态(应全部为Running)
kubectl get pods
# 获取服务的NodePort(用于外部访问)
kubectl get svc nginx-web-svc
预期输出中,nginx-app的Pod状态为Running,nginx-web-svc的TYPE为NodePort(如PORT(S): 80:31743/TCP,31743为随机分配的端口)。
通过curl命令访问Nginx服务的NodePort,验证服务是否能正常响应:
curl http://<任意节点IP>:<NodePort> # 替换为上一步获取的NodePort(如31743)
预期输出为Nginx的默认欢迎页面(Welcome to nginx on Debian),说明集群的服务暴露功能正常。
使用kubectl version命令确认客户端(kubectl)与服务器(Kubernetes集群)的版本兼容性(Kubernetes要求客户端版本与服务器版本相差不超过1个小版本):
kubectl version --short
预期输出中,Client Version(本地kubectl版本)与Server Version(集群版本)应一致或接近(如v1.28.2/v1.27.6)。
通过以上步骤逐一验证,若所有检查项均符合预期,则说明Debian上的Kubernetes安装成功且功能正常。若某一步出现问题,可根据错误信息针对性排查(如检查Docker状态、网络配置、日志文件等)。