Ошибки:
1. Код в первом 
script выполнится сразу, до того как мы введём какой либо текст.
2. 
var задаёт локальную переменную в пределах функции, потому код из первого 
script всё равно бы никак не смог увидеть переменную 
tekt из функции во втором.
3. 
$ - это библиотека 
jquery, подключение которой у вас отсутствует, потому также работать не должно. Перед тем как начать использовать 
jq рекомендуется попривыкнуть к обычному javascript, иначе можно заработать 
jquery головного мозга. 
<!DOCTYPE html>
<html>
<body>
 
<canvas id="myCanvas" width="300" height="200" style="border:2px solid #d3d3d3;">
Обновите браузер</canvas>
<br><br>
<input type="text" id="nashinput">                    
<button type="submit" id="poslat">Введите текст</button>
<br>
 
<script>
document.getElementById('poslat').onclick = function(){
var tekt = document.getElementById('nashinput').value;
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
 
// Create gradient
var grd = ctx.createLinearGradient(0,0,500,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
 
// Fill with gradient
ctx.fillStyle = grd;
ctx.fillRect(0,0,300,200);
 
ctx.font = "30px Arial";
ctx.strokeText(tekt,70,100);
};
</script>
 
</body>
</html>