温馨提示×

CentOS上Kubernetes安装后如何测试

小樊
69
2025-09-22 10:59:39
栏目: 智能运维

CentOS上Kubernetes安装后测试流程

1. 验证集群基础状态

  • 检查节点就绪状态:使用kubectl get nodes命令,确认所有节点(Master/Worker)均显示为Ready状态。若有节点未就绪,需通过kubectl describe node <节点名称>查看具体原因(如kubelet服务异常、证书问题等)。
  • 检查Pod运行状态:运行kubectl get pods --all-namespaces,确保所有Pod(尤其是系统组件如kube-apiserverkube-controller-managerkube-scheduler)均处于Running状态。若Pod状态异常(如CrashLoopBackOff),可通过kubectl logs <Pod名称> -n <命名空间>查看日志定位问题。

2. 部署简单应用测试核心功能

  • 部署Nginx应用:通过YAML文件(或命令行)创建Deployment和Service。例如,创建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.yamlkubectl apply -f nginx-service.yaml。通过kubectl get deployments确认Deployment创建成功(AVAILABLE副本数=3),通过kubectl get svc查看Service是否分配了EXTERNAL-IP(若为LoadBalancer类型)。
  • 访问应用:若Service类型为LoadBalancer,使用curl http://<EXTERNAL-IP>或浏览器访问EXTERNAL-IP,应能看到Nginx默认欢迎页面;若为NodePort类型,通过任意节点IP加NodePort(如http://<节点IP>:30080)访问。

3. 测试网络功能

  • Pod间连通性测试:通过临时Pod执行网络测试命令。例如,创建BusyBox Pod并测试与Nginx Pod的连通性:
    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 <网络插件名称>),或查看网络策略是否限制了通信。
  • Service负载均衡测试:通过多个终端同时访问nginx-serviceEXTERNAL-IP,或使用ab(Apache Benchmark)工具模拟并发请求,观察Nginx Pod的日志(kubectl logs <nginx-pod-name>),确认请求被分发到多个Pod。

4. 测试自动扩展功能

  • 水平Pod自动伸缩(HPA):若集群启用了Metrics Server(用于监控资源使用率),可创建HPA配置文件(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增加)。

5. 测试自我修复能力

  • 删除Pod测试恢复:通过kubectl delete pod <nginx-pod-name>删除一个Nginx Pod,观察Deployment是否会自动创建新的Pod(kubectl get pods查看新Pod状态变为Running)。此功能验证了Deployment的滚动更新和自我修复机制。

6. 检查日志与事件

  • 查看Pod日志:若应用出现问题,通过kubectl logs <Pod名称> -n <命名空间>查看容器日志,定位错误原因(如应用启动失败、依赖服务不可用)。
  • 查看集群事件:执行kubectl get events --sort-by=.metadata.creationTimestamp,查看集群近期事件(如节点NotReady、Pod调度失败、Service创建失败),快速定位问题根源。

0