K8SCpu-Manager-Policy

注:K8S版本1.10
K8S使用过程中发现java程序启动特别慢的情况,这个原因主要是由于K8S CPU上下文的频繁切换导致的CPU利用率不高。可以通过K8S的cpu-manager-policy来解决这个问题,配置如下。

成都创新互联服务项目包括阿拉尔网站建设、阿拉尔网站制作、阿拉尔网页制作以及阿拉尔网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,阿拉尔网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到阿拉尔省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

在kubelet的启动参数中加入如下参数:

--feature-gates=CPUManager=true --cpu-manager-policy=static --kube-reserved=cpu=1,memory=0

重启kubelet

systemctl restart kubelet

发现报错

Jan 23 10:49:30 sh-saas-k8s1-node-dev-02 systemd: Starting Kubernetes systemd probe.
Jan 23 10:49:30 sh-saas-k8s1-node-dev-02 kubelet: panic: [cpumanager] state file: unable to restore state from disk (policy configured "static" != policy from state file "none")
Jan 23 10:49:30 sh-saas-k8s1-node-dev-02 kubelet: Panicking because we cannot guarantee sane CPU affinity for existing containers.
Jan 23 10:49:30 sh-saas-k8s1-node-dev-02 kubelet: Please drain this node and delete the CPU manager state file "/data/kubernetes/kubelet/cpu_manager_state" before restarting Kubelet.
Jan 23 10:49:30 sh-saas-k8s1-node-dev-02 kubelet: goroutine 1 [running]:

这个是由于kubelet有个state文件,按照上面的找到那个文件,手动把状态改成static即可

重新启动kubelet,将需要高性能的应用的limit和request设置成一样,且cpu个数必须为整数个数,这样K8S会将应用自动进行cpu绑定,性能会有一个比较大的提升。


文章名称:K8SCpu-Manager-Policy
转载源于:http://azwzsj.com/article/jeiodj.html