Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • kubernetes

    • Kubernetes 学习笔记
      • 集群搭建

        • 使用 ansible 快速搭建 k8s 集群
        • 常见应用安装配置

          • Harbor 安装配置(k8s)
            • Harbor 高可用搭建(docker-compose)
              • Rancher 安装配置
                • Helm 安装配置
                • 容器运行时

                  • k8s 适配 GPU
                    • Kata2 尝试
                    • 存储

                      • Longorn 安装配置
                        • 使用 Rook 快速搭建 Ceph 集群
                        • 服务发现与路由

                          • ingress-nginx 安装配置
                          • 集群网络

                            • CNI
                              • Calico
                              • 监控告警

                                • Prometheus Operator 安装配置
                                • 实用技巧

                                  • 运维手册

                                    • etcd 备份恢复
                                      • velero 备份恢复
                                        • k8s 开启审计日志
                                          • 内核版本升级
                                            • 使用 kubeadm 手动更新证书
                                              • 为 k8s node 配置资源预留
                                                • 利用LXCFS提升容器资源可见性
                                                • 最佳实践

                                                  • k8s node 配置资源预留
                                                    • 性能压测指标及方法
                                                      • CPU 绑核
                                                        • 内核启动 NUMA
                                                          • k8s 绑核配置步骤
                                                            • 验证 pod 是否绑核成功
                                                          • 集群排障

                                                            • 如何更新Terminating状态的命名空间
                                                              • 卸载 rancher 导致 node 被清空
                                                                • lvs 健康检查 k8s apiserver
                                                                  • k8s 更改apiserver使用强加密算法
                                                                  • 教程|项目|博客|文章推荐
                                                                    • 附录

                                                                      • 快捷命令

                                                                    CPU 绑核

                                                                    author iconClaycalendar icon2022年10月22日category icon
                                                                    • 云原生
                                                                    tag icon
                                                                    • Kubernetes
                                                                    timer icon大约 1 分钟

                                                                    此页内容
                                                                    • 内核启动 NUMA
                                                                    • k8s 绑核配置步骤
                                                                    • 验证 pod 是否绑核成功

                                                                    # CPU 绑核

                                                                    背景:算法集群,跑的应用为CPU 密集型应用,k8s 原来的 CPU调度算法为 CFS(基于时间片的),会产生限流,从而影响性能,影响 响应时间,所有改为 CPU 绑核

                                                                    # 内核启动 NUMA

                                                                    修改 /etc/default/grub 中numa=off 改为numa=on

                                                                    重新生成grub.cfg

                                                                    grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
                                                                    
                                                                    1

                                                                    重启检验

                                                                    shutdown -r now
                                                                    lscpu | grep NUMA
                                                                    
                                                                    1
                                                                    2

                                                                    # k8s 绑核配置步骤

                                                                    前提条件

                                                                    • k8s 1.18 版本以上

                                                                    1) 修改 kubelet 配置文件(Node 节点)

                                                                    vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf,修改前后对比

                                                                    9a10,11
                                                                    > ExecStartPre=/usr/bin/mkdir -p /sys/fs/cgroup/cpuset/system.slice/kubelet.service
                                                                    > ExecStartPre=/usr/bin/mkdir -p /sys/fs/cgroup/hugetlb/system.slice/kubelet.service
                                                                    11c13,14
                                                                    < ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
                                                                    ---
                                                                    > #ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS
                                                                    > ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --kube-reserved=cpu=2,memory=250Mi --cpu-manager-policy=static --feature-gates=CPUManager=true --topology-manager-policy=single-numa-node
                                                                    
                                                                    1
                                                                    2
                                                                    3
                                                                    4
                                                                    5
                                                                    6
                                                                    7
                                                                    8

                                                                    2)删除旧的 CPU 管理器状态文件

                                                                    rm -f /var/lib/kubelet/cpu_manager_state
                                                                    
                                                                    1

                                                                    3)重启 kubelet

                                                                    systemctl daemon-reload
                                                                    systemctl restart kubelet
                                                                    
                                                                    1
                                                                    2

                                                                    # 验证 pod 是否绑核成功

                                                                    1)将 工作负载 设置为 Guaranteed Pod, 即 设置limit 和 request ,并相等,CPU 为整数

                                                                    2)验证

                                                                    docker inspect xxx | grep Cpuset
                                                                    
                                                                    1

                                                                    参考链接:

                                                                    • 鲲鹏Kubernetes平台如何使用CPU Manager + Topology Manager达成最佳绑核实例open in new window
                                                                    • CPU 绑核open in new window
                                                                    edit icon编辑此页open in new window
                                                                    上次编辑于: 2022/10/22 05:03:44
                                                                    贡献者: clay-wangzhi
                                                                    上一页
                                                                    性能压测指标及方法
                                                                    备案号:冀ICP备2021007336号
                                                                    Copyright © 2023 Clay