1、节点管理
定时向api server汇报本节点的信息状态,资源使用状态,
2、pod管理
负责维护节点pod的生命周期,创建、更新、删除容器
3、容器健康检查
kubelet会定期调用容器中的探针来检测容器是否存活、就绪,来进行对应的操作,比如重启
4、metrics server资源监控
监控node节点的cpu、内存、文件系统、网络等资源,kubelet通过metrics server获取节点以及容器的数据
一、配置文件
cgroupDriver: systemd
clusterDNS:
- 169.254.20.10
clusterDomain: cluster.local
configMapAndSecretChangeDetectionStrategy: Watch
containerLogMaxFiles: 3
containerLogMaxSize: 10Mi
enforceNodeAllocatable:
- pods
eventBurst: 10
eventRecordQPS: 5
evictionHard:imagefs.available: 15%memory.available: 300Minodefs.available: 10%nodefs.inodesFree: 5%
evictionPressureTransitionPeriod: 5m0s
failSwapOn: true
fileCheckFrequency: 40s
hairpinMode: hairpin-veth
healthzBindAddress: 0.0.0.0
healthzPort: 10248
httpCheckFrequency: 40s
imageGCHighThresholdPercent: 85
imageGCLowThresholdPercent: 80
imageMinimumGCAge: 2m0s
kubeAPIBurst: 100
kubeAPIQPS: 50
makeIPTablesUtilChains: true
maxOpenFiles: 1000000
maxPods: 110
nodeLeaseDurationSeconds: 40
nodeStatusReportFrequency: 1m0s
nodeStatusUpdateFrequency: 10s
oomScoreAdj: -999
podPidsLimit: -1
port: 10250
# disable readOnlyPort
readOnlyPort: 0
resolvConf: /etc/resolv.conf
runtimeRequestTimeout: 2m0s
serializeImagePulls: true
streamingConnectionIdleTimeout: 4h0m0s
syncFrequency: 1m0s
tlsCertFile: /etc/kubernetes/ssl/kubelet.pem
tlsPrivateKeyFile: /etc/kubernetes/ssl/kubelet-key.pem
二、kubelet配置解析
1、主要作用:
pod生命周期管理、节点状态上报和资源管理
2、pod管理,
记录事件的数量、DNS IP、cgroup、DNS域名、DNS位置、容器日志的数量和分割大小、最大pod数量、镜像并行下载开关
3、资源管理:状态上报、资源预留、防止资源耗尽、容器和系统的资源配置
状态上报:上报给APIserver
节点基础信息:IP地址、操作系统、内核、运行时、kubelet版本、kube-proxy信息
节点资源信息:cpu、内存、磁盘、PID
资源预留:
capaclty(总量)和allocated(可分配给pod的需要总量减去系统应用,比如kubelet、kube-proxy、运行时占用的)
节点磁盘管理:
系统分区–>nodefs 容器日志和工作目录
容器运行时分区–>imagefs 用户镜像
驱逐管理:在资源不够的时候,驱逐一些容器,保证节点资源稳定
硬驱逐条件evictionHard:
imagefs.available: 15%
memory.available: 300Mi
nodefs.available: 10%
nodefs.inodesFree: 5%
驱逐、OOM优先级:
没有资源限制>资源限制和请求不相等>请求的资源使用量小>请求的资源使用量大
资源监控:自带cAdvisor