> ## Content Index
> Fetch the complete content index at: https://chrisjmccall.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Macbook Pro Node
- URL: https://chrisjmccall.com/macbook-pro-node/
- Published: 2026-08-27T00:49:21.000Z
- Updated: 2026-08-27T03:23:19.000Z
- Author: Chris McCall

Setting up a node to handle media server workloads on my home Kubernetes cluster. 

Since this Macbook has a discrete GPU I thought it would make a good media server. Unfortunately it is a T2 Mac, so installing Ubuntu is not as straightforward as the other machines on this cluster. More unfortunately, the integrated Intel GPU actually ended up being a better fit for media transcoding so the discrete GPU just complicated the setup. I'll cover what I've done so far in regard to the system setup in another post. 

### Specs

2018 Macbook Pro  
Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz 6 Core  
Intel UHD Graphics 630  
AMD Radeon Pro 560X

### Install Ubuntu & Prepare for the Cluster

The cluster install steps for this one were the same as my Mac Mini, which you can view [here](https://chrisjmccall.com/p/). Installing Ubuntu and getting cilium working was a little more effort, so that is what I'll go into here.

### T2 Linux

Because of the T2 chip inside newer Macs, you'll want to reference the [t2linux project](https://t2linux.org/?ref=chrisjmccall.com) for your install. I'd recommend not blowing away your entire disk to install Ubuntu, even if your machine is stuck on an older version of MacOS. I did this the first time and ended up restoring the original OS to keep in a separate partition. T2Linux uses the MacOS installation to get proprietary drivers, and while you can secure them in other ways it's just easier to leave the MacOS partition on there.

##### Prepping the Drive

Follow the Preinstall steps on the [t2linux wiki](https://wiki.t2linux.org/guides/preinstall/?ref=chrisjmccall.com), which I will copy below.

#### Partition with Disk Utility

1. Open Disk Utility
2. Choose the volume you want to partition for Linux
3. Press the "Partition" button in the top-right
4. Under the blue pie chart press the "+" button
5. When prompted, be sure to select ****"Add Partition"** and ****NOT "Volume"** \- you want a partition.
6. ****Name:** choose a name for the partition, e.g. Linux
7. ****Format:** choose whatever format there is - exFAT or another - it doesn't really matter (during the Linux installation you must erase your created partition anyway). However, it's best to avoid APFS because it may confuse you when differentiating between macOS and Linux partitions during Linux installation.
8. ****Size:** pick the ****desired amount of space** for Linux, because you will ****not be able** to change it.
9. If you want separate partitions for `/home`, `/boot`, etc., create them as well. If you are a beginner and don't understand this point, you may skip it.

##### Prepping the ISO

Now we need to create a patched ISO that we will use to install Ubuntu. Go to [https://github.com/t2linux/T2-Ubuntu/releases/](https://github.com/t2linux/T2-Ubuntu/releases/tag/v7.0.9-1?ref=chrisjmccall.com) and download iso.sh(Mac) or iso.bat(Windows)

```shell
# Run the script and answer the prompts to generate an iso
./iso.sh
```

Create a bootable usb with Balena Etcher from the iso and install as normal. 

### Fixing Cilium

After getting Ubuntu and the Kubernetes components installed cilium would not completely come up to ready on all nodes. A quick check showed that only the pod on the Macbook was crashing.

```shell
kubectl get nodes -n kube-system -o wide
```

Checking the logs for the pod shows: "invalid argument: 0: (85) call bpf\_set\_retval#187: R1 is not a scalar (2 line(s) omitted)" progType=CGroupSock helper=FnSetRetval"" 

This error caused me to check my kernel versions(uname -r) which showed that the Macbook was running kernel 7.2, while the other 2 machines were running 7.0.0\. So I tried a different kernel.

```shell
# Add the t2 repo
CODENAME=resolute
curl -s --compressed "https://adityagarg8.github.io/t2-ubuntu-repo/KEY.gpg" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/t2-ubuntu-repo.gpg >/dev/null
sudo curl -s --compressed -o /etc/apt/sources.list.d/t2.list "https://adityagarg8.github.io/t2-ubuntu-repo/t2.list"
echo "deb [signed-by=/etc/apt/trusted.gpg.d/t2-ubuntu-repo.gpg] https://github.com/AdityaGarg8/t2-ubuntu-repo/releases/download/${CODENAME} ./" | sudo tee -a /etc/apt/sources.list.d/t2.list
sudo apt update
```

Choose a lower version kernel

```shell
sudo apt list -a linux-t2

# I am going to do 7.1.7
sudo apt install linux-t2=7.1.7-2-resolute

# Remove previous kernel
sudo apt remove linux-headers-$(uname -r) linux-image-$(uname -r)
```

After a reboot and restart of the cilium pods, cilium came up with a ready status on all pods. I later found a [github issue](https://github.com/cilium/cilium/issues/48016?ref=chrisjmccall.com) describing the problem, so I know it was not just me. Hopefully, by the time you are reading this a fix will have been applied and this is a problem of the past. 

### Good to Go?

These are quick steps to get this node up, but there is more configuration needed for how I would like this machine to function. I will write this up in another post so that this one can stay focused on Kubernetes.