본관은 광산(光山). 자는 관경(觀卿), 호는 서석(瑞石). 대사헌 김약채(金若采)의 증손으로, 할아버지는 검열(檢閱) 김문(金問)이고, 아버지는 사헌부감찰 김철산(金鐵山)이며, 어머니는 김명리(金命理)의 딸이다.
1441년(세종 23) 식년 문과에 을과로 급제, 승문원부정자(承文院副正字)를 거쳐 박사에 이르렀다. 1445년에는 의영고부사(義盈庫副使)에 이어 황해도도사 · 성균관주부(成均館主簿) · 사헌부감찰(司憲府監察) · 봉상시판관(奉常寺判官)을 역임하였다.
1448년 4월에는 사은사(謝恩使) 이사임(李思任)의 서장관(書狀官)으로 명나라에 다녀왔다. 1455년(세조 1) 12월에는 교리로서 세조의 즉위를 도운 공으로 원종공신(原從功臣) 3등에 책훈되었다. 당시 할머니의 상을 입고 있었으나 2년 뒤 복을 벗고 사헌부지평(司憲府持平)으로 임명되었다.
1458년 4월 최옥산(崔玉山)의 살부사건(殺父事件)이 일어나자 부지승문원사(副知承文院事)로서 경차관(敬差官)이 되어 무고임을 밝혀내는 데 공을 세워, 세조의 신임을 얻어 사헌부장령(司憲府掌令)에 임명되었다. 이어 성균사예(成均司藝) · 종친부전첨(宗親府典籤)을 역임하였다.
1460년 사섬시윤(司贍寺尹)에 임명되고 이어서 동부승지 · 우부승지 · 좌부승지를 거치면서 새로운 형전(刑典) 편찬을 주도했으며, 1461년 10월 병조참판에 임명되었다.
세조는 김국광의 박식한 재능을 높이 평가해 직접 ‘사지제일(事知第一)’의 4자를 써서 하사하고, 당시 승지들이 모두 탄핵을 받자 가도승지(假都承旨)로 임명해 왕명 출납을 전담하도록 하였다.
1464년 1월 호조판서를 거쳐 이듬해에는 동지중추원사가 되고, 1466년 4월에는 병조판서에 임명되었다. 1467년 4월 우참찬 겸 병조판서가 되었으며, 그 해 5월 이시애(李施愛)의 난이 일어나자 의정부우찬성 겸 병조판서로서 난을 평정하는 데 공을 세웠다.
이 공으로 적개공신(敵愾功臣) 2등으로 책훈되고 광산군(光山君)에 훈봉되는 동시에 좌찬성 겸 세자시강원 이사(貳師) · 병조판서 · 오위도총부도총관 · 춘추관지사(春秋館知事)에 올랐다. 이어 행해진 건주위(建州衛) 정벌에도 공을 세워 군공(軍功) 3등에 책훈되었다.
1469년 세조가 사망하고 예종이 즉위하자 신숙주(申叔舟) 등과 함께 원상(院相)이 되어 국정을 맡았으나, 그 해 10월에 겸병조판서에서 해임되고 좌찬성으로서 국정에 참여했다. 이듬해 5월 충청도와 전라도의 문폐사(問弊使)로 내려가 여러 가지 폐정 시정에 노력했으며, 8월에는 우의정이 되었다.
1470년(성종 1) 4월 좌의정으로 옮기고 5월에는 사은사로 명나라에 다녀왔다. 이듬해 3월 좌리공신(佐理功臣) 1등에 책훈되고 광산부원군(光山府院君)에 봉해졌다. 그러나 8월에 아우 김정광(金廷光)과 사위 이한(李垾)의 부정 사건으로 대간의 탄핵을 받아 사직하고 다만 원상과 영경연사(領經筵事)만을 겸하였다.
그 뒤 사헌부 · 사간원 등 대간의 강력한 반대에 부닥치면서도 1476년 5월 원상 제도가 폐지될 때까지 원상으로서 국방 · 외교 · 법전 편찬 등의 국정 자문에 응하고 경연관으로서 국왕 보도의 직책을 수행하였다. 1477년 10월 영중추부사를 거쳐 이듬해 6월 다시 우의정에 임명되었으나 대간의 심한 반발로 사직하였다.
일찍이 세조로부터 두터운 신임을 얻어 『경국대전(經國大典)』 편찬에 적극적으로 참여하였다. 시호는 정정(丁靖)이다.