I am using gaussian process for regression and i would like to know if there is any way to design a kernel that ensure that my function is always non-negative. All my observables are positive and i would like points between them to be as well but sometimes the function dives under 0 values because of variations, can i prevent it ?
Not really. A Gaussian process produces gaussian variates and these have infinite support. Theoretically, your function could dip below 0.
In practice, if the you give the process a positive mean that is several standard deviations (at least 4) from 0, the probability of going negative will be very small.
If you are prepared to go non-Gaussian, you could take any Gaussian process you liked and then square the results. These will be positive, although your process will no longer be Gaussian.
There are two interesting ways to get around this which are approximate but very useful. Both methods model a warping of the original space. Osborne et al. (http://www.robots.ox.ac.uk/~mosb/public/pdf/133/bbq_nips_final.pdf) models the log of the function space and Gunter et al. (http://www.robots.ox.ac.uk/~mosb/public/pdf/266/Gunter%20et%20al.%20-%202014%20-%20Sampling%20for%20Inference%20in%20Probabilistic%20Models%20wit.pdf) model the square root of the function.
Of course this will not be a Gaussian process (instead for example it would be an approximate chi process) in the original space but it may be an appropriate technique for you.