鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

安装MPAM插件

安装MPAM插件,首先需要获取MPAM插件的源码并生成镜像文件,然后挂载MPAM特性到物理机上,最后运行MPAM插件。若无特殊说明,则以下操作均在master节点完成。

  1. 获取源码。
    git clone --branch v1.00-RC2 https://gitee.com/kunpeng_compute/kunpeng-cloud-computing.git
  2. 可选:指定镜像文件的名称和版本。镜像文件的版本默认为0.1,镜像文件的名称和版本可以在Makefile中指定。
    1. 打开文件。
      cd kunpeng-cloud-computing/Boostkit_CloudNative/K8S/k8s-mpam-controller
      vi Makefile
    2. “i”进入编辑模式,指定镜像文件的名称和版本。如下图所示,在Makefile中指定镜像文件的名称为k8s_mpam_controller,指定镜像的版本为0.1

    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
  3. 进入MPAM插件目录,生成镜像文件“k8s-mpam-controller:0.1”。
    cd kunpeng-cloud-computing/Boostkit_CloudNative/K8S
    make docker
  4. 可选:查看生成的镜像文件。
    docker images | grep k8s-mpam-controller

    可能的回显结果如下。

    REPOSITORY                          TAG               IMAGE ID       CREATED         SIZE
    k8s-mpam-controller                 0.1               9f363522bbc9   42 hours ago    259MB
  5. 在worker节点的物理机上挂载MPAM特性。
    mount -t resctrl resctrl /sys/fs/resctrl

    挂载时可以选择不同的参数,参数包括:caPbmmbMaxmbMinmbHdl。默认情况下,L3 Cache选择cpbm控制方式(即默认选择caPbm),内存带宽选择Max控制方式(即默认选择mbMax),默认不挂载mbMin,默认开启hardlimit(即默认选择mbHdl)。

    例如,挂载MPAM特性时选择caPbm

    mount -t resctrl resctrl /sys/fs/resctrl -o caPbm
  6. 进入samples目录,配置k8s-mpam-controller.yaml文件。

    k8s-mpam-controller.yaml文件是用于启动MPAM插件的配置文件,文件中创建了一个名为mpam-controller-agent的ServiceAccount,并赋予其访问资源的权限,用于插件运行过程中访问kube-apiserver。此外,该文件会以DaemonSet的形式将MPAM插件部署在集群中的每一个Node节点上,从而使能MPAM特性。

    1. 打开MPAM插件配置文件。
      cd k8s-mpam-controller-config/samples
      vi k8s-mpam-controller.yaml
    2. “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/
      
    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存并退出文件。
  7. 应用k8s-mpam-controller.yaml文件以运行MPAM插件。
    kubectl apply -f k8s-mpam-controller.yaml

    应用k8s-mpam-controller.yaml文件后,K8s会在每个Node节点上创建一个Pod运行MPAM插件,节点上可创建Pod的数量也会相应地减少一个。

  8. 查看MPAM插件对应的Pod是否正常运行。
    kubectl get pods

    正常运行的回显如下。

    NAME                                    READY   STATUS    RESTARTS   AGE
    mpam-controller-daemonset-agent-bj2gv   1/1     Running   0          143m
  9. 查看MPAM插件运行的日志。在本例中,xxx指MPAM插件对应的Pod名。
    kubectl logs -f xxx