spinny:~/writing $ vim introduction-to-kubernetes.md
1~2אם אתם עובדים בעולם פיתוח התוכנה, בוודאי שמעתם על Kubernetes. אבל מה בדיוק זה, ולמה הוא הפך לסטנדרט דה-פקטו לניהול יישומים מבוססי קונטיינרים? מדריך זה ייקח אתכם מהבסיס ועד למושגים היסודיים, עם דוגמאות מעשיות ודיאגרמות.3~4## לפני Kubernetes: קצת היסטוריה5~61. **פריסה מסורתית**: בתחילה, יישומים רצו על שרתים פיזיים. גישה זו הייתה יקרה, קשה להרחבה ונוטה לקונפליקטים של משאבים.72. **פריסה וירטואלית**: אחר כך הגיעו מכונות וירטואליות (VMs). VMs אפשרו ריבוי יישומים מבודדים לרוץ על אותו חומרה.83. **פריסה מבוססת קונטיינרים**: קונטיינרים (כמו Docker) הם השלב הבא. הם חולקים את אותה מערכת הפעלה אך מריצים תהליכים מבודדים. הם קלים, מהירים בהפעלה וניידים.9~10קונטיינרים פתרו את בעיית הניידות אך יצרו אחרת: כיצד לנהל מאות (או אלפי) קונטיינרים בסביבת ייצור?11~12כאן נכנס **Kubernetes**.13~14## מה זה Kubernetes?15~16Kubernetes (מקוצר לעתים קרובות ל-**K8s**) היא פלטפורמה בקוד פתוח לתזמור קונטיינרים. במילים פשוטות, היא מאפשרת אוטומציה של פריסה, הרחבה וניהול של יישומים מבוססי קונטיינרים.17~18## ארכיטקטורת אשכול Kubernetes19~20```mermaid21graph TD22 subgraph "Control Plane (Master)"23 A["API Server"]24 B["etcd"]25 C["Scheduler"]26 D["Controller Manager"]27 end28~29 subgraph "Worker Node 1"30 E["Kubelet"] --- F["Container Runtime"]31 G["Kube-proxy"]32 F --- H["Pod"]33 F --- I["Pod"]34 end35~36 subgraph "Worker Node 2"37 J["Kubelet"] --- K["Container Runtime"]38 L["Kube-proxy"]39 K --- M["Pod"]40 end41~42 A -- "Communicates with" --> E43 A -- "Communicates with" --> J44 User -- "kubectl" --> A45 C -- "Assigns Pods to Nodes" --> E46 D -- "Maintains state" --> A47 A -- "Saves/Reads state" --> B48```49~50### מישור הבקרה51~52מישור הבקרה הוא "המוח" של האשכול. רכיביו העיקריים:53~54- **API Server (`kube-apiserver`)**: שער הכניסה לאשכול.55- **etcd**: מסד נתונים עקבי וזמין גבוה מסוג מפתח-ערך.56- **Scheduler (`kube-scheduler`)**: מקצה Pods שנוצרו לאחרונה ל-Worker Nodes זמינים.57- **Controller Manager (`kube-controller-manager`)**: מריץ בקרים שעוקבים אחר מצב האשכול ומביאים אותו למצב הרצוי.58~59### Worker Node60~61ה-Worker Nodes הן המכונות שבהן היישומים רצים בפועל. כל node מכיל:62~63- **Kubelet**: סוכן שרץ על כל node.64- **Kube-proxy**: פרוקסי רשת המנהל כללי רשת.65- **Container Runtime**: התוכנה האחראית להרצת קונטיינרים.66~67## אובייקטים בסיסיים של Kubernetes68~69### Pod70~71ה-**Pod** הוא יחידת הביצוע הקטנה ביותר ב-Kubernetes.72~73### Deployment74~75```yaml76# nginx-deployment.yaml77apiVersion: apps/v178kind: Deployment79metadata:80 name: nginx-deployment81spec:82 replicas: 383 selector:84 matchLabels:85 app: nginx86 template:87 metadata:88 labels:89 app: nginx90 spec:91 containers:92 - name: nginx93 image: nginx:1.14.294 ports:95 - containerPort: 8096```97~98### Service99~100```mermaid101graph TD102 subgraph "Service (nginx-service)"103 A["ClusterIP: 10.96.0.10"]104 end105~106 subgraph "Pods"107 B("Pod 1 - IP: 192.168.1.2")108 C("Pod 2 - IP: 192.168.1.3")109 D("Pod 3 - IP: 192.168.1.4")110 end111~112 A -- "Selector: app=nginx" --> B113 A -- "Selector: app=nginx" --> C114 A -- "Selector: app=nginx" --> D115~116 Client -- "Request to nginx-service" --> A117```118~119```yaml120# nginx-service.yaml121apiVersion: v1122kind: Service123metadata:124 name: nginx-service125spec:126 selector:127 app: nginx128 ports:129 - protocol: TCP130 port: 80131 targetPort: 80132 type: ClusterIP133```134~135סוגי Service: `ClusterIP`, `NodePort`, `LoadBalancer`.136~137### Ingress138~139```mermaid140graph LR141 User -- "mysite.com/api" --> Ingress142 User -- "mysite.com/ui" --> Ingress143~144 subgraph "Cluster"145 Ingress -- "/api" --> ServiceA("api-service")146 Ingress -- "/ui" --> ServiceB("ui-service")147~148 ServiceA --> PodA1("API Pod 1")149 ServiceA --> PodA2("API Pod 2")150~151 ServiceB --> PodB1("UI Pod 1")152 ServiceB --> PodB2("UI Pod 2")153 end154```155~156### אובייקטים שימושיים נוספים157~158- **Namespace**: מאפשר ליצור "אשכולות וירטואליים" בתוך אשכול פיזי.159- **ConfigMap ו-Secret**: לניהול נתוני תצורה וסודות.160- **StatefulSet**: דומה ל-Deployment, אך ספציפי ליישומים בעלי מצב.161- **PersistentVolume (PV) ו-PersistentVolumeClaim (PVC)**: לניהול אחסון קבוע.162~163## סיכום164~165Kubernetes הוא כלי חזק להפליא. מה לעשות עכשיו?166- **התנסו מקומית**: התקינו [Minikube](https://minikube.sigs.k8s.io/docs/start/) או [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/).167- **השתמשו ב-`kubectl`**: היכרו עם הפקודה `kubectl`.168- **חקרו את המדריכים הרשמיים**: [תיעוד Kubernetes](https://kubernetes.io/docs/tutorials/) הוא משאב פנטסטי.169~170תזמור קונטיינרים הוא מיומנות יסודית בעולם ה-cloud-native, ושליטה ב-Kubernetes תפתח עולם של אפשרויות. בהצלחה!171~
NORMAL · introduction-to-kubernetes.md [readonly]171 lines · :q to close