工作节点上运行着以下组件——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