worker node

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

image-20221101105754065

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_TARGETMINIMUM_IP_TARGET 环境变量,发现ENI不足时调用API申请额外的ENI

worker节点上的三种工作负载

Worker Node上运行三种工作负载: managed node groupsself-managed nodesfargate

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控制台上一键升级 需要自己升级

node-problem-detector

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