刚才面试有人问我k8s中node坏了怎么解决?

  1. node上面设置不可调度
    先把上面的跑的pod驱逐啊,让他上面没有工作的资源
    node节点故障之污点
    pod一直出处于pending状态,无法调度到节点
    报错日志
    原因
    node节点 taint污点为unschedule策略
    补充
    污点的三种类型
    NoSchedule :一定不能被调度。
    PreferNoSchedule:尽量不要调度。
    NoExecute:不仅不会调度,还会驱逐Node上已有的Pod。
    命令
    查看污点: kubectl describe node node_id | grep Taints
    对 Node 上设置污点:
    kubectl taint nodes node1 key=value1:NoSchedule
    kubectl taint nodes node1 key=value1:NoExecute
将名为 ek8s-node-1 的 node 设置为不可用,并且重新调度该 node 上所有允许的 pods
$ kubectl cordon ek8s-node-1
$ kubectl drain ek8s-node-1 --ignore-daemonsets --delete-local-data --force
$ kubectl get nodes

2.pod故障
kubectl describe po (你的pod名)
查看原因

kubectl logs 常用于将容器中的日志导出。命令格式:

kubectl logs [-f] [-p] POD [-c CONTAINER]

-c, --container="": 容器名
 
-f, --follow[=false]: 指定是否持续输出日志
    --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true
    --limit-bytes=0: 输出日志的最大字节数。默认无限制
 
-p, --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志
    --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种
    --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种
    --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志
    --timestamps[=false]: 在日志中包含时间戳
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐