איך להתקין k3s יחד עם ה Dashboard על multipass
מולטיפאס הוא כלי להרצת מכונות לינוקס וירטואליות קטנות במהירות על מכונות Mac ו Windows. בין השאר אפשר להיעזר בו כדי לשחק עם קלאסטרים, כי קלאסטרים צריכים הרבה מכונות ועם מולטיפאס מאוד קל ליצור מכונות חדשות. בואו נלך להתקין קלאסטר של שלוש מכונות, מנוהל על ידי k3s (שהוא סוג של קוברנטיס פחות שמן), נתקין עליו את לוח הבקרה של Kubernetes וניגש לממשק הניהול מהמחשב המארח.
1. התקנת k3s על multipass
אני מתחיל עם המדריך כאן: https://andreipope.github.io/tutorials/create-a-cluster-with-multipass-and-k3s.html.
רק שבמקום להתקין את גירסה 18.04 אני מתקין את 22.04. כלומר נפעיל:
for f in {1..3}; do
multipass launch -c 1 -m 1G -d 4G -n k3s-$f 22.04
done
לאחר מכן מתקין מכונה ראשית על המכונה הראשונה שנוצרה:
multipass exec k3s-1 -- bash -c "curl -sfL https://get.k3s.io | sh -"
מושך את הטוקן וכתובת ה IP ומחבר אליו את שתי המכונות האחרות:
IP=$(multipass info k3s-1 | grep IPv4 | awk '{print $2}')
TOKEN=$(multipass exec k3s-1 sudo cat /var/lib/rancher/k3s/server/node-token)
for f in {2..3}; do
multipass exec k3s-$f -- bash -c "curl -sfL https://get.k3s.io | K3S_URL=\"https://$IP:6443\" K3S_TOKEN=\"$TOKEN\" sh -"
done
נוודא שהכל עובד:
$ multipass exec k3s-1 sudo kubectl get nodes
NAME STATUS ROLES AGE VERSION
k3s-1 Ready control-plane,master 2m48s v1.26.5+k3s1
k3s-2 Ready <none> 56s v1.26.5+k3s1
k3s-3 Ready <none> 46s v1.26.5+k3s1
2. התקנת לוח הבקרה
השלב הבא הוא התקנת ה Kubernetes Dashboard על הקלאסטר החדש שלנו. אני הולך לפי המדריך כאן: https://gist.github.com/jannegpriv/06427e4ecc2a17f317a4bebc32b6445c
קודם כל נכנס למכונה הראשונה:
multipass shell k3s-1
בתוך המכונה מריץ את הפקודות:
mkdir ~/k3s-dashboard
cd ~/k3s-dashboard
GITHUB_URL=https://github.com/kubernetes/dashboard/releases
VERSION_KUBE_DASHBOARD=$(curl -w '%{url_effective}' -I -L -s -S ${GITHUB_URL}/latest -o /dev/null | sed -e 's|.*/||')
sudo k3s kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/${VERSION_KUBE_DASHBOARD}/aio/deploy/recommended.yaml
ממשיך ליצירת שני קבצי ה yaml מתוך אותו מדריך:
# service-account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
# cluster-role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
ובסוף נתקין את שני הקבצים:
sudo k3s kubectl apply -f service-account.yaml
sudo k3s kubectl apply -f cluster-role.yaml
הדרכים המרכזיות לחשוף את ממשק הניהול החוצה למחשב המארח הן שימוש ב Proxy, שימוש ב Port Forwarding והתקנת Ingress Controller. אנחנו נשתמש ב Port Forwarding כי זה הכי פשוט.
נפעיל עדיין מתוך המכונה הוירטואלית:
sudo k3s kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8443:443 --address 0.0.0.0
ולאחר מכן נוכל מתוך המחשב המארח לגלוש לכתובת ה IP של המכונה הוירטואלית בפורט 8443 כדי להגיע לממשק הניהול. שימו לב שהדפדפן יתלונן על Certificate לא תקין (כי זה Self Signed של הקלאסטר). פשוט נדלג על האזהרה.
אחרי שיש לנו גישה נשאר לעבור את מסך החיבור. בשביל זה צריך לייצר טוקן עם הפקודה:
sudo k3s kubectl -n kubernetes-dashboard create token admin-user
מעתיקים את מה שהודפס למקום בטוח ומשתמשים בו כדי להתחבר לממשק הניהול.