יצירת kubernetes קלסטר בסיסי בקלות

מדריך ליצירת kubernetes קלסטר בסיסי בקלות

לא יודעים מה זה קוברנטיס? ליחצו כאן


פירוט השלבים:
שלב 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?



מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

התקנת kubeadm, kubelet ו kubectl בשרת Ubuntu 18 LTS

מה זה kubeadm?

kubeadm הוא כלי שמאפשר אוטומציה של חלק גדול של יצירת קלסטר, בתכלס – הופך את העבודה שלנו ביצירת קלסטר להרבה יותר קלה.

מה זה kubelet?

kubelet הוא שירות (Agent) שרץ בכל קוניינר שקיים בכל Node שלנו, כל שרת שיריץ קונטיינר זקוק לשירות kubelet.

מה זה kubectl?

kubectl הוא כלי command line שמאפשר לנו לתקשר עם הקלסטר (Cluster) שלנו ולנהל אותו.


על מנת להתקין את השירותים הנל, נריץ את הפקודות הבאות: (אני בחרתי להתקין את גירסת 1.12.7-00 , בהתאם לצורך שלכם – ייתכן ואתם תירצו להתקין גירסה אחרת.
שימו לב, במידה ותיבחרו להתקין גירסה מתקדמת יותר, עקבו אחרי ההוראות הנוספות בלינק הזה, הדבר העיקרי הוא שגירסאות מתקדמות יותר לא יעבדו טוב במידה ומוגדר לכם שטח SWAP במערכת ההפעלה, לכן יש קודם לבטל את הSWAP.)

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

sudo apt-get update

sudo apt-get install -y kubelet=1.12.7-00 kubeadm=1.12.7-00 kubectl=1.12.7-00

sudo apt-mark hold kubelet kubeadm kubectl

ולאחר מכן נוודא שההתקנה הצליחה על ידי הפקודה הבאה:

kubeadm version

סיימתם!


קצת הסברים

הפקודה הזאת מוסיפה את מפתח הPGP

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

הפקודה הזאת מוסיפה את הריפו לקובץ הsources שלנו במערכת.

cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

הפקודה הזאת מונעת מהשירותים הנל להתעדכן אוטומטית (במיקרה שלכם ייתכן ולא תירצו להריץ אותה)

sudo apt-mark hold kubelet kubeadm kubectl

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

איך מתקינים DOCKER באובונטו 18 LTS

איך להתקין DOCKER באובונטו 18 LTS

הפקודות הראשונות שנריץ הן:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update

sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu

sudo apt-mark hold docker-ce

ולאחר מכן נריץ את הפקודה הבאה על מנת לבדוק שDOCKER הותקן בהצלחה, הפקודה אמורה להציג לנו את מס הגירסה של הדוקר שהתקנו

sudo docker version

ככה פשוט!
לפרטים נוספים באתר Docker ליחצו כאן


קצת הסברים

בפקודה הזאת אנו מוסיפים את מפתח הPGP של החבילה

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

הפקודה הבאה מתקינה את גירסת הקהילה של DOCKER, אני בחרתי להתקין גירסה ספציפית – במקרה שלכם יכול להיות שתירצו להתקין גירסה אחרת

sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu

הפקודה הזאת מונעת עדכון אוטומטי של החבילה לגירסה אחרת – במיקרה שלכם, ייתכן ולא תירצו לעשות זאת

sudo apt-mark hold docker-ce

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

יצירת מפתח SSH בשרת אובונטו (או מערכת מבוססת Debian)

איך יוצרים מפתח SSH בשרת אובונטו

בשלב הראשון ניגש לתיקיית הSSH

cd ~/.ssh

ניתן לצפות במפתחות שכבר קיימים לנו על ידי הפקודה

ls -la

כדי ליצור לנו מפתח אימות חדש, נקליד את הפקודה

ssh-keygen

לאחר מכן נבחר שם למפתח, בדוגמה שלנו נקרא לו codecommit

בשלב הבא נתבקש להקליד סיסמא למפתח שלנו, אני ממליץ לבחור סיסמא למפתח, אבל במדריך הזה נבחר סיסמא ריקה.

יצירת מפתח SSH באובונטו

זהו! הפקודה יצרה לנו 2 מפתחות, מפתח ציבורי ומפתח פרטי.
במקרה של הדוגמה שלנו שם המפתח הציבורי שנוצר לנו הוא codecommit.pub.
ושם המפתח הפרטי שלנו הוא codecommit.

את המפתח הפרטי אנו שומרים אצלנו ושומרים עליו היטב, כיון שכל מי שתהי לו גישה למפתח שלנו בעצם יוכל לאמת את עצמו מול כל השירותים בהם הגדרנו את המפתח.

כדי לצפות במפתח הציבורי החדש שלנו נקליד את הפקודה

cat codecommit.pub

שמקרה שלי הוא משהו בסיגנון


ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpUdP1t0s1MdRratYzCSPsU6LydSF3z/ixMr7NZhfbiV3JOlgdWRpf84tF+r3/mm0IwkcwTF3oGm/GgoTYWnDMvpPtFZRHMdhzb6S4kdqyKBrqanWpI0De5i3WrCDbyvWJ1MeIKg24PORa48Yaao4errdPP7pz+ocJtmZ94vacSNnvQoneZOdW44OsnZLQHcLq5o4zBznUZPgCLlDNAbz829UAHgmeQxNtoBMCiZL7LmjkhOZ5eQ1WheBS0UbgPOoC4FeH76py+axbRaQWNnEOZIR3lzix2zO2gxnC0ThS9y8jcNo9Sa+kH/vfSb2RUgDBYo1wtBcRIZ2i78YxRGjT [email protected]

זה בעצם התוכן של המפתח הציבורי שלנו! ניתן להעתיק אותו ולעשות בו שימוש.

איך להתקין GIT בשרת אובונטו (Debian)

שלב ראשון, נריץ את הפקודה

sudo apt-get update && apt-get upgrade

אנו זקוקים להרשאות ROOT לכן נכתוב sudo בהתחלה, במידה ונתבקש להזין סיסמא – יש להזין אותה ולאשר. במידה וקיימים עדכונים נלחץ y על מנת להתקין אותם.

לאחר מכן נריץ את הפקודה

sudo apt-get install git

ונענה y להתקנה.

sudo apt-get install git

נוודא את ההתקנה ואת הגירסה שהותקנה על ידי הקלדת הפקודה:

git version
וזהו, ככה פשוט!

מצאתם טעות? הערות? שאלות? הסתדרתם? נתקעתם? כתבו לי בתגובות!

לאתר גיט: https://git-scm.com/download/linux

להמשיך לקרוא איך להתקין GIT בשרת אובונטו (Debian)