安装MPAM插件
安装MPAM插件,首先需要获取MPAM插件的源码并生成镜像文件,然后挂载MPAM特性到物理机上,最后运行MPAM插件。若无特殊说明,则以下操作均在master节点完成。
- 获取源码。
git clone --branch v1.00-RC2 https://gitee.com/kunpeng_compute/kunpeng-cloud-computing.git
- 可选:指定镜像文件的名称和版本。镜像文件的版本默认为0.1,镜像文件的名称和版本可以在Makefile中指定。
- 打开文件。
cd kunpeng-cloud-computing/Boostkit_CloudNative/K8S/k8s-mpam-controller vi Makefile
- 按“i”进入编辑模式,指定镜像文件的名称和版本。如下图所示,在Makefile中指定镜像文件的名称为k8s_mpam_controller,指定镜像的版本为0.1。
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开文件。
- 进入MPAM插件目录,生成镜像文件“k8s-mpam-controller:0.1”。
cd kunpeng-cloud-computing/Boostkit_CloudNative/K8S make docker
- 可选:查看生成的镜像文件。
docker images | grep k8s-mpam-controller
可能的回显结果如下。
REPOSITORY TAG IMAGE ID CREATED SIZE k8s-mpam-controller 0.1 9f363522bbc9 42 hours ago 259MB
- 在worker节点的物理机上挂载MPAM特性。
mount -t resctrl resctrl /sys/fs/resctrl
挂载时可以选择不同的参数,参数包括:caPbm、mbMax、mbMin、mbHdl。默认情况下,L3 Cache选择cpbm控制方式(即默认选择caPbm),内存带宽选择Max控制方式(即默认选择mbMax),默认不挂载mbMin,默认开启hardlimit(即默认选择mbHdl)。
例如,挂载MPAM特性时选择caPbm。
mount -t resctrl resctrl /sys/fs/resctrl -o caPbm
- 进入samples目录,配置k8s-mpam-controller.yaml文件。
k8s-mpam-controller.yaml文件是用于启动MPAM插件的配置文件,文件中创建了一个名为mpam-controller-agent的ServiceAccount,并赋予其访问资源的权限,用于插件运行过程中访问kube-apiserver。此外,该文件会以DaemonSet的形式将MPAM插件部署在集群中的每一个Node节点上,从而使能MPAM特性。
- 打开MPAM插件配置文件。
cd k8s-mpam-controller-config/samples vi k8s-mpam-controller.yaml
- 按“i”进入编辑模式,将文件中的image: k8s-mpam-controller:0.1修改为2中设置的镜像文件名称和版本。k8s-mpam-controller.yaml的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
apiVersion: v1 kind: ServiceAccount metadata: name: mpam-controller-agent --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: mpam-controller-agent rules: - apiGroups: - "" resources: - configmaps - pods verbs: - get - list - watch - apiGroups: - "" resources: - nodes verbs: - get - list - patch - update - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: mpam-controller-agent roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: mpam-controller-agent subjects: - kind: ServiceAccount name: mpam-controller-agent namespace: default --- apiVersion: apps/v1 kind: DaemonSet metadata: name: mpam-controller-daemonset-agent spec: selector: matchLabels: app: k8s-mpam-controller-agent template: metadata: labels: app: k8s-mpam-controller-agent spec: serviceAccountName: mpam-controller-agent hostPID: true hostIPC: true containers: - name: k8s-mpam-controller-agent image: k8s-mpam-controller:0.1 imagePullPolicy: IfNotPresent securityContext: privileged: true command: ["/usr/bin/agent"] args: ["-direct"] env: - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName volumeMounts: - name: resctrl mountPath: /sys/fs/resctrl/ - name: hostname mountPath: /etc/hostname - name: sysfs mountPath: /sys/fs/cgroup/ volumes: - name: resctrl hostPath: path: /sys/fs/resctrl/ - name: hostname hostPath: path: /etc/hostname - name: sysfs hostPath: path: /sys/fs/cgroup/
- 按“Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
- 打开MPAM插件配置文件。
- 应用k8s-mpam-controller.yaml文件以运行MPAM插件。
kubectl apply -f k8s-mpam-controller.yaml
应用k8s-mpam-controller.yaml文件后,K8s会在每个Node节点上创建一个Pod运行MPAM插件,节点上可创建Pod的数量也会相应地减少一个。
- 查看MPAM插件对应的Pod是否正常运行。
kubectl get pods
正常运行的回显如下。
NAME READY STATUS RESTARTS AGE mpam-controller-daemonset-agent-bj2gv 1/1 Running 0 143m
- 查看MPAM插件运行的日志。在本例中,xxx指MPAM插件对应的Pod名。
kubectl logs -f xxx
父主题: 虚拟化MPAM插件 用户指南