kubectl是管理Kubernetes集群的核心命令行工具,首先需确认其已正确安装并可正常使用。执行以下命令查看版本信息:
kubectl version --client
若输出包含Client Version(如v1.28.2)及对应的Git版本信息,说明kubectl安装成功。
在主节点执行以下命令,查看集群中所有节点的状态:
kubectl get nodes
预期输出中,所有节点的STATUS列应显示为Ready(如node-1 Ready control-plane,master 5d3h v1.28.2)。若节点状态为NotReady,需检查节点网络、kubelet服务状态或防火墙配置。
Kubernetes集群的正常运行依赖kube-apiserver、kube-controller-manager、kube-scheduler等核心组件。通过以下命令查看这些组件所在的Pod状态(位于kube-system命名空间):
kubectl get pods -n kube-system | grep -E 'kube-apiserver|kube-controller-manager|kube-scheduler'
所有组件的Pod状态应为Running(如kube-apiserver-node-1 1/1 Running 0 5d3h)。若有Pod处于Pending、CrashLoopBackOff等异常状态,需通过kubectl describe pod <pod-name> -n kube-system排查原因。
Kubernetes需要网络插件(如Flannel、Calico)实现Pod间通信。以Flannel为例,执行以下命令查看网络插件Pod状态:
kubectl get pods -n kube-system | grep flannel
所有Flannel相关的Pod(如kube-flannel-ds-amd64-xxxxx)状态应为Running。若网络插件未正常运行,Pod间通信(如后续部署的应用)将失败。
通过部署一个简单的Nginx应用,验证集群的部署、调度和服务暴露功能:
kubectl create deployment nginx --image=nginx --replicas=2
kubectl get pods
预期输出中,nginx相关的Pod(如nginx-xxxxx-yyyyy)状态应为Running,且READY列显示1/1(表示容器已就绪)。NodePort类型,以便从外部访问:kubectl expose deployment nginx --type=NodePort --port=80
kubectl get service nginx
输出中PORT(S)列应显示类似80:30080/TCP(30080为随机分配的NodePort)。curl命令访问Service的NodePort:curl http://<节点IP>:30080
若返回Nginx的默认欢迎页面(如Welcome to nginx on Debian),说明应用部署成功,集群功能正常。通过以下命令查看集群的整体信息,确认API Server地址、DNS服务状态等:
kubectl cluster-info
预期输出中,Kubernetes master is running at应显示API Server的地址(如https://127.0.0.1:6443),KubeDNS is running at应显示DNS服务的地址(如https://127.0.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy)。
以上步骤覆盖了Kubernetes安装后的核心验证环节,若所有步骤均能正常执行并得到预期结果,说明Debian上的Kubernetes集群已安装成功并具备基本功能。