Faits :
A.
Par jugement du 20 novembre 2018, la Juge de police de l'arrondissement de la Gruyère a reconnu A._ coupable de lésions corporelles simples (conjoint durant le mariage ou dans l'année qui a suivi le divorce), voies de fait, voies de fait (conjoint durant le mariage ou dans l'année qui a suivi le divorce), infractions d'importance mineure (vol), soustraction d'une chose mobilière, injure, utilisation abusive d'une installation de télécommunication, menaces (conjoint durant le mariage ou dans l'année qui a suivi le divorce), contrainte et violation de domicile et, en conséquence, l'a condamné à une peine privative de liberté de 12 mois, à une peine pécuniaire de 90 jours-amende à 30 fr. l'unité, ainsi qu'au paiement d'une amende de 2'000 francs. Ce jugement a également prononcé le classement de la procédure pénale ouverte à l'encontre de A._ pour voies de fait (conjoint durant le mariage ou dans l'année qui a suivi le divorce) pour les faits antérieurs au 20 novembre 2015 compte tenu de la prescription. De même, la procédure pénale ouverte à l'encontre de l'intéressé pour vol et injure a été classée en raison de la tardiveté de la plainte pénale. Par ailleurs, A._ a été astreint à un traitement ambulatoire sous la forme d'un suivi psychiatrique et psychothérapeutique. Enfin, une expulsion non obligatoire pour une durée de trois ans a également été prononcée à son encontre.
B.
Par arrêt du 29 juin 2020, la Cour d'appel pénal du Tribunal cantonal du canton de Fribourg a partiellement admis l'appel formé par A._ à l'encontre du jugement de première instance, considérant qu'en l'absence de plainte pénale valable, l'infraction de violation de domicile devait être classée et que l'établissement des faits survenus le 28 décembre 2017 devait être modifié, sans pour autant que cela n'influe sur leur qualification juridique. Cet arrêt se fonde en substance sur les faits suivants.
B.a. A._ et B._ se sont mariés le 22 juillet 2014. Un enfant du nom de C._ est né de cette union en 2016. Le couple vit séparé depuis le 19 mars 2017. Le 29 mars 2017, B._ a déposé une requête de mesures protectrices de l'union conjugale auprès du Président du Tribunal civil de l'arrondissement de la Gruyère.
B.b. A._ a, et ce à un nombre indéterminé de reprises entre le 30 août 2015 et le 18 mars 2017, régulièrement injurié et menacé son épouse (menaces de mort, de la battre et de la priver de leur enfant). De plus, dans la même période, il l'a également serrée au cou et lui a asséné des coups de poing et de pied à un nombre indéterminé de reprises, lui causant notamment des hématomes aux jambes. En particulier, le 18 mars 2017, A._ a injurié son épouse en la traitant notamment de "pute", l'a menacée en lui déclarant qu'il allait lui casser la tête et en brandissant un couteau de cuisine, lui a asséné plusieurs gifles et coups de poing à la tête et l'a frappée à deux reprises avec sa ceinture au niveau du dos.
Entre le 24 et le 28 mars 2017, A._ a dissimulé des effets personnels appartenant à son épouse, d'une valeur estimée entre 2'000 et 3'000 fr., au domicile conjugal. Les 14 et 16 avril 2017, il s'est rendu à l'appartement qui avait été mis à la disposition de son épouse par l'association Y._ et y a pénétré sans l'accord de la prénommée.
Le 24 septembre 2017, alors que B._ se trouvait avec son fils et D._ à X._, A._ est arrivé sur les lieux et une altercation s'en est suivie. A cette occasion, il a traité B._ de "pute", a menacé de la tuer et de s'en prendre à son frère. De plus, B._ a dû rester sur les lieux pendant deux à trois heures, contre son gré. Plus tard, A._ lui a également envoyé des messages dans lesquels il a menacé de la détruire et de s'en prendre à son frère si elle ne remplissait pas certaines conditions.
A une date indéterminée précédant le 30 octobre 2017, A._ s'est emparé du téléphone portable de son épouse, l'a injuriée et l'a menacée. Le 12 décembre 2017, A._ a saisi son épouse par le bras et l'a tirée en arrière, a émis des menaces contre elle tout en l'agrippant au niveau des cheveux et lui a dérobé son téléphone portable. De plus, le 5 décembre 2017, dans un parking à X._, A._ a menacé B._ avec un couteau. Enfin, depuis la séparation et sa prise en charge par l'association Y._, B._ a été constamment suivie par A._, ce qui a eu pour conséquence de lui faire changer ses habitudes par crainte d'être à nouveau injuriée, menacée ou brusquée par ce dernier.
Le 3 décembre 2017, A._ a saisi le bras de D._ ainsi que l'écharpe qu'elle portait autour du cou, a proféré des injures et des menaces à son encontre, lui a par la suite téléphoné à de nombreuses reprises et envoyé de nombreux messages comportant des injures et des menaces. Le 28 décembre 2017, A._ est arrivé tout d'un coup vers son épouse et D._ et a immédiatement frappé cette dernière au visage. Il les a insultées et menacées, a craché sur D._ et a assené deux coups de poing au visage de son épouse avant d'être repoussé par la sécurité et d'autres passants, puis a continué de proférer des menaces à leur encontre.
C.
A._ forme un recours en matière pénale à l'encontre de l'arrêt de la Cour d'appel pénal du Tribunal cantonal fribourgeois. Il conclut principalement à ce que l'arrêt précité soit réformé en ce sens qu'il est renoncé à ordonner son expulsion, subsidiairement, à ce qu'il soit annulé et la cause renvoyée devant la Cour d'appel pénal pour nouvelle décision. Il sollicite par ailleurs une indemnité équitable valant participation à ses frais d'avocat.

Considérant en droit :
1.
Le recourant conteste l'expulsion du territoire suisse ordonnée. Il soutient que cette mesure contrevient au principe de la proportionnalité.
1.1. Aux termes de l'art. 66a bis CP, le juge peut expulser un étranger du territoire suisse pour une durée de trois à quinze ans si, pour un crime ou un délit non visé à l'<ref-law>, celui-ci a été condamné à une peine ou a fait l'objet d'une mesure au sens des art. 59 à 61 ou 64 CP.
Comme toute décision étatique, le prononcé d'une expulsion non obligatoire doit respecter le principe de la proportionnalité ancré aux art. 5 al. 2 et 36 al. 2 et 3 de la Constitution fédérale de la Confédération suisse [Cst; RS 101]. Il convient ainsi d'examiner si l'intérêt public à l'expulsion l'emporte sur l'intérêt privé de la personne à demeurer en Suisse. Une telle pesée des intérêts répond également aux exigences découlant de l'art. 8 par. 2 de la CEDH concernant les ingérences dans la vie privée et familiale (cf. arrêts 6B_528/2020 du 13 août 2020 consid. 3.2; 6B_594/2019 du 4 juillet 2019 consid. 2.1; 6B_549/2019 du 29 mai 2019 consid. 2.1 et les références citées).
L'examen de la proportionnalité suppose une prise en compte de la nature et de la gravité de la faute, du temps écoulé depuis la commission de l'infraction, du comportement de l'auteur durant cette période, de la durée de son séjour en Suisse, de la solidité des liens sociaux, culturels et familiaux avec le pays hôte et avec le pays de destination et du préjudice que l'intéressé et sa famille auraient à subir du fait de la mesure (cf. <ref-ruling> consid. 2.2.1 p. 19; <ref-ruling> consid. 4.3 p. 381; arrêt 6B_528/2020 précité consid. 3.2).
L'art. 66a al. 2 deuxième phrase CP impose expressément de tenir compte de la situation particulière de l'étranger qui est né ou qui a grandi en Suisse. Cette disposition, voulue comme exception à l'expulsion obligatoire de l'<ref-law>, doit également être prise en considération dans le cadre de l'expulsion facultative selon l'<ref-law> (Camille Perrier Depeursinge, L'expulsion selon les art. 66a à 66d du Code pénal suisse, in RPS 135-2017 p. 398; Busslinger/Uebersax, Härtefallklausel und migrationsrechtliche Auswirkungen der Landesverweisung, Plädoyer 5/2016, p. 97).
La jurisprudence rendue en droit des étrangers retient que la révocation de l'autorisation d'établissement d'un étranger qui séjourne depuis longtemps en Suisse doit se faire avec une retenue particulière, mais n'est pas exclue en cas d'infractions graves ou répétées, même en présence d'un étranger né en Suisse et qui y a passé l'entier de sa vie. On tiendra alors particulièrement compte de l'intensité des liens de l'étranger avec la Suisse et des difficultés de réintégration dans son pays d'origine. Un étranger qui est né ou a grandi en Suisse dispose d'un intérêt privé important à y demeurer, ledit intérêt devant être pris en compte dans le cadre de la pesée des intérêts (<ref-ruling> consid. 3.3.3 p. 341 s.; arrêt 6B_925/2019 du 16 octobre 2019 consid. 1.1).
1.2.
1.2.1. Le recourant veut nuancer l'intérêt public à son expulsion. Il fait valoir que sa responsabilité était légèrement diminuée et que sa faute a été qualifiée de moyenne. Les infractions commises l'avaient toutes été dans le cadre de sa relation avec son épouse. En dehors de ce contexte, le risque de récidive était faible et le traitement ambulatoire auquel il était astreint permettait de s'assurer qu'il ne récidiverait pas. Depuis sa sortie de détention, le 28 août 2018, il n'avait commis aucune infraction.
1.2.2. Il ressort du jugement cantonal, qui reprend intégralement les considérations du jugement de première instance sur ce point, que le recourant n'a cessé de commettre des infractions depuis sa minorité. Peu de temps après avoir été condamné le 24 janvier 2017 pour des faits de violences conjugales, il avait persévéré avec acharnement dans son activité délictuelle aboutissant à deux ouvertures d'instruction pour des faits similaires graves. Il a ainsi déjà été condamné à sept reprises pour des lésions corporelles simples, voies de fait ou encore menaces au préjudice de son épouse. De l'avis des juges cantonaux, ses nombreux antécédents mettaient en évidence sa propension à agir avec violence et impulsivité.
1.2.3. Compte tenu des éléments mis en exergue par la cour cantonale, le fait que le recourant n'ait plus commis d'infractions depuis sa sortie de détention n'empêchait pas de conclure que son comportement en général dénotait d'un grand mépris pour l'ordre juridique suisse. Sa responsabilité légèrement diminuée ne fait pas obstacle à son expulsion. Par ailleurs, s'il est vrai que le traitement ambulatoire qui a été ordonné a pour but de diminuer le risque de récidive, il n'en demeure pas moins qu'à l'heure actuelle, il a été constaté qu'il présentait un risque de réitération élevé d'actes de violence physique sur des femmes ainsi qu'un risque non négligeable pour des infractions d'ordre général. Dans le cas d'espèce, il ne s'était d'ailleurs pas limité à s'en prendre physiquement son épouse, mais avait également porté atteinte à l'intégrité corporelle de l'amie de celle-ci.
Il y a encore lieu de souligner que le recourant s'est livré à de très nombreuses reprises à des actes de menace, de harcèlement et d'agression physique sur son épouse, et cela pendant plusieurs années. Il a démontré ainsi s'être profondément ancré dans un comportement de violence et de contrôle à l'égard d'un autre être humain. L'impact d'un tel climat de terreur sur la vie de celle qui en fut la victime ne saurait être minimisé. De manière plus globale, la Suisse considère que la violence à l'égard des femmes constitue une grave violation des droits humains qui entraîne des conséquences profondes non seulement pour les personnes concernées mais pour la société dans son ensemble (cf. Message du 2 décembre 2016 concernant l'approbation de la convention du Conseil de l'Europe sur la prévention et la lutte contre la violence à l'égard des femmes et la violence domestique (convention d'Istanbul), FF 2017 163 p. 168; Message du 11 octobre 2017 concernant la loi fédérale sur l'amélioration de la protection des victimes de violence, FF 2017 6913 p. 6919; Rapport du Conseil fédéral du 13 mai 2009 sur la violence dans les relations de couple; ses causes et les mesures prises en Suisse [en réponse au postulat Stump 05.3694 du 7 octobre 2005, pp 3615-3619]).
Pour ces raisons, il se justifie de retenir que le recourant représente une menace sérieuse pour la sécurité publique, de sorte que l'intérêt public à son expulsion est marqué.
1.3.
1.3.1. En rapport avec l'intérêt privé du recourant à demeurer en Suisse, il ressort du jugement cantonal que le recourant dispose d'un permis d'établissement, est arrivé en Suisse à l'âge de onze ans, y a suivi sa scolarité et achevé une formation en préapprentissage de peintre en bâtiment. L'essentiel de sa famille vit en Suisse, dont notamment son fils né en 2016. Il est donc intégré dans une certaine mesure. En ce qui concerne ses liens avec le Kosovo, il a été constaté que le recourant parlait albanais et que certains membres de sa famille vivaient encore dans ce pays.
1.3.2. Le recourant allègue que la moitié des membres de sa famille ont acquis la nationalité suisse et qu'il attend un enfant avec sa nouvelle compagne, laquelle vit également en Suisse. Ces éléments de fait ne ressortent pas du jugement attaqué. De même, il reproche à la cour cantonale d'avoir retenu qu'il ne disposerait d'aucun cadre social en Suisse, hormis sa famille, ni qu'il y exercerait d'autres activités dénotant d'une intégration à la vie sociale, mais n'explique nullement en quoi cette constatation serait erronée.
Dans la mesure où le recourant s'écarte ainsi de l'état de fait de la cour cantonale ou introduit des éléments qui n'en ressortent pas, sa démarche demeure purement appellatoire (cf. à cet égard l'arrêt publié aux <ref-ruling> consid. 2.4 p. 368 et les références citées) et ne répond pas aux réquisits de motivation découlant de l'<ref-law>.
1.3.3. Le recourant soutient que son expulsion constituerait un véritable déracinement et que l'autorité précédente aurait dû davantage tenir compte du fait qu'il était arrivé en Suisse en étant enfant. Les liens qu'il entretient avec son pays d'accueil sont forts, tandis que ceux qu'il conserve avec le Kosovo sont quasiment inexistants. Il affirme que ses chances de resocialisation ou de réinsertion professionnelle dans son pays d'origine sont nulles car il n'y a jamais travaillé ni suivi de formation. Par ailleurs, il fait valoir que si son expulsion devait être confirmée, il lui sera ensuite quasiment impossible de revenir en Suisse et d'y vivre légalement et qu'au vu de ses rapports avec son épouse, il lui sera également impossible de maintenir un quelconque lien avec son fils. Cette expulsion aura également pour conséquence de l'empêcher de contribuer à l'entretien de l'enfant en raison de la situation économique au Kosovo.
1.3.4. Les autorités cantonales ont constaté que si l'expulsion constituerait inévitablement un obstacle à la relation père-fils, il fallait néanmoins considérer que le recourant avait exercé de graves violences sur son épouse en présence de leur enfant. Il avait ainsi sérieusement mis en péril le développement de son fils par ses agissements. En outre, le recourant n'avait, de manière répétée, pas respecté les décisions de la justice civile, à savoir les conditions du droit de visite, et avait même, à une reprise, enlevé son enfant sans l'accord du parent gardien. Une expulsion serait certes préjudiciable à l'entretien de l'enfant dans la mesure où le recourant était astreint au paiement d'une pension alimentaire. Néanmoins, de l'avis du premier juge, partagé par la cour cantonale, cet élément était de moindre importance face au souci absolu de favoriser un développement sain de l'enfant.
1.3.5. Les considérations cantonales ne sont pas critiquables. On y ajoutera que le recourant ne doit ses mauvaises relations avec la mère de leur enfant qu'à son propre comportement. Enfin, s'il est probable qu'il ne pourra plus pourvoir à l'entretien de son fils de la même manière qu'il le faisait en travaillant en Suisse, cela ne signifie pas pour autant qu'il sera nécessairement dans l'incapacité de fournir une quelconque contribution pour son enfant depuis le Kosovo.
Il est vrai que la durée du séjour en Suisse du recourant, soit une vingtaine d'année, est très importante. En outre, il convient de tenir compte du fait qu'il est arrivé dans ce pays alors qu'il était encore enfant et qu'il entretient peu de liens avec le Kosovo. Cela étant, on ne voit pas ce qui empêcherait le recourant de se créer un cercle social dans son pays d'origine dans la mesure où il en parle la langue et y possède de la famille, ni en quoi il lui serait impossible d'y faire valoir sa formation et son expérience de peintre en bâtiment acquise en Suisse pour trouver un emploi. Il y a encore lieu de relever que le recourant avait, avant sa condamnation par la cour cantonale, déjà fait l'objet de deux avertissements de la part de la police des étrangers, sans pour autant avoir modifié son comportement. Le jugement cantonal ne fait aucunement état d'une quelconque prise de conscience ou élan sincère de remords. Enfin, il faut encore observer, sous l'angle de la proportionnalité, que la mesure d'expulsion ordonnée à l'encontre du recourant est limitée à trois ans, soit la durée minimale prévue à l'<ref-law>.
1.4. En définitive, compte tenu en particulier du fait que les infractions ont été commises de manière réitérée pendant une longue période et que le recourant n'a jamais modifié son comportement en dépit de ses précédentes condamnations et mises en garde, il se justifie, dans le cas d'espèce, de faire primer l'intérêt public à éloigner le recourant de Suisse sur l'intérêt privé à ce que celui-ci puisse continuer d'y demeurer. Partant, l'autorité précédente n'a pas méconnu les art. 8 CEDH et 66abis CP en prononçant l'expulsion du recourant pour une durée de trois ans.
2.
Sur le vu de ce qui précède, le recours doit être rejeté dans la mesure où il est recevable. Le recourant, qui succombe, supporte les frais judiciaires (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 3'000 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal de l'Etat de Fribourg, Cour d'appel pénal.
Lausanne, le 22 décembre 2020
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Musy