K8S故障排查

故障排查

//查看Pod事件
kubectl describe TYPE NAME_PREFIX

//查看Pod日志(Failed状态下)
kubectl logs <POD_NAME> [-c Container_NAME]

//进入Pod(状态为running,但是服务没有提供)
kubectl exec –it <POD_NAME> bash

//查看集群信息
kubectl get nodes

//发现集群状态正常
kubectl cluster-info

//查看kubelet日志发现
journalctl -xefu kubelet


##对节点执行维护操作:
kubectl get nodes

//将 Node 标记为不可调度的状态,这样就不会让新创建的 Pod 在此 Node 上运行
kubectl cordon <NODE_NAME>          #该node将会变为SchedulingDisabled状态

//kubectl drain 可以让 Node 节点开始释放所有 pod,并且不接收新的 pod 进程。drain 本意排水,意思是将出问题的 Node 下的 Pod 转移到其它 Node 下运行
kubectl drain <NODE_NAME> --ignore-daemonsets --delete-local-data --force

--ignore-daemonsets:无视 DaemonSet 管理下的 Pod。
--delete-local-data:如果有 mount local volume 的 pod,会强制杀掉该 pod。
--force:强制释放不是控制器管理的 Pod,例如 kube-proxy。

注:执行 drain 命令,会自动做了两件事情:
(1)设定此 node 为不可调度状态(cordon)
(2)evict(驱逐)了 Pod

//kubectl uncordon 将 Node 标记为可调度的状态
kubectl uncordon <NODE_NAME>
当面试官在面试中提到Kubernetes(简称K8s故障排查时,通常会涉及以下几个方面的问题: 1. Pod无法动或启动失败的可能原因有哪些? - 资源不足:可能是节点资源不足,如CPU、内存或存储空间不足。 - 配置错误:可能是Pod的配置文件中存在错误,如镜像名称错误、端口冲突等。 - 网络问题:可能是网络配置错误,如Pod无法访问所需的服务或外部网络。 - 权限问题:可能是Pod没有足够的权限来执行所需的操作。 2. Pod运行时出现问题时,如何查看日志? 可以通过以下命令查看Pod的日志: ``` kubectl logs <pod_name> -n <namespace> ``` 其中,`<pod_name>`是Pod的名称,`<namespace>`是Pod所在的命名空间。 3. 如何查看Pod的状态和事件? 可以使用以下命令查看Pod的状态和事件: ``` kubectl get pods -n <namespace> kubectl describe pod <pod_name> -n <namespace> ``` 其中,`<namespace>`是Pod所在的命名空间,`<pod_name>`是Pod的名称。 4. 如何排查K8s集群中节点无法加入的问题? - 检查网络连接:确保节点能够与集群的控制平面通信。 - 检查节点配置:检查节点的kubelet配置是否正确,如API服务器地址、证书等。 - 检查节点状态:使用`kubectl get nodes`命令检查节点的状态和条件。 - 检查日志:查看节点的kubelet和kube-proxy的日志,以了解具体的错误信息。 5. 如何排查K8s服务无法访问的问题? - 检查服务配置:确保服务的配置文件中定义的端口和协议与实际应用程序一致。 - 检查网络策略:如果启用了网络策略,确保服务的访问策略允许从所需的源IP访问该服务。 - 检查服务发现:确保服务已正确注册到集群的DNS或其他服务发现机制中。 - 检查网络连接:检查服务所在的Pod是否能够与服务进行通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值