rancher部署gpushare-scheduler-extender

gpushare-scheduler-extender是阿里云在kubernetes平台上开发的针对GPU进行虚拟化的方案,

首先,参考k8s集群中GPU结点的配置_vah101的专栏-CSDN博客,安装k8s-deviece-plugin,并将/etc/docker/daemon.json配置为:

{
    "default-runtime": "nvidia",
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

1. 修个原有集群的kube-scheduler的配置参数

rancher与原生的kubernetes略有不同,

它的kube-scheduler并不是一个可执行程序,而是一个docker镜像。gpushare-scheduler-extender需要将修改kube-scheduler的配置文件,所以就需要首先对rke的配置进行修改,将新增加的配置信息加入到rek的yml中。

在rancher的集群列表中,选择一个集群,点击其右侧按钮对应的“升级”按钮

点击“编辑YAML”按钮,在其中的services之下加入如下内容:

    scheduler:
      extra_args:
        address: 0.0.0.0
        kubeconfig: /etc/kubernetes/ssl/kubecfg-kube-scheduler.yaml
        leader-elect: 'true'
        policy-config-file: /etc/kubernetes/ssl/scheduler-policy-config.json
        profiling: 'false'
        v: '2'

注意,这里的内容可以冲master结点上,docker inspect kube-scheduler找到,在此基础上,加入policy-config-file: /etc/kubernetes/ssl/scheduler-policy-config.json即可

2. 将scheduler-policy-config.json拷贝到/etc/kubernetes/ssl/目录下,在每个master节点上都要执行

cd /etc/kubernetes/ssl/
curl -O https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/config/scheduler-policy-config.json

3. 启动gpushare-schd-extender,

curl -O https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/config/gpushare-schd-extender.yaml
kubectl create -f gpushare-schd-extender.yaml

注意默认的gpushare-schd-extender.yaml配置是不在master节点上启动gpushare-schd-extender的,如果你的GPU恰巧在master结点上,则要将node-role.kubernetes.io/master相关的NoSchedule配置删掉

      nodeSelector:
         node-role.kubernetes.io/master: ""

4. 部署gpushare-device-plugin

注意,如果之前装过nvidia-device-plugin,则要先将其删除掉

kubectl delete ds -n kube-system nvidia-device-plugin-daemonset

之后:

wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-device-plugin/master/device-plugin-rbac.yaml
kubectl create -f device-plugin-rbac.yaml
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-device-plugin/master/device-plugin-ds.yaml
kubectl create -f device-plugin-ds.yaml

5. 为GPU结点打标签

为了将GPU程序调度到带有GPU的服务器,需要给服务打标签gpushare=true

通过命令行的执行方式为:

#kubectl label node <target_node> gpushare=true
#如果我们的GPU服务器主机名为GPU_NODE
kubectl label node GPU_NODE gpushare=true

6. 更新kubectl可执行程序:

cd /usr/bin/
wget https://github.com/AliyunContainerService/gpushare-device-plugin/releases/download/v0.3.0/kubectl-inspect-gpushare
chmod u+x /usr/bin/kubectl-inspect-gpushare

7. 获取示例程序:

wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/samples/1.yaml
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/samples/2.yaml
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/samples/3.yaml
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/samples/4.yaml

根据需要分别使用kubectl create -f 来运行示例

pytorch的实例程序:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pytorch
  labels:
    app: pytorch
spec:
  replicas: 1
  selector: 
    matchLabels:
      app: pytorch
  template: 
    metadata:
      labels:
        app: pytorch
    spec:
      containers:
      - name: pytorch
        image: pytorch/pytorch
        args: [/bin/sh, -c, 'while true ;do   sleep 1000;done']
        resources:
          limits:
            aliyun.com/gpu-mem: 2
        volumeMounts:
        - name: workspace
          mountPath: /workspace        #在docker镜像内的路径 
          readOnly: false                          #读写权限
      volumes:
      - name: workspace
        hostPath:
          path: /var/pytorch          #在宿主机上对应的路径

tensorflow的示例程序:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tensorflow-gpu-jupyter
  labels:
    app: tensorflow-gpu-jupyter
spec:
  replicas: 1
  selector: 
    matchLabels:
      app: tensorflow-gpu-jupyter
  template: 
    metadata:
      labels:
        app: tensorflow-gpu-jupyter
    spec:
      containers:
      - name: tensorflow-gpu-jupyter
        image: tensorflow/tensorflow:latest-gpu-jupyter
        resources:
          limits:
            aliyun.com/gpu-mem: 3
---
apiVersion: v1
kind: Service
metadata:
 name: tensorflow-gpu-jupyter
 labels:
  app: tensorflow-gpu-jupyter
spec:
 type: NodePort
 ports:
 - port: 8888
   targetPort: 8888
   nodePort: 30567
 selector:
  app: tensorflow-gpu-jupyter

Rancher是一个开源的容器管理平台,它提供了丰富的功能来简化和管理容器部署和管理过程。其中一个重要的功能是警报驱动程序(Alerting Drivers),它可以帮助用户及时了解集群和容器的健康状况,并及时采取相应的措施。 Rancher支持多种警报驱动程序,其中之一是sachet配置。Sachet是一个基于Web的错误日志和异常信息聚合工具,它可以将来自不同源的警报信息集中展示,帮助用户更好地监控和分析系统中的问题。 要使用rancher-alerting-drivers-sachet配置,首先需要在Rancher中启用警报驱动程序插件。然后,您需要从Rancher的应用商店中安装rancher-alerting-drivers-sachet插件。安装完成后,您可以在Rancher的Alerting配置页面中配置Sachet。 在Sachet的配置中,您需要提供Sachet的API地址、API密钥等信息。这些信息将用于与Sachet服务器建立连接,将Rancher中的警报数据传输到Sachet中。您还可以选择配置警报的级别、触发条件等。 一旦配置完成,当Rancher中的警报触发时,警报信息将被发送到Sachet中,并在Sachet的控制台中显示出来。您可以通过Sachet的界面查看警报信息、分析问题,并采取相应的措施。 总的来说,rancher-alerting-drivers-sachet配置是在Rancher中启用和配置Sachet作为警报驱动程序的一种方式。它可以帮助用户更好地监控和管理容器集群,及时发现和解决问题,提高系统的稳定性和可靠性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值