kubernetes常规问题

  1. kubernetes的cordon打上的SchedulingDisabled仅仅影响调度,也就是直接打上nodeName不会受到该参数的影响
  2. kubernetes的QosClass判断pod内的全部container,包括init-container,也就是如果init-container不进行限制,其他container无论怎么配置仍然不是Guaranteed
  3. kubernetes集群新版本如果cordon打上unschedule,会默认追加Taint;旧版本不会
  4. kubernetes集群对于unschedule的节点不会走入调度环节,只有可以正常调度的节点才会走到后面判断Toleration,label等;特别地,对于daemonset的pod,schedulingDisable无效,但是tolerance等有效(v1.17版本中,Damoneset 的 pod 的调度从 daemonset controller 迁移到 kube-scheduler 来做调度,从而支持 PodAffnity、PodAntiAffinity 等能力)
  5. Error(不再重启),Completed状态的podip会显示,但是实际不占用podip,真实podip已经分配给其他服务使用
  6. kubernetes中,kubelet限制的max-pod数量是限制的具体的pod数量,超出会报错Outofpods
  7. 每次pod重启,kubelet会给他分配新的cgroup目录路径,而不会使用原来的;新的pod启动之后间隔一小段时间会删除旧的cgroup路径
  8. kubernetes 推荐使用 systemd 来代替 cgroupfs; 因为systemd是kubernetes自带的cgroup管理器, 负责为每个进程分配cgroups; 但docker的cgroup driver默认是cgroupfs,这样就同时运行有两个cgroup控制管理器;可以使用docker info查看docker使用的cgroup driver,然后从"/etc/docker/daemon.json"中修改成systemd