Skip to content

dunedaq v2.11.0 k8s

Pierre Lasorak edited this page May 24, 2022 · 8 revisions

A prototype of dunedaq running in a kubernetes cluster

Getting started

Log on np04-srv-015 and run:

mkdir -p $HOME/.kube
cp -i /nfs/home/np04daq/np04-kubernetes/config $HOME/.kube/config

Then:

mkdir dunedaq-k8s
source /cvmfs/dunedaq.opensciencegrid.org/setup_dunedaq.sh
setup_dbt dunedaq-v2.11.0-cs8
dbt-create.py dunedaq-v2.11.0-cs8 swdir
cd swdir/sourcecode
git clone https://github.com/DUNE-DAQ/restcmd.git
dbt-workarea-env
dbt-build.py
cd ../
git clone https://github.com/DUNE-DAQ/nanorc.git -b plasorak/k8s-dunedaq-v2.11.0
cd nanorc
pip install .
cd ../
mkdir runarea
daqconf_multiru_gen daq

Next, you need to add the image in the configuration, for that, add the line

"image": "pocket-daq-area-cvmfs:v2.11.0",

(don't forget the comma!) after the line:

    "exec": {
        "daq_application": {
            "cmd": [
                "CMD_FAC=rest://localhost:${APP_PORT}",
                "INFO_SVC=file://info_${APP_NAME}_${APP_PORT}.json",
                "cd ${APP_WD}",
                "daq_application --name ${APP_NAME} -c ${CMD_FAC} -i ${INFO_SVC}"
            ],
            "comment": "Application profile using  PATH variables (lower start time)",
            "image": "pocket-daq-area-cvmfs:v2.11.0",

in daq/boot.json.

Then:

curl -o frames.bin -O https://cernbox.cern.ch/index.php/s/7qNnuxD8igDOVJT/download
nanorc --pm k8s://np04-srv-015:31000 daq
[...]
boot partition-name
init
[...]

Potentially needed if software needs to be changed, or if applications are not answering (this means the images isn't correct, and):

git clone [email protected]:DUNE-DAQ/pocket.git
cd pocket/images/daq_application/daq_area_cvmfs
./build.sh where/swdir/is

Then export the image with docker export... log on to the node of the cluster on which the image needs to be updated, and run docker import ...

Logs

How to get logs: First, open a new terminal window on np04-srv-015, on which k8s is installed so one can do:

kubectl get pods -n <partition_name>

Note: partition_name can be given as a parameter to the nanorc boot command: boot <partition_name>. For example, when partition_name is "plasorak":

kubectl get pods -n plasorak
NAME                         READY   STATUS    RESTARTS   AGE
dataflow0-84d77d48c9-mcbq9   1/1     Running   0          66s
...

And you can use the pod name with the kubectl logs command:

kubectl logs dataflow0-84d77d48c9-mcbq9 -n plasorak
Clone this wiki locally