לקריאה מקדימה:
* קצת על קוברנטיס
* מה זה Node וקלסטרינג בקוברנטיס
* מה זה POD?
* איך ליצור קוברנטיס קלסטר בסיסי בקלות?
קוברנטיס מאפשר לנו ליצור Virtual Network שפועל בכל הקלסטר שלנו, כל Pod בקלסטר מקבל כתובת IP ייחודית ויכול לתקשר עם כל pod אחר בקלסטר – גם במיקרה שהPod רץ בNode אחר.
קוברנטיס תומך במספר רב של תוספים (Plugins) של networking, ברוב ההדגמות בבלוג, אני עושה שימוש בתוסף שקוראים לו Flannel – כדי להתקין אותו עקבו אחר ההוראות שמופיעות כאן.
הקובץ Yaml הבא יוצר לדוגמה 3 Pods (להלן 3 רפליקות), כאשר כל POD יריץ קונטיינר (Docker) של Nginx
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.15.4
ports:
- containerPort: 80
אנו ניצור POD נוסף שיריץ busybox , באמצעותו נוכל לבדוק את הקישוריות שלנו בין הPODS השונים (נשתמש בCURL).
apiVersion: v1
kind: Pod
metadata:
name: avivbusybox
spec:
containers:
- name: avivbusybox
image: radial/busyboxplus:curl
args:
- sleep
- "2000"
לאחר מכן נריץ את הפקודה הבאה כדי לקבל רשימה של הPODS שלנו כולל כתובת הIP שלהם:
kubectl get pods -o wide
בשלב האחרון ננסה להריץ CURL מתוך הbusybox שלנו לכתובת הIP של הפודים האחרים שלנו, כאשר את ה00.00.00.00 אנו נחליף בכתובת הIP של הפוד אליו אתה רוצים לבצע את הCURL.
הפקודה kubectl exec busybox בעצם מריצה את הcurl 00.00.00.00 בתוך POD הbusybox שלנו.
kubectl exec busybox -- curl 00.00.00.00
במידה והצלחנו לבצע CURL וקיבלנו את עמוד הדיפולט של Nginx זה בעצם מוכיח, שPODS יכולים לתקשר בניהם, גם אם הם ממוקמים בNodes אחר ושההתקנה של Flannel בוצעה בהצלחה.
לקריאה נוספת:
* הגדרות רשת עם Flannel
* https://kubernetes.io/docs/concepts/cluster-administration/networking/
* https://kubernetes.io/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/
* https://github.com/coreos/flannel
מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!