使用kubectl命令查看集群核心组件(如kube-apiserver、kube-controller-manager、kube-scheduler、kubelet、kube-proxy等)的运行状态。若所有组件均显示为Running,则说明组件部署正常。
kubectl get componentstatuses
或简化查看关键组件状态:
kubectl get cs
预期输出示例:
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
通过kubectl get nodes命令确认所有节点(Master和Worker)均已成功加入集群并处于Ready状态。Ready状态表示节点已通过健康检查,可以接收Pod调度。
kubectl get nodes
预期输出示例:
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 1h v1.28.2
k8s-worker1 Ready <none> 30m v1.28.2
创建一个简单的Nginx Pod,验证Kubernetes是否能正确调度、启动容器并维持其运行。
test-pod.yaml:apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: nginx-container
image: nginx:latest
ports:
- containerPort: 80
kubectl apply -f test-pod.yaml
kubectl get pods -o wide
预期输出中STATUS列应为Running,READY列表示容器就绪(如1/1表示1个容器已就绪)。NodePort),然后通过节点IP访问。kubectl expose pod test-pod --type=NodePort --port=80
NODE_PORT=$(kubectl get svc test-pod -o jsonpath='{.spec.ports[0].nodePort}')
curl http://<节点IP>:$NODE_PORT
预期返回Nginx默认欢迎页面。若安装了网络插件(如Flannel、Calico),需确认插件Pod是否正常运行。以Flannel为例:
kubectl get pods -n kube-system -l app=flannel
预期输出中所有Pod的STATUS应为Running,表示网络插件已就绪,支持Pod间通信。
确保kubectl客户端、Kubernetes集群服务端及节点组件的版本兼容。常用命令:
kubectl客户端版本:kubectl version --client --short
kubectl version --short | grep Server
kubelet --version
预期结果:客户端与服务端版本应一致(或相差不超过1个小版本),节点组件版本应与服务端匹配。通过kubectl get events命令查看集群近期事件(如节点加入、Pod调度、组件异常等),快速识别潜在问题。
kubectl get events --sort-by='.metadata.creationTimestamp'
重点关注Warning级别的事件(如FailedScheduling、Unhealthy),并根据事件描述排查问题。
通过部署的测试Pod访问其他服务(如集群内的CoreDNS),验证Pod间网络是否通畅。例如:
kubectl run -it --rm --image=busybox:1.28 busybox -- sh
# 在Busybox容器内执行
wget -qO- http://kubernetes.default.svc.cluster.local
预期返回Kubernetes API服务器的默认响应(如{"paths":["/api","/api/v1","/apis"]}),表示Pod间网络通信正常。