It's likely caused because your using a 16-bit depth buffer, which means that from a distance there isn't enough detail in the depth buffer to differentiate between the planet and its atmosphere so they're being drawn a little randomly.
I'd like to mention that the depth buffer doesn't store depth information with the same degree of accuracy across the whole scene, objects near the screen will have more precision than those towards the back of scene.
The solution is to either use a 24-bit depth buffer, or adjust your zNear and zFar values to squeeze some more precision out of the depth buffer, so it's a pretty simple fix. If your already using a 24-bit depth buffer then you should adjust your near and far values, change z-near so it is not as close to 0 and reduce the distance between zNear and zFar
OpenGL FAQ on the depth buffer[
^]