Skip to content

Instantly share code, notes, and snippets.

@mmguero
Last active July 31, 2025 21:13
Show Gist options
  • Select an option

  • Save mmguero/ad69869dfc0762fc0ab6e39326540026 to your computer and use it in GitHub Desktop.

Select an option

Save mmguero/ad69869dfc0762fc0ab6e39326540026 to your computer and use it in GitHub Desktop.
example for k3s deployment for single-node cluster

Setup

  1. install k3s
    • curl -sfL https://get.k3s.io | sh -
    • or
    • k3sup install --local --k3s-channel v1.33 --k3s-extra-args="--data-dir=/media/extra/k3s --kubelet-arg=root-dir=/media/extra/kubelet"
  2. sudo cp /etc/rancher/k3s/k3s.yaml /home/user/kubeconfig
  3. sudo chown user:user /home/user/kubeconfig
  4. install ingress-nginx
  5. kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=120s
  6. kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.15.2/config/manifests/metallb-native.yaml
  7. kubectl apply -f metallb-ip-pool.yaml
  8. kubectl apply -f whoami.yaml
  9. curl -kL https://whoami.k3sdemo.example.org

Debugging

  • kubectl get svc -n ingress-nginx
  • kubectl get ingress whoami-ingress
  • kubectl get ingress -A -o wide
  • kubectl get pods -n ingress-nginx
  • kubectl get pods -n metallb-system
  • kubectl get endpoints whoami
  • kubectl get pods -l app=whoami
  • kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx
  • kubectl logs -n metallb-system -l component=speaker
  • kubectl logs whoami-7457f5bd7-j79tl
---
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
namespace: metallb-system
name: demok3s-ip-pool
spec:
addresses:
- 192.168.0.218/32
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
namespace: metallb-system
name: demok3s-l2adv
spec:
ipAddressPools:
- demok3s-ip-pool
apiVersion: apps/v1
kind: Deployment
metadata:
name: whoami
labels:
app: whoami
spec:
replicas: 1
selector:
matchLabels:
app: whoami
template:
metadata:
labels:
app: whoami
spec:
containers:
- name: whoami
image: traefik/whoami:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: whoami
spec:
selector:
app: whoami
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: whoami-ingress
annotations: {}
spec:
ingressClassName: nginx
rules:
- host: whoami.sgroverk3s.nein.local
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: whoami
port:
number: 80
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment