工作节点上运行着以下组件——kubetlet, coredns, aws-node, kube-proxy

kubelet负责与API Server通讯,coredns负责容器内服务的dns解析,kube-proxy负责iptables网络的转发,这三个组件在普通kubernetes集群上也有
还有一个AWS特有的组件aws-node, 它以daemonset形式部署,上面跑着Amazon VPC CNI。CNI会预分配ENI和secondary IP,这样当创建新的pod时,它的网络启动速度会更快。aws-node 会定期检查 WARM_ENI_TARGET, WARM_IP_TARGET , MINIMUM_IP_TARGET 环境变量,发现ENI不足时调用API申请额外的ENI
Worker Node上运行三种工作负载: managed node groups、self-managed nodes和fargate
| Fargate | Managed nodegroup | self-managed nodes | |
|---|---|---|---|
| Units of work | Pod | Pod and EC2 | Pod and EC2 |
| Unit of charge | Pod | EC2 | EC2 |
| Host : Pods | 1 : 1 | 1 : many | 1 : many |
| 是否可以运行windows容器 | 否 | 否 | 是 |
| 升级方式 | 如果是EKS optimized AMI, 可以直接在EKS控制台上一键升级 |
需要自己升级 |
pod跑在worker node上运行,但node本身可能有多种问题:硬件故障、容器运行时出问题、系统内核问题、文件系统问题,这些问题对于k8s的控制平面是不可见的,所以它会继续调度pod到这些node上面。
node-problem-detector就是为了解决上面的问题,它在每个节点上在daemonset形式部署,检查每个节点的健康状况,并报告给apiserver或Prometheus。
默认node problem detector已经在GCE上部署
node-problem-detector的github地址是: https://github.com/kubernetes/node-problem-detector