לא יודעים מה זה קוברנטיס? ליחצו כאן
פירוט השלבים:
שלב 1: התקנת DOCKER
שלב 2: התקנת kubeadm, kubelet ו kubectl
שלב 3: הפעלת המסטר נוד (Master Node) שלנו
שלב 4: צירוף 2 הNODES שלנו לקלסטר
שלב 5: הגדרות רשת עם Flannel
מכונה = Node
לשם ההדגמה אנו ניצור kubernetes קלסטר שמורכב מ3 מכונות , 2 מכונות שיהיו הNODES ומכונה אחת שתהיה הNode Master שלנו.
לשרת המסטר שלנו נקרא k8master , לשרת NODE הראשון נקרא k8node1 ולשני k8node2
ההפצה שבחרתי לעבוד איתה בהדגמה היא Ubuntu 18 LTS
בMASTER שלנו אנו נתקין:
* Docker
* Kubeadm
* Kubelet
* Kubectl
* Control Plane
בנודים שלנו נתקין:
* Docker
* Kubeadm
*Kybelet
*Kubectl
ולשם קישוריות רשת נשתמש בFlannel
השלב הראשון – התקנת DOCKER
השלב הראשון הוא להתקין DOCKER בכל אחת מהמכונות שלנו (במקרה שלנו 3 מכונות שמריצות אובונטו), להסבר איך להתקין ניתן ללחוץ כאן
השלב השני: התקנת kubeadm, kubelet ו kubectl
השלב השני הוא להתקין את השירותים הנל בכל אחת מהמכונות שלנו, להסבר כיצד ניתן להתקין אותם באובונטו ניתן ללחוץ כאן
השלב השלישי: הפעלת המסטר נוד (Master Node) שלנו
בשרת המסטר שלנו נריץ את הפקודה הבאה: (לוקח לה בדרכ כמה דקות עד שהפקודה מסיימת את הפעולה)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
אחרי כמה דקות, נקבל פלט שמכיל את הפקודה אותה אני נצטרך להריץ אחכ בכל Node שלנו על מנת שהוא יוכל להצטרף לקלסטר. חשוב לשמור את הפקודה ואת הטוקן – כי בלעדיו לא תוכלו לצרף Nodes לCluster שלכם. במקרה שלי הפלט שהתקבל הוא
kubeadm join 172.31.20.227:6443 --token k1vs3a.4i3zgo4zw725o3y7 --discovery-token-ca-cert-hash sha256:c94bb285d99e80c3674d8cc8951f957231b35431d5e0be982d4c0e9618156e06
לאחר מכן נריץ את הפקודה הבאה:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
ולבסוף נוודא שהכל בוצע במסטר שלנו על ידי הפקודה:
kubectl version
כאשר הפלט שאנו נקבל אמור להיות דומה ל:
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.7", GitCommit:"6f482974b76db3f1e0f5d24605a9d1d38fad9a2b", GitTreeState:"clean", BuildDate:"2019-03-25T02:52:13Z", GoVersion:"go1.10.8", Compi3f1e0f5d24605a9d1d38fad9a2b", GitTreeState:"clean", BuildDate:"2019-03-25T02:52:13Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"} dea457638b614ee17ef234dc34a6", GitTreeState:"clean", BuildDate:"2019-07-08T03:40:54Z", GoVersion:"go1.10.8", Comp
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.10", GitCommit:"e3c134023df5dea457638b614ee17ef234dc34a6", GitTreeState:"clean", BuildDate:"2019-07-08T03:40:54Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}
אם נריץ את הפקודה הבאה במסטר שלנו
kubectl get nodes
אנו אמורים לקבל פלט שמראה שרק המסטר שלנו הוא חלק מהקלסטר וזה כמובן בגלל שעוד לא צירפנו את 2 השרתים האחרים.
user@servername:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
servername.serverdomain.com NotReady master 4m3s v1.12.7
השלב הרביעי: צירוף 2 הNODES שלנו לקלסטר
בכל אחד מהשרתים האחרים שלנו, k8node1 ו k8node2 נריץ את הפקודה שקיבלנו (בשלב 3) מקודם שמכילה את הטוקן. במקרה שלי היא הייתה:
kubeadm join MYIPADDRESS:6443 --token k1vs3a.4i3zgo4zw725o3y7 --discovery-token-ca-cert-hash sha256:c94bb285d99e80c3674d8cc8951f957231b35431d5e0be982d4c0e9618156e06
אחרי שהרצנו את הפקודה ב2 השרתים (ייתכן ותתבקשו להוסיף sudo) נריץ בשרת הMaster שלנו (k8master) שוב את הפקודה הבאה:
user@servername:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
servername1.serverdomain.com NotReady master 10m v1.12.7
servername2.serverdomain.com NotReady <none> 40s v1.12.7
servername3.serverdomain.com NotReady <none> 85s v1.12.7
ושימו לב שהפעם המסטר שלנו מזהה את 2 השרתים האחרים, כולם עדיין בסטטוס של NotReady.
השלב החמישי: הגדרות רשת עם Flannel
לקריאה מקדימה על networking בקוברנטיס:
בכל 3 המכונות (Nodes) – כולל מכונת הMaster שלנו נריץ את הפקודות הבאות
echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
בשרת הMaster שלנו – ורק בו! נריץ את הפקודה הבאה:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/bc79dd1505b0c8681ece4de4c0d86c5cd2643275/Documentation/kube-flannel.yml
לאחר מכן, כשנריץ את הפקודה:
kubectl get nodes
שוב, אנו אמורים לראות את 3 המכונות שלנו אבל הפעם כולן יהיו בסטטוס Ready.
נוכל להריץ גם את הפקודה הבאה:
kubectl get pods -n kube-system
שתאפשר לנו לראות גם את הPods שקשורים לFlannel
זהו, סיימנו להגדיר. מזל טוב!
קריאה נוספת:
לאתר הבית של קוברנטיס לקריאה נוספת ליחצו כאן
מה זה Pod?
מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!