Skip to content

Instantly share code, notes, and snippets.

@usrbinkat
Last active May 26, 2024 18:11
Show Gist options
  • Save usrbinkat/298d498bd70b715fece1f6cdc102aa24 to your computer and use it in GitHub Desktop.
Save usrbinkat/298d498bd70b715fece1f6cdc102aa24 to your computer and use it in GitHub Desktop.
RetroKube

Kubernetes 1.0 Build

How to build Kubernetes 1.0 in a Kubernetes 1.30 Kubevirt VM.

Download ISO from Canonical Vivid Archive

Write Dockerfile

FROM scratch
COPY ubuntu-15.04-server-amd64.iso /disk/ubuntu-15.04-server-amd64.iso

Build & Push image

~/Downloads/docker ❯ docker build --tag docker.io/containercraft/ubuntu:15.04-amd64-iso -f Dockerfile .
[+] Building 25.7s (5/5) FINISHED                                                                                                                    docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                                                                 0.0s
 => => transferring dockerfile: 158B                                                                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                                                    0.0s
 => => transferring context: 2B                                                                                                                                      0.0s
 => [internal] load build context                                                                                                                                    3.4s
 => => transferring context: 646.04MB                                                                                                                                3.4s
 => [1/1] COPY ubuntu-15.04-server-amd64.iso /disk/ubuntu-15.04-server-amd64.iso                                                                                     4.8s
 => exporting to image                                                                                                                                              17.5s
 => => exporting layers                                                                                                                                             14.1s
 => => exporting manifest sha256:cb2d2f83cbb794b345aea70e85624ee0942a448c87fe899fdace1bedb27fd88c                                                                    0.0s
 => => exporting config sha256:75779f2e385afd2342e9dcba813d7c55907fa31a353e9ec58931d6aa622da9ff                                                                      0.0s
 => => exporting attestation manifest sha256:e30f6ad28240b685a485047554ba48ee12859970ad09578a1f3fd95b8eb259ac                                                        0.0s
 => => exporting manifest list sha256:b739ac43087c3eb9262e12d591837e20dd1ac7363d0b23ab41806bfe3f828246                                                               0.0s
 => => naming to docker.io/containercraft/ubuntu:15.04-amd64-iso                                                                                                     0.0s
 => => unpacking to docker.io/containercraft/ubuntu:15.04-amd64-iso                                                                                                  3.3s

View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/qeptve9ywonzxdc72mol08qts

~/Downloads/docker 26s ❯ docker login docker.io --username katamo
Password:
Login Succeeded

~/Downloads/docker 7s ❯ docker push docker.io/containercraft/ubuntu:15.04-amd64-iso
The push refers to repository [docker.io/containercraft/ubuntu]
cbda8162ac39: Pushed
d79f881e536c: Pushed
15.04-amd64-iso: digest: sha256:b739ac43087c3eb9262e12d591837e20dd1ac7363d0b23ab41806bfe3f828246 size: 855
---
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: microk8s
namespace: kargo
labels:
app: microk8s
kubevirt.io/os: linux
spec:
running: true
dataVolumeTemplates:
- metadata:
name: microk8s-vda-root
namespace: kargo
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 128G
config:
featureGates:
- HonorWaitForFirstConsumer
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 128G
storageClassName: ceph-block-ssd
source:
registry:
url: "docker://quay.io/containercraft/ubuntu:21.04"
imagePullPolicy: IfNotPresent
persistentVolumeReclaimPolicy: Delete
storageClassName: ceph-block-ssd
volumeMode: Filesystem
template:
spec:
evictionStrategy: LiveMigrate
nodeSelector:
kargo-zone.containercraft.io/d: ""
domain:
cpu:
dedicatedCpuPlacement: false
model: host-passthrough
threads: 2
sockets: 1
cores: 6
resources:
requests:
memory: 32G
devices.kubevirt.io/kvm: "1"
limits:
memory: 32G
machine:
type: pc-q35-rhel8.3.0
devices:
autoattachPodInterface: false
autoattachSerialConsole: true
autoattachGraphicsDevice: true
networkInterfaceMultiqueue: true
rng: {}
disks:
- name: disk-vda-root
bootOrder: 1
disk:
bus: virtio
- name: cloudinitdisk
disk:
bus: virtio
interfaces:
- name: enp1s0
model: virtio
bootOrder: 2
bridge: {}
hostname: "microk8s"
networks:
- name: enp1s0
multus:
networkName: kargo-net-attach-def-br0
terminationGracePeriodSeconds: 0
volumes:
- name: disk-vda-root
dataVolume:
name: microk8s-vda-root
- name: cloudinitdisk
cloudInitNoCloud:
networkData: |
version: 2
ethernets:
enp1s0:
addresses:
- 192.168.1.15/24
dhcp4: false
dhcp6: false
gateway4: 192.168.1.1
nameservers:
addresses:
- 192.168.1.1
search:
- home.arpa
userData: |
#cloud-config
ssh_pwauth: true
chpasswd:
expire: False
list: |
ubuntu:ubuntu
users:
- default
- name: ubuntu
sudo: ['ALL=(ALL) NOPASSWD:ALL']
groups: sudo,microk8s,docker
shell: /bin/bash
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB/zPcAdyHRElufWDNQ1mZUWp4V9jDmaWX35ApsXgxfMHBuz3n8VLGVJuXodAAxeRbbE7Rws8BQcCH4DAMKKLHYZRdJtk3ZUw7rm0i/aq0wkeld7Yp6H/fv1ud3mudp7/+3fQ3gV8RmAO8+FS4jNBMciqtY6mWThKciwnkBWmH5atl6GsZ1ZQ+Y8+W4hXnaF6UEU1+xZ8ja+hu81a9fhejcV+m3RwT511kW5IXDe6wkq9tsIEC529VGI7XuySYvusbchivWYxmE+TBMmId3voGCfkl8hIemUG3/LvQWeK95B/6vBKDCFlmABn60zxrjPkdknWPbu4zg+VJWnslX+rDqSe2cBpHqQ8yDxegPcmXNKv2Qp0h8HhEljWoLc4U5x4hlceDraWBehj8i4N6p+Yt678+jUpOCwGC8z9l+zUrG6NPvbHZ2aIBC3eUteYPtmScNLvOiFASPo/9GQQDNqZclQZf5QGDToAV2rV1B4jJPV8fv/1rlgen6O1PNitKo9FlUfr0WA1IXev6CiJUt4x210BzhTlD84S2A0gHJRbeVVkjWKMx/vo/wqEKTg/vvzSOhFDDlKUxSsguL5rrtOxdGj4sUtjeVRuDjwk1u1DH8P75rI0R/1QaeDixJbRi8Q1315z+MrvJuvzJpMTieldqffNUnexMZcFox8yI8KlVt2U=
hostname: microk8s.home.arpa
runcmd:
- "systemctl enable iscsid"
- "snap install microk8s --classic"
- "sudo usermod -a -G microk8s ubuntu"
- "snap install kubectl --classic"
- "microk8s.enable dns dashboard helm3 openebs prometheus"
- "microk8s status --wait-ready"
- "mkdir -p /home/ubuntu/.kube"
- "microk8s kubectl config view --raw | sed 's/127.0.0.1/192.168.1.15/g' | tee /home/ubuntu/.kube/config"
- "chown -R ubuntu:ubuntu /home/ubuntu"
- "sudo usermod -a -G microk8s ubuntu"
- "sudo chown -f -R ubuntu ~/.kube"
- "microk8s.enable metallb:192.168.1.31-192.168.1.39"
- "microk8s status --wait-ready"
# - kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: truenas-scale
labels:
flavor: truenas
spec:
dataVolumeTemplates:
- metadata:
name: truenas-scale-volume-vda-root
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 32G
source:
blank: {}
- metadata:
name: truenas-scale-volume-vdb
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64G
source:
blank: {}
- metadata:
name: truenas-scale-volume-vdc
spec:
pvc:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 64G
source:
blank: {}
running: true
template:
spec:
domain:
clock:
timer: {}
utc: {}
cpu:
model: host-passthrough
threads: 6
devices:
rng: {}
autoattachGraphicsDevice: true
autoattachPodInterface: false
autoattachSerialConsole: true
disks:
- name: iso
bootOrder: 2
disk:
bus: sata
- name: truenas-scale-disk-vda-root
bootOrder: 1
disk:
bus: sata
- name: truenas-scale-disk-vdb
disk:
bus: virtio
- name: truenas-scale-disk-vdc
disk:
bus: virtio
interfaces:
- bridge: {}
model: virtio
name: enp1s0
features:
acpi:
enabled: true
smm:
enabled: true
firmware:
bootloader:
efi:
secureBoot: false
machine:
type: q35
resources:
requests:
devices.kubevirt.io/kvm: "1"
memory: 8G
hostname: truenas
networks:
- multus:
networkName: nadbr0
name: enp1s0
terminationGracePeriodSeconds: 0
volumes:
- name: iso
containerDisk:
image: docker.io/containercraft/truenas-scale:22021-iso
imagePullPolicy: IfNotPresent
- name: truenas-scale-disk-vda-root
dataVolume:
name: truenas-scale-volume-vda-root
- name: truenas-scale-disk-vdb
dataVolume:
name: truenas-scale-volume-vdb
- name: truenas-scale-disk-vdc
dataVolume:
name: truenas-scale-volume-vdc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment