温馨提示×

如何检查centos k8s安装

小樊
53
2025-10-24 06:10:42
栏目: 智能运维

一、前置环境检查

在检查CentOS上Kubernetes(k8s)安装前,需确保基础环境配置正确,避免因环境问题导致集群异常:

  • 系统版本:确认CentOS为7.x或8.x(需支持k8s版本要求);
  • 网络连通性:所有节点(Master/Worker)之间能互相通信(可通过pingssh测试);
  • 防火墙/SELinux:建议关闭防火墙(systemctl stop firewalld && systemctl disable firewalld)和SELinux(setenforce 0并修改/etc/selinux/configSELINUX=disabled);
  • 交换分区:禁用交换分区(swapoff -a并注释/etc/fstab中swap行),避免影响kubelet运行;
  • 时间同步:配置NTP服务(如ntpdate ntp.aliyun.com),确保节点时间一致。

二、Kubernetes组件状态检查

Kubernetes核心组件(kubelet、kubeadm、kubectl)是集群运行的基础,需验证其安装及运行状态:

  • 组件安装验证:通过rpm -qa | grep kube命令检查kubeletkubeadmkubectl是否安装,或使用yum list installed | grep kube确认;
  • kubelet服务状态:在所有节点执行systemctl status kubelet,确保服务处于active (running)状态(若未运行,执行systemctl start kubelet并排查日志journalctl -xeu kubelet);
  • 版本一致性:检查客户端与服务端版本是否匹配(kubectl version --client查看客户端版本,kubelet --version查看节点服务端版本,kubeadm version查看初始化工具版本),避免因版本冲突导致问题。

三、集群整体状态检查

通过kubectl命令验证集群整体健康状态,覆盖控制平面、节点、Pod等核心组件:

  • 控制平面组件状态:执行kubectl get componentstatuses(或在v1.19+版本中使用kubectl get --raw /api/v1/componentstatuses),检查controller-managerscheduleretcd是否为Healthy(若为Unhealthy,需检查对应组件日志,如journalctl -xeu kube-controller-manager);
  • 节点状态:执行kubectl get nodes -o wide,确认所有节点(Master/Worker)状态为Ready(若为NotReady,需检查节点kubelet服务、网络连通性或磁盘空间);
  • Pod运行状态:执行kubectl get pods -A-A表示所有命名空间),检查所有Pod是否为Running状态(若存在CrashLoopBackOffImagePullBackOffPending等异常,需进一步分析,如kubectl describe pod <pod-name> -n <namespace>查看详细事件)。

四、网络插件检查

网络插件(如Flannel、Calico)是Pod间通信的关键,需验证其是否正常运行:

  • 插件部署状态:执行kubectl get pods -n kube-system,过滤网络插件相关的Pod(如Flannel的kube-flannel-ds-*、Calico的calico-node-*),确认所有Pod状态为Running
  • 网络连通性测试:部署一个测试Pod(如kubectl run nginx --image=nginx --port=80 --restart=Never),创建NodePort服务(kubectl expose deployment nginx --type=NodePort --port=80),获取NodePort后,在任意节点用curl http://<node-ip>:<node-port>访问,若能返回Nginx默认页面,则网络插件工作正常。

五、核心服务功能验证

验证Kubernetes核心服务(如DNS、调度)是否正常:

  • DNS解析测试:部署busybox测试Pod(kubectl run -it --rm --image=busybox:1.28 busybox --restart=Never -- sh),在Pod内执行nslookup kubernetes.default,若能解析到Kubernetes服务的ClusterIP(通常为10.96.0.1),则CoreDNS/DNSmasq工作正常;
  • 调度功能测试:部署一个资源请求大于节点可用资源的Pod(如kubectl run test-pod --image=nginx --requests=cpu=1000m,memory=10Gi --limit=cpu=1000m,memory=10Gi),若Pod状态为Pending,说明调度功能正常(需检查节点资源是否充足,如kubectl top nodes查看节点资源使用情况)。

六、日志与诊断工具使用

若上述检查发现问题,可通过以下工具深入排查:

  • 查看kubelet日志journalctl -xeu kubelet,分析节点级别的错误(如容器运行时异常、网络插件问题);
  • 查看etcd健康状态:在Master节点执行ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key endpoint health,确认etcd集群健康(etcd是控制平面的数据存储,其异常会导致集群不可用);
  • 导出诊断信息kubectl cluster-info dump > dump.json,将集群配置、事件、Pod日志等信息导出,便于提交给社区或进一步分析。

0