Landsat 8 has a special band acquiring data to detect cirrus clouds. I think it's Band 9.
You should build a mask with the clouds and their shadows, afterwards apply it on the other bands you are using. This procedure is not a cloud removal, but a cloud masking.
Anyway, in the optical spectrum you have no useful information regarding the areas covered by clouds. Therefore, if you need to process those areas, you need another image, less cloudy. Generally, an image of good quality must have less than 10% clouds.
You can use Landsat 8 Quality Assessment Band (Band BQA). See this page for more information: http://landsat.usgs.gov/L8QualityAssessmentBand.php
It can help you with removing (masking) clouds, however it is ussually not solution for removing shadows of clouds (mostly cumulus). If you want to reconstruct the information which is under clouds you need use another scenes. The missing information should be modelled, usually using statistical methods. See literature.
If you are using images acquired before 19-Dec-2014, I would recommend FMASK, but if your images where acquired after this date then use the BQA band. There is also a tool called pymasker, the source code and instructions are found at https://github.com/dz316424/pymasker.