spinny:~/writing $ less introduction-to-kubernetes.md
12Kung nagtatrabaho ka sa mundo ng software development, tiyak na narinig mo na ang Kubernetes. Pero ano ba talaga ito, at bakit ito naging de-facto standard para sa pamamahala ng mga containerized na application? Ang gabay na ito ay dadalhin ka mula sa mga pangunahing kaalaman hanggang sa mga pundamental na konsepto, na may mga praktikal na halimbawa at diagram.34## Bago ang Kubernetes: Kaunting Kasaysayan561. **Tradisyunal na Deployment**: Sa simula, ang mga application ay pinapatakbo sa mga pisikal na server.72. **Virtualized Deployment**: Pagkatapos ay dumating ang mga Virtual Machine (VM).83. **Containerized Deployment**: Ang mga Container (tulad ng Docker) ang susunod na ebolusyon.910Nalutas ng mga container ang problema sa portability pero gumawa ng bago: paano pamahalaan ang daan-daan (o libu-libo) na container sa isang production environment?1112Dito pumapasok ang **Kubernetes**.1314## Ano ang Kubernetes?1516Ang Kubernetes (madalas pinaikli bilang **K8s**) ay isang open-source na platform para sa container orchestration. Ina-automate nito ang deployment, scaling, at pamamahala ng mga containerized na application.1718## Arkitektura ng Kubernetes Cluster1920```mermaid21graph TD22 subgraph "Control Plane (Master)"23 A["API Server"]24 B["etcd"]25 C["Scheduler"]26 D["Controller Manager"]27 end2829 subgraph "Worker Node 1"30 E["Kubelet"] --- F["Container Runtime"]31 G["Kube-proxy"]32 F --- H["Pod"]33 F --- I["Pod"]34 end3536 subgraph "Worker Node 2"37 J["Kubelet"] --- K["Container Runtime"]38 L["Kube-proxy"]39 K --- M["Pod"]40 end4142 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```4950### Control Plane5152Ang Control Plane ang "utak" ng cluster:5354- **API Server (`kube-apiserver`)**: Ang gateway sa cluster.55- **etcd**: Consistent at highly available na key-value database.56- **Scheduler (`kube-scheduler`)**: Nagtatalaga ng mga bagong Pod sa mga available na Worker Node.57- **Controller Manager (`kube-controller-manager`)**: Nagpapatakbo ng mga controller.5859### Worker Node6061- **Kubelet**: Isang agent na tumatakbo sa bawat node.62- **Kube-proxy**: Network proxy na namamahala ng mga network rule.63- **Container Runtime**: Ang software na responsable sa pagpapatakbo ng mga container.6465## Mga Pundamental na Kubernetes Object6667### Pod6869Ang **Pod** ang pinakamaliit na unit ng execution sa Kubernetes.7071### Deployment7273```yaml74# nginx-deployment.yaml75apiVersion: apps/v176kind: Deployment77metadata:78 name: nginx-deployment79spec:80 replicas: 381 selector:82 matchLabels:83 app: nginx84 template:85 metadata:86 labels:87 app: nginx88 spec:89 containers:90 - name: nginx91 image: nginx:1.14.292 ports:93 - containerPort: 8094```9596### Service9798```mermaid99graph TD100 subgraph "Service (nginx-service)"101 A["ClusterIP: 10.96.0.10"]102 end103104 subgraph "Pods"105 B("Pod 1 - IP: 192.168.1.2")106 C("Pod 2 - IP: 192.168.1.3")107 D("Pod 3 - IP: 192.168.1.4")108 end109110 A -- "Selector: app=nginx" --> B111 A -- "Selector: app=nginx" --> C112 A -- "Selector: app=nginx" --> D113114 Client -- "Request to nginx-service" --> A115```116117```yaml118# nginx-service.yaml119apiVersion: v1120kind: Service121metadata:122 name: nginx-service123spec:124 selector:125 app: nginx126 ports:127 - protocol: TCP128 port: 80129 targetPort: 80130 type: ClusterIP131```132133Mga uri ng Service:134- `ClusterIP`: Ini-expose ang service sa cluster-internal na IP (default).135- `NodePort`: Ini-expose ang service sa static port sa bawat Worker Node.136- `LoadBalancer`: Gumagawa ng external load balancer sa cloud provider.137138### Ingress139140```mermaid141graph LR142 User -- "mysite.com/api" --> Ingress143 User -- "mysite.com/ui" --> Ingress144145 subgraph "Cluster"146 Ingress -- "/api" --> ServiceA("api-service")147 Ingress -- "/ui" --> ServiceB("ui-service")148149 ServiceA --> PodA1("API Pod 1")150 ServiceA --> PodA2("API Pod 2")151152 ServiceB --> PodB1("UI Pod 1")153 ServiceB --> PodB2("UI Pod 2")154 end155```156157```yaml158# example-ingress.yaml159apiVersion: networking.k8s.io/v1160kind: Ingress161metadata:162 name: example-ingress163spec:164 rules:165 - host: mysite.com166 http:167 paths:168 - path: /api169 pathType: Prefix170 backend:171 service:172 name: api-service173 port:174 number: 8080175 - path: /ui176 pathType: Prefix177 backend:178 service:179 name: ui-service180 port:181 number: 3000182```183184### Iba Pang Kapaki-pakinabang na Object185186- **Namespace**: Nagbibigay-daan sa iyo na lumikha ng "virtual cluster" sa loob ng pisikal na cluster.187- **ConfigMap at Secret**: Para sa pamamahala ng configuration data at mga lihim.188- **StatefulSet**: Katulad ng Deployment, ngunit para sa mga stateful na application.189- **PersistentVolume (PV) at PersistentVolumeClaim (PVC)**: Para sa pamamahala ng persistent storage.190191## Kongklusyon192193Ang Kubernetes ay isang napakalakas na tool, ngunit maaaring matarik ang learning curve nito.194195**Ano ang gagawin ngayon?**196- **Mag-eksperimento nang lokal**: I-install ang [Minikube](https://minikube.sigs.k8s.io/docs/start/) o [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/).197- **Gamitin ang `kubectl`**: Maging pamilyar sa `kubectl` command.198- **Tuklasin ang mga opisyal na tutorial**: Ang [Kubernetes documentation](https://kubernetes.io/docs/tutorials/) ay isang mahusay na resource.199200Ang container orchestration ay isang pundamental na kasanayan sa cloud-native na mundo, at ang pag-master sa Kubernetes ay magbubukas ng mundo ng mga posibilidad. Mag-enjoy!201
:Panimula sa Kubernetes: Ang Container Orchestratorlines 1-201 (END) — press q to close