WordPress Roles

Create function to give role a numeric value:

function get_user_level($role){

    switch ($role) {

        case 'Contributor':
            return 1;
            );
            break;
        case 'Author':
            return 2;
            );
            break;
        case 'Editor':
            return 4;
            break;
        case 'Administrator':
            return 5;
            break;
        case 'Super Admin':
            return 6;
            break;

        default:
            return 0; // default subscriber or other roles
            break;
    }

}

Now you can do without meta query:

$args = array( 'post_type'=>'gyo_kbs', 'posts_per_page'=>-1, 'orderby' => 'menu_order', 'order' => 'ASC'); // Removed meta query

$the_query = new WP_Query ( $args );
while ( $the_query -> have_posts() ) : $the_query -> the_post();

    $allowed_role = get_post_meta( get_the_ID(), 'gyo_kb_roleview', true ); //get the meta value of allowed role

    if( get_user_level($_role) < get_user_level($allowed_role) ){ // $_role from your question
        continue; // skip post if the user role is less than allowed role
    }

    echo '<h1>' . $post -> post_title . '</h1>';

endwhile;
wp_reset_postdata();

Update: If You can save numeric value for the user role in post meta,
Then you can do:

    $args = array( 'post_type'=>'gyo_kbs', 'posts_per_page'=>-1, 'orderby' => 'menu_order', 'order' => 'ASC', 
    'meta_query' => array(
     array(
            'key'     => 'gyo_kb_roleview',
            'value'   => get_user_level($_role),
            'compare' => '>='
        ),
    )
);