본관은 상주(尙州). 아버지는 판전의(判典醫) 김록(金祿)이며, 권신 김득배(金得培)의 동생이다.
1347년(충목왕 3)에 관직에 나아가 주로 무관으로 활약하였다.
1361년(공민왕 10) 홍건적이 20만 대군으로 침입하여 개경을 함락하자 복주(福州: 지금의 경상북도 안동)로 피난하게 되었는데, 이때 대장군으로 왕을 호종하였으며, 그 뒤 개경을 수복하는 데 공이 컸다.
그 때, 형 김득배가 안우(安祐)·이방실(李芳實)과 함께 간신 김용(金鏞)의 모함으로 사형을 당하자 이에 연좌되어 화산(花山)으로 유배되었다. 1363년 김용이 축출되자 다시 소환되어 홍건적 격퇴의 공을 인정받아 황상(黃裳)·한방신(韓方信)·최영(崔瑩) 등과과 함께 일등공신으로 녹훈되었다.
1376년(우왕 2) 9월에 의주원수가 되었으며, 다음 해 9월에 왜구가 영광·장사·모평·함풍에 침입하여 해주·평주에까지 이르자 최영 등과 함께 이를 격퇴하였다.
그 뒤 삼사우사(三司右使)가 되었으며, 또 왜구가 밀양·영산에 침입하자 조전원수(助戰元帥)로서 이성계(李成桂)·이림(李琳) 등과 함께 우인열(禹仁烈)을 도와 이를 격퇴하였다.