From 3de6ad16b14ef8429f72eea1872e4de9498bab3e Mon Sep 17 00:00:00 2001 From: Zhiyuan He <362583303@qq.com> Date: Tue, 22 Sep 2020 10:19:31 +0800 Subject: [PATCH] Fix document using DRI tickets (#4828) * fix * fix * fix * typo * fix * fix * fix --- docs/manual/cluster-admin/README.md | 7 +- .../alerting-and-troubleshooting.md | 153 +++++++++++++++++ .../how-to-add-and-remove-nodes.md | 6 +- .../cluster-admin/how-to-set-up-storage.md | 154 +++++++++++++++++- .../how-to-set-up-virtual-clusters.md | 126 +++++++++++++- .../cluster-admin/imgs/alert-on-webportal.png | Bin 0 -> 147948 bytes .../installation-faqs-and-troubleshooting.md | 20 +++ .../cluster-admin/installation-guide.md | 61 +++---- .../cluster-admin/recommended-practice.md | 53 ++++++ docs/manual/cluster-admin/troubleshooting.md | 26 --- docs/manual/cluster-user/README.md | 1 + .../frequently-asked-questions.md | 7 + mkdocs.yml | 4 +- 13 files changed, 554 insertions(+), 64 deletions(-) create mode 100644 docs/manual/cluster-admin/alerting-and-troubleshooting.md create mode 100644 docs/manual/cluster-admin/imgs/alert-on-webportal.png create mode 100644 docs/manual/cluster-admin/recommended-practice.md delete mode 100644 docs/manual/cluster-admin/troubleshooting.md create mode 100644 docs/manual/cluster-user/frequently-asked-questions.md diff --git a/docs/manual/cluster-admin/README.md b/docs/manual/cluster-admin/README.md index 5704d774d9..cc15789439 100644 --- a/docs/manual/cluster-admin/README.md +++ b/docs/manual/cluster-admin/README.md @@ -14,6 +14,7 @@ This manual is for cluster administrators to learn the installation and uninstal 6. [How to Set Up Virtual Clusters](./how-to-set-up-virtual-clusters.md) 7. [How to Add and Remove Nodes](./how-to-add-and-remove-nodes.md) 8. [How to Customize Cluster by Plugins](./how-to-customize-cluster-by-plugins.md) -9. [Troubleshooting](./troubleshooting.md) -10. [How to Uninstall OpenPAI](./how-to-uninstall-openpai.md) -11. [Upgrade Guide](./upgrade-guide.md) \ No newline at end of file +9. [Alerting-and-Troubleshooting](./alerting-and-troubleshooting.md) +10. [Recommended Practice](./recommended-practice.md) +11. [How to Uninstall OpenPAI](./how-to-uninstall-openpai.md) +12. [Upgrade Guide](./upgrade-guide.md) \ No newline at end of file diff --git a/docs/manual/cluster-admin/alerting-and-troubleshooting.md b/docs/manual/cluster-admin/alerting-and-troubleshooting.md new file mode 100644 index 0000000000..f53961d4ca --- /dev/null +++ b/docs/manual/cluster-admin/alerting-and-troubleshooting.md @@ -0,0 +1,153 @@ +# Alerting and Troubleshooting + +OpenPAI uses [Prometheus](https://prometheus.io/) to monitor the system. You can view the monitoring information [on webportal](./basic-management-operations.md#management-on-webportal). For alerting, OpenPAI uses [alert manager](https://prometheus.io/docs/alerting/latest/alertmanager/), but it is not set up in default installation. This document describes how to set up alert manager, and how to deal with some common alerts. It also includes some other troubleshooting cases in practice. + +## Set Up Alert Manager + +OpenPAI's alert manager is set to send alerting e-mails when alert happens. To begin with, you should get an SMTP account to send these e-mails. + +After getting an SMTP account, how to set up the alert manager in PAI? Please read the document about [service management and paictl](./basic-management-operations.md#pai-service-management-and-paictl) first, and start a dev box container. Then, in the dev box container, pull the configuration by: + +```bash +./paictl config pull -o /cluster-configuration +``` + +Uncomment the alert manager section in `/cluster-configuration/services-configuration.yaml`, and set your SMTP account and the receiver's e-mail address. Here is an example: + +```bash +alert-manager: + port: 9093 + receiver: + smtp_auth_password: + smtp_auth_username: + smtp_from: + smtp_url: : +``` + +Configuration `port` stands for the port of alert manager. In most cases, you don't need to change it. Configuration `receiver` is usually set to be the administrator's e-mail address to receive alerting e-mails. + +Save the configuration file, and start alert manager by: + +```bash +./paictl.py service stop -n alert-manager +./paictl.py config push -p /cluster-configuration -m service +./paictl.py service start -n alert-manager +``` + +After alert manager is successfully started, the receiver's e-mail address will receive alerting e-mails from the SMTP account. Also, you can view the alerting information on Webportal (in the top-right corner): + + + + +## Troubleshooting + +### PaiServicePodNotReady Alert + +This is a kind of alert from alert manager, and usually caused by container being killed by operator or OOM killer. To check if it was killed by OOM killer, you can check node's free memory via Prometheus: + + 1. visit Prometheus web page, it is usually `http://:9091`. + 2. Enter query `node_memory_MemFree_bytes`. + 3. If free memory drop to near 0, the container should be killed by OOM killer + 4. You can double check this by logging into node and run command `dmesg` and looking for phase `oom`. Or you can run `docker inspect ` to get more detailed information. + +Solutions: + + 1. Force remove unhealth containers with this command in terminal: + `kubectl delete pod pod-name --grace-period=0 --force` + 2. Recreate pod in Kubernetes, this operation may block indefinitely because dockerd may not functioning correctly after OOM. If recreate blocked too long, you can log into the node and restart dockerd via `/etc/init.d/docker restart`. + 3. If restarting doesn't solve it, you can consider increase the pod's memory limit. + +### NodeNotReady Alert + +This is a kind of alert from alert manager, and is reported by watchdog service. Watchdog gets such metrics from Kubernetes API. Example metrics is like: + +``` +pai_node_count{disk_pressure="false",instance="10.0.0.1:9101",job="pai_serivce_exporter",memory_pressure="false",name="10.0.0.2",out_of_disk="false",pai_service_name="watchdog",ready="true",scraped_from="watchdog-5ddd945975-kwhpr"} +``` + +The name label indicate what node this metric represents. + +If the node's ready label has value "unknown", this means the node may disconnect from Kubernetes master, this may due to several reasons: + + - Node is down + - Kubelet is down + - Network partition between node and Kubernetes master + +You can first try to log into the node. If you can not, and have no ping response, the node may be down, and you should boot it up. + +If you can log in to the node, you should check if the kubelet is up and running, execute `sudo systemctl status kubelet` command in the node, normally you can see the kubelet service. + +After this step, you should check the log of kubelet, to see if it can access Kubernetes API. If you see something like: + +``` + E0410 04:24:30.663050 2491 kubelet_node_status.go:386] Error updating node status, will retry: error getting node "10.0.0.1": Get http://10.0.1.2:8080/api/v1/nodes/10.0.0.1: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) +``` + +This means the node can not report its status to Kubernetes, and hence the Kubernetes will post unknown status, and this triggered the alert. + +You should check what caused this connectivity problem. + +### NodeFilesystemUsage Alert + +This is a kind of alert from alert manager, and is used to monitor disk space of each server. If usage of disk space is greater than 80%, this alert will be triggered. OpenPAI has two services may use a lot of disk space. They are storage manager and docker image cache. If there is other usage of OpenPAI servers, they should be checked to avoid the disk usage is caused by outside of OpenPAI. + +Solutions: + + 1. Check user file on the NFS storage server launched by storage manager. If you didn't set up a storage manager, ignore this step. + 2. Check the docker cache. The docker may use too many disk space for caching, it's worth to have a check. + 3. Check PAI log folder size. The path is `/var/log/pai`. + +### NVIDIA GPU is Not Detected + +If you cannot use GPU in your job, please check the following items on the corresponding worker node: + + 1. The NVIDIA drivers should be installed correctly. Use `nvidia-smi` to confirm. + 2. [nvidia-container-runtime](https://github.com/NVIDIA/nvidia-container-runtime) is installed, and configured as the default runtime of docker. Use `docker info -f "{{json .DefaultRuntime}}"` to confirm. + +If the GPU number shown in webportal is wrong, check the [hivedscheduler and VC configuration](./how-to-set-up-virtual-clusters.md). + +### Cannot See Utilization Information. + +If you cannot see utilization information (e.g. GPU, CPU, and network usage) in cluster, please check if the service `prometheus`, `grafana`, `job-exporter`, and `node-exporter` are working. + +To be detailed, you can [exec into a dev box container](./basic-management-operations.md#pai-service-management-and-paictl), then check the service status by `kubectl get pod`. You can see the pod log by `kubectl logs `. After you fix the problem, you can [restart the whole cluster using paictl](./basic-management-operations.md#pai-service-management-and-paictl). + + +### Node is De-allocated and doesn't Appear in Kubernetes System when it Comes Back + +Working nodes can be de-allocated if you are using a cloud service and set up PAI on low-priority machines. Usually, if the node is lost temporarily, you can wait until the node comes back. It doesn't need any special care. + +However, some cloud service providers not only de-allocate nodes, but also remove all disk contents on the certain nodes. Thus the node cannot connect to Kubernetes automatically when it comes back. If it is your case, we recommend you to set up a crontab job on the dev box node to bring back these nodes periodically. + +In [How to Add and Remove Nodes](how-to-add-and-remove-nodes.md), we have described how to add a node. The crontab job doesn't need to do all of these things. It only needs to add the node to the Kubernetes. It figures out which nodes have come back but are still considered `NotReady` in Kubernetes, then, run the following command to bring it back: + +```bash +ansible-playbook -i inventory/mycluster/hosts.yml upgrade-cluster.yml --become --become-user=root --limit=${limit_list} -e "@inventory/mycluster/openpai.yml" +``` + +`${limit_list}` stands for the names of these de-allocated nodes. For example, if the crontab job finds node `a` and node `b` are available now, but they are still in `NotReady` status in Kuberentes, then it can set `limit_list=a,b`. + +### How to Enlarge Internal Storage Size + +Currently, OpenPAI uses [internal storage](https://github.com/microsoft/pai/tree/master/src/internal-storage) to hold database. Internal storage is a limited size storage. It leverages loop device in Linux to provide a storage with strictly limited quota. The default quota is 30 GB (or 10GB for OpenPAI <= `v1.1.0`), which can hold about 1,000,000 jobs. If you want a larger space to hold more jobs, please follow these steps to enlarge the internal storage: + +Step 1. [Exec into a dev box container.](./basic-management-operations.md#pai-service-management-and-paictl) + +Step 2. In the dev box container, stop all PAI services by `./paictl.py service stop`. + +Step 3. Log in to the master node. Find the internal storage folder (Default path is `/mnt/paiInternal`). Move it to another place like: `sudo mv /mnt/paiInternal /mnt/paiInternalBak` + +Step 4. Update the internal storage config in the `services-configuration.yaml`. For example, set the quota to 100 GB: +``` +internal-storage: + quota-gb: 100 +``` +If there is no `internal-storage` section in the file, you can add it manually. + +Update it by `./paictl.py config push -p -m service` + +Step 5. In the dev box container, start the internal storage service by `./paictl.py service start -n internal-storage` + +Step 6. After the internal storage service is ready, there will be a new `/mnt/paiInternal` in the master node. Move the previous data to it. Currently, we only need to move the `pgdata` folder: `sudo mv /mnt/paiInternalBak/pgdata /mnt/paiInternal/`. + +Step 7. In the dev box container, start all PAI services by `./paictl.py service start`. diff --git a/docs/manual/cluster-admin/how-to-add-and-remove-nodes.md b/docs/manual/cluster-admin/how-to-add-and-remove-nodes.md index d8380132ea..fd05e3e6bb 100644 --- a/docs/manual/cluster-admin/how-to-add-and-remove-nodes.md +++ b/docs/manual/cluster-admin/how-to-add-and-remove-nodes.md @@ -24,9 +24,9 @@ Log in to your dev box machine, find [the pre-kept folder `~/pai-deploy`](./inst ### Add the Nodes into Kubernetes -Find the file `~/pai-deploy/kubespray/inventory/pai/host.yml`, and follow the steps below to modify it. +Find the file `~/pai-deploy/kubespray/inventory/pai/hosts.yml`, and follow the steps below to modify it. -Supposing you want to add 2 worker nodes into your cluster and their hostnames are `a` and `b`. Add these 2 nodes into the `host.yml`. An example: +Supposing you want to add 2 worker nodes into your cluster and their hostnames are `a` and `b`. Add these 2 nodes into the `hosts.yml`. An example: ```yaml all: @@ -155,7 +155,7 @@ If you have configured any PV/PVC storage, please confirm the added worker node Please refer to the operation of add nodes. They are very similar. -First, modify `host.yml` accordingly, then go into `~/pai-deploy/kubespray/`, run +First, modify `hosts.yml` accordingly, then go into `~/pai-deploy/kubespray/`, run ```bash ansible-playbook -i inventory/mycluster/hosts.yml upgrade-cluster.yml --become --become-user=root --limit=a,b -e "@inventory/mycluster/openpai.yml" diff --git a/docs/manual/cluster-admin/how-to-set-up-storage.md b/docs/manual/cluster-admin/how-to-set-up-storage.md index 58891c4d67..d6011cb66f 100644 --- a/docs/manual/cluster-admin/how-to-set-up-storage.md +++ b/docs/manual/cluster-admin/how-to-set-up-storage.md @@ -238,4 +238,156 @@ The GET request must use header `Authorization: Bearer ` for authorizatio } ``` -Do not omit any fields in `extension` or it will change the `virtualClusters` setting unexpectedly. \ No newline at end of file +Do not omit any fields in `extension` or it will change the `virtualClusters` setting unexpectedly. + +## Example: Use Storage Manager to Create an NFS + SAMBA Server + +To help you set up the storage, OpenPAI provides a storage manager, which can set up an NFS + SAMBA server. In the cluster, the NFS storage can be accessed in OpenPAI containers. Out of the cluster, users can mount the storage on Unix-like system, or access it in File Explorer on Windows. + +Please read the document about [service management and paictl](./basic-management-operations.md#pai-service-management-and-paictl) first, and start a dev box container. Then, in the dev box container, pull the configuration by: + +```bash +./paictl config pull -o /cluster-configuration +``` + +To use storage manager, you should first decide a machine in PAI system to be the storage server. The machine **must** be one of PAI workers, not PAI master. Please open `/cluster-configuration/layout.yaml`, choose a worker machine, then add a `pai-storage: "true"` field to it. Here is an example of the edited `layout.yaml`: + +```yaml +...... + +- hostname: worker1 + nodename: worker1 + hostip: 10.0.0.1 + machine-type: GENERIC-WORKER + pai-worker: "true" + pai-storage: "true" # this line is newly added + +...... +``` + +In this tutorial, we assume you choose the machine with IP `10.0.0.1` as the storage server. Then, in `/cluster-configuration/services-configuration.yaml`, find the storage manager section: + +```yaml +# storage-manager: +# localpath: /share +# security-type: AUTO +# workgroup: WORKGROUP +# smbuser: smbuser +# smbpwd: smbpwd +``` + +Uncomment it like: + +```yaml +storage-manager: + localpath: /share +# security-type: AUTO +# workgroup: WORKGROUP + smbuser: smbuser + smbpwd: smbpwd +``` + +The `localpath` determines the root data dir for NFS on the storage server. The `smbuser` and `smbpwd` determines the username and password when you access the storage in File Explorer on Windows. + +Follow these commands to start the storage manager: + +```bash +./paictl.py service stop -n cluster-configuration storage-manager +./paictl.py config push -p /cluster-configuration -m service +./paictl.py service start -n cluster-configuration storage-manager +``` + +If the storage manager is successfully started, you will find the folder `/share/data` and `/share/users` on the storage server. On a Ubuntu machine, you can use the following command to test whether the NFS server is correctly set up: + +```bash +# replace 10.0.0.1 with your storage server IP +sudo apt update +sudo apt install nfs-common +mkmdir -p /mnt/data +sudo mount -t nfs --options nfsvers=4.1 10.0.0.1:/data/ /mnt/data +``` + +To make the NFS storage available in PAI, we should create the PV and PVC for it. Thus, create the following `nfs-storage.yaml` file in the dev box container first: + +```yaml +# replace 10.0.0.1 with your storage server IP +# NFS Persistent Volume +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nfs-storage-pv + labels: + name: nfs-storage +spec: + capacity: + storage: 10Gi + volumeMode: Filesystem + accessModes: + - ReadWriteMany + persistentVolumeReclaimPolicy: Retain + mountOptions: + - nfsvers=4.1 + nfs: + path: /data + server: 10.0.0.1 +--- +# NFS Persistent Volume Claim +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nfs-storage +# labels: +# share: "false" # to mount sub path on PAI +spec: + accessModes: + - ReadWriteMany + volumeMode: Filesystem + resources: + requests: + storage: 10Gi # no more than PV capacity + selector: + matchLabels: + name: nfs-storage # corresponding to PV label +``` + +Use `kubectl create -f nfs-storage.yaml` to create the PV and PVC. + +Since the Kuberentes PV requires the node using it has the corresponding driver, we should use `apt install nfs-common` to install the `nfs-common` package on every worker node. + +Finally, [assign storage to PAI groups](#assign-storage-to-pai-groups) by rest-server API. Then you can mount it into job containers. + +How to upload data to the storage server? On Windows, open the File Explorer, type in `\\10.0.0.1` (please change `10.0.0.1` to your storage server IP), and press ENTER. The File Explorer will ask you for authorization. Please use `smbuser` and `smbpwd` as username and password to login. On a Unix-like system, you can mount the NFS folder to the file system. For example, on Ubuntu, use the following command to mount it: + +```bash +# replace 10.0.0.1 with your storage server IP +sudo apt update +sudo apt install nfs-common +mkmdir -p /mnt/data +sudo mount -t nfs --options nfsvers=4.1 10.0.0.1:/data/ /mnt/data +``` + +The above steps only set up a basic SAMBA server. So each user shares the same username and password to access it on Windows. If your cluster is in [AAD mode](./how-to-manage-users-and-groups.md#users-and-groups-in-aad-mode), and you want to integrate the SAMBA server with the AAD system, please refer to the following configuration for storage manager: + +```yaml +storage-manager: + workgroup: # workgroup + security-type: ADS + default_realm: # default realm + krb5_realms: # realms + XXX1: # relam name + kdc: # kdc + default_domain: # default domain + XXX2: # relam name + kdc: # kdc + default_domain: # default domain + domain_realm: # domain realm + kdc: # kdc + default_domain: # default domain + domainuser: # domain user + domainpwd: # password of domain user + idmap: # idmap + - "idmap config XXX1" + - "idmap config XXX2" + - "idmap config XXX3" + - "idmap config XXX4" +``` diff --git a/docs/manual/cluster-admin/how-to-set-up-virtual-clusters.md b/docs/manual/cluster-admin/how-to-set-up-virtual-clusters.md index 2304e92c08..6fdcdd2280 100644 --- a/docs/manual/cluster-admin/how-to-set-up-virtual-clusters.md +++ b/docs/manual/cluster-admin/how-to-set-up-virtual-clusters.md @@ -251,4 +251,128 @@ hivedscheduler: cellNumber: 3 ``` -In the above example, we set up 2 VCs: `default` and `v100`. The `default` VC has 2 K80 nodes, and `V100` VC has 3 V100 nodes. Every K80 node has 4 K80 GPUs and Every V100 nodes has 4 V100 GPUs. \ No newline at end of file +In the above example, we set up 2 VCs: `default` and `v100`. The `default` VC has 2 K80 nodes, and `V100` VC has 3 V100 nodes. Every K80 node has 4 K80 GPUs and Every V100 nodes has 4 V100 GPUs. + +## Use Pinned Cell to Reserve Certain Node in a Virtual Cluster + +In some cases, you might want to reserve a certain node in a virtual cluster, and submit job to this node explicitly for debugging or quick testing. OpenPAI provides you with a way to "pin" a node to a virtual cluster. + +For example, assuming you have three worker nodes: `worker1`, `worker2`, and `worker3`, and 2 virtual clusters: `default` and `new`. The `default` VC has 2 workers, and `new` VC only has one worker. The following is an example for the configuration: + +```yaml +# services-configuration.yaml +... +hivedscheduler: + config: | + physicalCluster: + skuTypes: + DT: + gpu: 1 + cpu: 5 + memory: 56334Mi + cellTypes: + DT-NODE: + childCellType: DT + childCellNumber: 4 + isNodeLevel: true + DT-NODE-POOL: + childCellType: DT-NODE + childCellNumber: 3 + physicalCells: + - cellType: DT-NODE-POOL + cellChildren: + - cellAddress: worker1 + - cellAddress: worker2 + - cellAddress: worker3 + virtualClusters: + default: + virtualCells: + - cellType: DT-NODE-POOL.DT-NODE + cellNumber: 2 + new: + virtualCells: + - cellType: DT-NODE-POOL.DT-NODE + cellNumber: 1 +... +``` + +Now, if you want to "pin" the node `worker2` to the default VC. You can edit the configuration to be: + +```yaml +# services-configuration.yaml +... +hivedscheduler: + config: | + physicalCluster: + skuTypes: + DT: + gpu: 1 + cpu: 5 + memory: 56334Mi + cellTypes: + DT-NODE: + childCellType: DT + childCellNumber: 4 + isNodeLevel: true + DT-NODE-POOL: + childCellType: DT-NODE + childCellNumber: 3 + physicalCells: + - cellType: DT-NODE-POOL + cellChildren: + - cellAddress: worker1 + - cellAddress: worker2 + pinnedCellId: node-worker2 + - cellAddress: worker3 + virtualClusters: + default: + virtualCells: + - cellType: DT-NODE-POOL.DT-NODE + cellNumber: 1 + pinnedCells: + - pinnedCellId: node-worker2 + new: + virtualCells: + - cellType: DT-NODE-POOL.DT-NODE + cellNumber: 1 +... +``` + +As you can see in the configuration, one virtual cluster can contain both virtual cells and pinned cells. Now the `default` VC has one virtual cell and one pinned cell. To include a pinned cell into the virtual cluster, you should give it a `pinnedCellId`. + +The configuration will reserve `worker2` in the `default` VC. You can also submit jobs to `worker2` explicitly by specifying corresponding pinned cell id in `extras.hivedScheduler.taskRoles..pinnedCellId`, here is an example: + +```yaml +protocolVersion: 2 +name: job-with-pinned-cell +type: job +jobRetryCount: 0 +prerequisites: + - type: dockerimage + uri: 'openpai/standard:python_3.6-pytorch_1.2.0-gpu' + name: docker_image_0 +taskRoles: + myworker: + instances: 1 + completion: + minFailedInstances: 1 + taskRetryCount: 0 + dockerImage: docker_image_0 + resourcePerInstance: + gpu: 1 + cpu: 4 + memoryMB: 8192 + commands: + - sleep 100s +defaults: + virtualCluster: default +extras: + com.microsoft.pai.runtimeplugin: + - plugin: ssh + parameters: + jobssh: true + hivedScheduler: + taskRoles: + myworker: + pinnedCellId: node-worker2 +``` \ No newline at end of file diff --git a/docs/manual/cluster-admin/imgs/alert-on-webportal.png b/docs/manual/cluster-admin/imgs/alert-on-webportal.png new file mode 100644 index 0000000000000000000000000000000000000000..252aac0f98e3e7a2e271723afa612cff808a7f6f GIT binary patch literal 147948 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­`M*oo0?8aPeXnVwI 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 f50p9o)+2a#-RDe?zo4LCyQ0{LlXaI5Qyu literal 0 HcmV?d00001 diff --git a/docs/manual/cluster-admin/installation-faqs-and-troubleshooting.md b/docs/manual/cluster-admin/installation-faqs-and-troubleshooting.md index baf2444bc2..f88cd95115 100644 --- a/docs/manual/cluster-admin/installation-faqs-and-troubleshooting.md +++ b/docs/manual/cluster-admin/installation-faqs-and-troubleshooting.md @@ -115,6 +115,26 @@ Please refer to the [official document](https://github.com/NVIDIA/nvidia-contain ## Troubleshooting +#### Command `Apt install ` fails in the script. + +Please first check if there is any network-related issues. Besides network, another reason for this problem is: `ansible` sometimes runs a `apt update` to update the cache before the package installation. If `apt update` exits with a non-zero code, the whole command will be considered to be failed. + +You can check this by running `sudo apt update; echo $?` on the corresponding machine. If the exit code is not 0, please fix it. Here are 2 normal causes of this problem: + +If you find `sudo apt update` reports `the following signatures couldn’t be verified because the public key is not available`, you can use the following commands to fix it. Please replace `` with yours. + +```bash +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys +sudo apt update +``` + +If you find `sudo apt update` reports some expired repo lists, you can use the following commands to fix it. Please replace `` with yours. + +```bash +sudo rm -rf /etc/apt/sources.list.d/ +sudo apt update +``` + #### Ansible playbook exits because of timeout. Sometimes, if you assign a different hostname for a certain machine, any commands with `sudo` will be very slow on that machine. Because the system DNS try to find the new hostname, but it will fail due to a timeout. diff --git a/docs/manual/cluster-admin/installation-guide.md b/docs/manual/cluster-admin/installation-guide.md index 207cc89639..39fbe9cbb3 100644 --- a/docs/manual/cluster-admin/installation-guide.md +++ b/docs/manual/cluster-admin/installation-guide.md @@ -8,45 +8,48 @@ To install OpenPAI >= `v1.0.0`, please first check [Installation Requirements](# The deployment of OpenPAI requires you to have at least 3 separate machines: one dev box machine, one master machine, and one worker machine. -Dev box machine controls masters and workers through SSH during installation, maintenance, and uninstallation. There should be one, and only one dev box. Master machine is used to run core Kubernetes components and core OpenPAI services. In most cases, one master machine is enough. You may set multiple masters if you want the cluster to be highly-available. We recommend you to use CPU-only machines for dev box and master. For worker machines, all of them should have GPUs, and have GPU driver correctly installed. +Dev box machine controls masters and workers through SSH during installation, maintenance, and uninstallation. There should be one, and only one dev box. Master machine is used to run core Kubernetes components and core OpenPAI services. For now, you can only specify one master machine. We recommend you to use CPU-only machines for dev box and master. For worker machines, all of them should have GPUs, and have GPU driver correctly installed. To be detailed, please check the following requirements before installation: - Dev Box Machine - - Kubespray Requirement - - Ubuntu 16.04 (18.04 should work, but not fully tested.) - - Server can communicate with all other machine (master and worker machines) - - SSH service is enabled and share the same username/password and have sudo privilege + - Hardware Requirement + - It can communicate with all other machine (master and worker machines). + - It is separate from cluster which contains master machines and worker machines. + - Software Requirement + - Ubuntu 16.04 (18.04 should work, but not fully tested) + - SSH service is enabled. - Passwordless ssh to all other machines (master and worker machines) - - Be separate from cluster which contains master machines and worker machines - - OpenPAI Requirement - - Docker is installed, and it is used to start up dev-box container for service deployment. - -- Master Machines: - - Kubespray Requirement - - Assign each server a **static IP address**, and make sure servers can communicate each other. - - Server can access internet, especially need to have access to the docker hub registry service or its mirror. Deployment process will pull Docker images. - - SSH service is enabled and share the same username/password and have sudo privilege. - - NTP service is enabled, and etcd is depended on it. - - OpenPAI Requirement - - Ubuntu 16.04 (18.04 should work, but not fully tested.) - - OpenPAI reserves memory and CPU for service running, so make sure there are enough resource to run machine learning jobs. Check hardware requirements for details. - - Dedicated servers for OpenPAI. OpenPAI manages all CPU, memory and GPU resources of servers. If there is any other workload, it may cause unknown problem due to insufficient resource. - + - Docker is installed. You may use command `docker --version` to check it. Refer to [docker's installation guidance](https://docs.docker.com/engine/install/ubuntu/) if it is not successfully installed. +- Master Machine + - Hardware Requirement + - At least 40GB free memory. + - It has a **static IP address**, and make sure it can communicate with all other machines. + - It can access internet, especially needs to have access to the docker hub registry service or its mirror. Deployment process will pull Docker images. + - Software Requirement + - Ubuntu 16.04 (18.04 should work, but not fully tested) + - SSH service is enabled and share the same username/password with worker machines and have sudo privilege. + - NTP service is enabled, and etcd is depended on it. You can use `apt install ntp` to check this requirement. + - Other Requirement + - It is a dedicated server for OpenPAI. OpenPAI manages all CPU, memory and GPU resources of it. If there is any other workload, it may cause unknown problem due to insufficient resource. - Worker Machines: - - Kubespray Requirement - - Assign each server a **static IP address**, and make sure servers can communicate with each other. - - Server can access internet, especially need to have access to the docker hub registry service or its mirror. Deployment process will pull Docker images. + - Hardware Requirement + - At least 16GB free memory. + - All servers should have at least one GPU. + - Each server has a **static IP address**, and make sure they can communicate with all other machines. + - Each server can access internet, especially needs to have access to the docker hub registry service or its mirror. Deployment process will pull Docker images. + - Software Requirement + - Ubuntu 16.04 (18.04 should work, but not fully tested) - SSH service is enabled and share the same username/password and have sudo privilege. - - OpenPAI Requirement - - Ubuntu 16.04 (18.04 should work, but not fully tested.) - - **Have GPU and GPU driver is installed.** You may use [a command](./installation-faqs-and-troubleshooting.md#how-to-check-whether-the-gpu-driver-is-installed) to check it. Refer to [the installation guidance](./installation-faqs-and-troubleshooting.md#how-to-install-gpu-driver) in FAQs if the driver is not successfully installed. If you are wondering which version of GPU driver you should use, please also refer to [FAQs](./installation-faqs-and-troubleshooting.md#which-version-of-nvidia-driver-should-i-install). - - **Docker is installed.** You may use command `docker --version` to check it. Refer to [docker's installation guidance](https://docs.docker.com/engine/install/ubuntu/) if it is not successfully installed. + - Docker is installed. You may use command `docker --version` to check it. Refer to [docker's installation guidance](https://docs.docker.com/engine/install/ubuntu/) if it is not successfully installed. + - **GPU driver is installed.** You may use [a command](./installation-faqs-and-troubleshooting.md#how-to-check-whether-the-gpu-driver-is-installed) to check it. Refer to [the installation guidance](./installation-faqs-and-troubleshooting.md#how-to-install-gpu-driver) in FAQs if the driver is not successfully installed. If you are wondering which version of GPU driver you should use, please also refer to [FAQs](./installation-faqs-and-troubleshooting.md#which-version-of-nvidia-driver-should-i-install). - **[nvidia-container-runtime](https://github.com/NVIDIA/nvidia-container-runtime) or other device runtime is installed. And be configured as the default runtime of docker. Please configure it in [docker-config-file](https://docs.docker.com/config/daemon/#configure-the-docker-daemon), because kubespray will overwrite systemd's env.** - You may use command `sudo docker run nvidia/cuda:10.0-base nvidia-smi` to check it. This command should output information of available GPUs if it is setup properly. - Refer to [the installation guidance](./installation-faqs-and-troubleshooting.md#how-to-install-nvidia-container-runtime) if the it is not successfully set up. - - OpenPAI reserves memory and CPU for service running, so make sure there are enough resource to run machine learning jobs. Check hardware requirements for details. - - Dedicated servers for OpenPAI. OpenPAI manages all CPU, memory and GPU resources of servers. If there is any other workload, it may cause unknown problem due to insufficient resource. + - Other Requirement + - Each server is dedicated for OpenPAI. OpenPAI manages all CPU, memory and GPU resources of it. If there is any other workload, it may cause unknown problem due to insufficient resource. + +Currently, OpenPAI does not support highly availability and it can only make use of one master node. This feature will be added in the future. Also, you cannot deploy OpenPAI using only one machine. You must have one dev box machine, one master machine and at least one worker machine. If you want a single-box deployment, please submit a feature request [on Github](https://github.com/microsoft/pai). #### Tips to Use CPU-only Worker diff --git a/docs/manual/cluster-admin/recommended-practice.md b/docs/manual/cluster-admin/recommended-practice.md new file mode 100644 index 0000000000..cd62969ca6 --- /dev/null +++ b/docs/manual/cluster-admin/recommended-practice.md @@ -0,0 +1,53 @@ +# Recommended Practice + +Managing one or more clusters is not an easy task. In most cases, the administrator should have good knowledge OpenPAI system. Here we recommend some practice experience for the administrator's reference. + +## Team Shared Practice + +There are mainly two kinds of resource in OpenPAI, namely virtual cluster and storage, and they are managed by groups. All users are in the `default` group. So every one should have access to the `default` virtual cluster and one or more storages which are set for `default` group. Besides `default` group, you can set up different groups for different users. **In practice, we recommend you to assign each team with a single group.** + +For example, if you have two teams: team A working on project A; and team B working on project B. You can set up group A and group B for team A and B, correspondingly. Thus each team can share computing and storage resource internally. If a user joins a team, just add him into the corresponding group. + +By default, OpenPAI uses basic authentication mode. In this mode, virtual cluster is exactly bound to groups, which means setting up a group means set up a virtual cluster in basic authentication mode. In AAD mode, group and virtual cluster are different concepts. Please refer to [How to Set Up Virtual Clusters](./how-to-set-up-virtual-clusters.md) for details. + +## Onboarding Practice + +For new user onboarding in basic authentication mode, the PAI admin should create this user manually in the backend, and notify the user of some instructions and guidelines. In our practice, we will send an e-mail to the new user. Besides account information, we also include the following content in the e-mail: + + - Let the user read the [user manual](../cluster-user/) to learn how to submit job, debug job, and use client tool. + - Let the user know their completed jobs may be deleted after 30 days. + - Let the user know he/she shouldn't always run low-efficiency job (e.g. sleep for several days in the container). Otherwise the administrator may kill the job. + - Let the user know how to contact the administrator in case they find any problem or have any question. + +## DRI Practice + +DRI stands for Designated Responsible Individual. In our context, we don't have one specific administrator for PAI clusters. Instead, we assign one or two DRIs every week. He/she will become the designated responsible individual for cluster management this week. The assignment is based on rotation so everyone in the team has an equal chance to become a DRI. + +The duty of a DRI includes: + +- Solve live site issues of internal deployments, which from alerts and human reported, including cluster alerts and user questions. +- Upgrade PAI services. + +The DRI should be aware of different severities: + + - Severity 0: Impact a whole prod cluster, and it's unavailable totally. + - Severity 1: Impact important features like cannot submit new jobs, API failures totally, or web UI is down. + - Severity 2: Some jobs fail consistently, or some users hit problems frequently. + - Severity 3: Random job failures with low probability. + +In addition, if there are multiple clusters, he/she should also be aware of the different priorities of different clusters. + +Based on severity and priority, we can make an SLA for the cluster management. Here is an example: + +| Severity | Cluster | Acknowledge | Update frequency | Monitoring hours | +|-----------------|---------------------------|--------------------|-------------------------|-------------------------| +| 0, 1 | production cluster | 30 minutes | 2 hour | Working hours | +| 2 | production cluster | 2 hours | 24 hours | Working hours | +| 3 | all | 4 hours | 24 hours | Working hours | + + +If an issue is raised, the DRI should follow these steps to address it: + +1. All questions or notification sent to DRIs should be updated by the DRI owner proactively. +2. DRI owner should send ACK to each incident of PAI alerts. As there are many duplicated alerts, so that it doesn't need to ACK on each one. +3. Besides ACK, the DRI owner should reply to the questions/notification/alerts, if there are updates or it is resolved. Further more, the DRI owner should think about why this incident happens, how to avoid it in the next time, after it is resolved. If it's applicable, create issues on Github. \ No newline at end of file diff --git a/docs/manual/cluster-admin/troubleshooting.md b/docs/manual/cluster-admin/troubleshooting.md deleted file mode 100644 index 5d70fdd8bd..0000000000 --- a/docs/manual/cluster-admin/troubleshooting.md +++ /dev/null @@ -1,26 +0,0 @@ -# Troubleshooting - -## NVIDIA GPU is Not Detected - -If you cannot use GPU in your job, please check the following items on the corresponding worker node: - - 1. The NVIDIA drivers should be installed correctly. Use `nvidia-smi` to confirm. - 2. [nvidia-container-runtime](https://github.com/NVIDIA/nvidia-container-runtime) is installed, and configured as the default runtime of docker. Use `docker info -f "{{json .DefaultRuntime}}"` to confirm. - -If the GPU number shown in webportal is wrong, check the [hivedscheduler and VC configuration](./how-to-set-up-virtual-clusters.md). - -## A Certain Node is Lost - -If the node is lost temporarily, you can wait until it works normally. - -If you want to remove the node from your cluster, refer to [How to Add and Remove Nodes](how-to-add-and-remove-nodes.md). - -## A Certain PAI Service is Not Working - -You can see service log on the [Kubernetes Dashboard](./basic-management-operations.md#access-kubernetes-dashboard) for triage. After the problem is addressed, restart the service using [paictl.py](./basic-management-operations.md#pai-service-management-and-paictl): - -```bash -./paictl.py service stop -n -./paictl.py service start -n - -``` \ No newline at end of file diff --git a/docs/manual/cluster-user/README.md b/docs/manual/cluster-user/README.md index 4107b41c53..51fccdf762 100644 --- a/docs/manual/cluster-user/README.md +++ b/docs/manual/cluster-user/README.md @@ -15,3 +15,4 @@ This manual is for cluster users to learn how to submit job, debug job, manage d 7. [Use Marketplace](./use-marketplace.md) 8. [Use VSCode Extension](./use-vscode-extension.md) 9. [Use Jupyter Notebook Extension](./use-jupyter-notebook-extension.md) +10. [Frequently Asked Question](./frequently-asked-questions.md) \ No newline at end of file diff --git a/docs/manual/cluster-user/frequently-asked-questions.md b/docs/manual/cluster-user/frequently-asked-questions.md new file mode 100644 index 0000000000..952a46047d --- /dev/null +++ b/docs/manual/cluster-user/frequently-asked-questions.md @@ -0,0 +1,7 @@ +# Frequently Asked Questions + +## Why my job has an unexpected retry number? + +Generally speaking, there are 3 types of error in OpenPAI: transient error, permanent error, and unknown error. In jobs, transient error will be always retried, and permanent error will never be retried. If unknown error happens, PAI will retry the job according to the [retry policy](./how-to-use-advanced-job-settings.md#job-exit-spec-retry-policy-and-completion-policy) of the job, which is set by user. + +If you don't set any [retry policy](./how-to-use-advanced-job-settings.md#job-exit-spec-retry-policy-and-completion-policy) but find the job has an unexpected retry number, it can be caused by some transient error, e.g. memory issues, disk pressure, or power failure of the node. Another kind of transient error is preemption. Jobs with higher priority can preempt jobs with lower priority. In OpenPAI's [job protocol](https://github.com/microsoft/openpai-protocol/blob/master/schemas/v2/schema.yaml), you can find a field named `jobPriorityClass`. It defines the priority of a job. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index b29e315bc5..9f34e30c5e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,6 +11,7 @@ nav: - Use Marketplace: manual/cluster-user/use-marketplace.md - Use VSCode Extension: manual/cluster-user/use-vscode-extension.md - Use Jupyter Notebook Extension: manual/cluster-user/use-jupyter-notebook-extension.md + - Frequently Asked Questions: manual/cluster-user/frequently-asked-questions.md - Admin Manual: - Introduction: manual/cluster-admin/README.md - Installation Guide: manual/cluster-admin/installation-guide.md @@ -21,7 +22,8 @@ nav: - How to Set Up Virtual Clusters: manual/cluster-admin/how-to-set-up-virtual-clusters.md - How to Add and Remove Nodes: manual/cluster-admin/how-to-add-and-remove-nodes.md - How to Customize Cluster by Plugins: manual/cluster-admin/how-to-customize-cluster-by-plugins.md - - Troubleshooting: manual/cluster-admin/troubleshooting.md + - Alerting and Troubleshooting: manual/cluster-admin/alerting-and-troubleshooting.md + - Recommended Practice: manual/cluster-admin/recommended-practice.md - How to Uninstall OpenPAI: manual/cluster-admin/how-to-uninstall-openpai.md - Upgrade Guide: manual/cluster-admin/upgrade-guide.md plugins: