kubectl get nodes命令,确认所有节点(Master/Worker)均显示为Ready状态。若有节点未就绪,需通过kubectl describe node <节点名称>查看具体原因(如kubelet服务异常、证书问题等)。kubectl get pods --all-namespaces,确保所有Pod(尤其是系统组件如kube-apiserver、kube-controller-manager、kube-scheduler)均处于Running状态。若Pod状态异常(如CrashLoopBackOff),可通过kubectl logs <Pod名称> -n <命名空间>查看日志定位问题。nginx-deployment.yaml定义3个副本的Nginx容器,再创建nginx-service.yaml将Service类型设为LoadBalancer(用于外部访问)。# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
kubectl apply -f nginx-deployment.yaml和kubectl apply -f nginx-service.yaml。通过kubectl get deployments确认Deployment创建成功(AVAILABLE副本数=3),通过kubectl get svc查看Service是否分配了EXTERNAL-IP(若为LoadBalancer类型)。LoadBalancer,使用curl http://<EXTERNAL-IP>或浏览器访问EXTERNAL-IP,应能看到Nginx默认欢迎页面;若为NodePort类型,通过任意节点IP加NodePort(如http://<节点IP>:30080)访问。kubectl run test-pod --image=busybox --rm -it --restart=Never -- wget -O- http://<nginx-pod-ip>
或使用nc命令测试端口连通性:kubectl exec -it test-pod -- nc -zv <nginx-pod-ip> 80
若连通失败,需检查网络插件(如Flannel、Calico)是否正常运行(kubectl get pods -n kube-system | grep <网络插件名称>),或查看网络策略是否限制了通信。nginx-service的EXTERNAL-IP,或使用ab(Apache Benchmark)工具模拟并发请求,观察Nginx Pod的日志(kubectl logs <nginx-pod-name>),确认请求被分发到多个Pod。nginx-hpa.yaml),设置根据CPU利用率自动调整Pod数量:apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment
minReplicas: 3
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
执行kubectl apply -f nginx-hpa.yaml后,通过kubectl get hpa查看HPA状态。使用压力测试工具(如ab -n 10000 -c 100 http://<EXTERNAL-IP>)增加负载,观察HPA是否自动扩展Pod数量(CURRENT REPLICAS增加)。kubectl delete pod <nginx-pod-name>删除一个Nginx Pod,观察Deployment是否会自动创建新的Pod(kubectl get pods查看新Pod状态变为Running)。此功能验证了Deployment的滚动更新和自我修复机制。kubectl logs <Pod名称> -n <命名空间>查看容器日志,定位错误原因(如应用启动失败、依赖服务不可用)。kubectl get events --sort-by=.metadata.creationTimestamp,查看集群近期事件(如节点NotReady、Pod调度失败、Service创建失败),快速定位问题根源。