Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kubernetes

    Kubernetes trên Windows Server: Từ Docker Container đến Orchestration ở quy mô lớn

    Kubernetes là gì?


    Kubernetes (K8s) là nền tảng giúp điều phối Container Orchestration (mã nguồn mở) được phát triển bởi Google và hiện được Cloud Native Computing Foundation (CNCF) quản lý. Trong bài viết trước, chúng ta đã biết rằng nếu Docker giải quyết bài toán chạy một vài Container trên một máy chủ, thì Kubernetes giải quyết bài toán:
    • Chạy hàng trăm hoặc hàng nghìn Container
    • Tự động phân phối workload trên nhiều máy chủ
    • Tự động mở rộng (Scaling)
    • Tự phục hồi (Self-Healing)
    • Cập nhật ứng dụng mà không gián đoạn dịch vụ (Rolling Update)
    Theo một nghĩa nào đó, Kubernetes giống như một "hệ điều hành dành cho Data Center", chịu trách nhiệm quản lý toàn bộ các Container trong hạ tầng.

    Kubernetes Cluster là gì?


    Kubernetes hoạt động theo mô hình Cluster. Một Kubernetes Cluster sẽ bao gồm Master/Control Plane và Worker Nodes. Các Worker Nodes có thể là các máy chủ Linux Servers hoặc Windows Servers. Điều này cho phép doanh nghiệp chạy các ứng dụng đa nền tảng (Win/Linux) trong cùng một cụm Kubernetes.

    Master (Control Plane) là gì?


    Control Plane là "bộ não" của Kubernetes. Nó chịu trách nhiệm
    • Quản lý toàn bộ Cluster
    • Tiếp nhận yêu cầu triển khai ứng dụng
    • Quyết định Container sẽ chạy trên Node nào
    • Giám sát trạng thái của Cluster
    • Tự động khôi phục khi xảy ra lỗi
    Các thành phần của Control Plane

    kube-apiserver


    Là cổng giao tiếp trung tâm của Kubernetes. Mọi lệnh như kubectl apply, kubectl get, kubectl delete...đều đi qua API Server.

    Scheduler


    Scheduler quyết định Pod sẽ được triển khai trên Worker Node nào.
    Ví dụ trong tình huống Node A còn nhiều RAM còn Node B CPU đang quá tải, thì bộ định thời Scheduler sẽ chọn Node A để chạy workload.

    Controller Manager


    Có chức nằng liên tục giám sát trạng thái của Cluster. Ví dụ Người quản trị yêu cầu replicas = 3. Nếu một Pod bị lỗi, Controller sẽ tự động tạo Pod mới để luôn duy trì 3 Pod. Đây chính là cơ chế Self-Healing nổi tiếng của Kubernetes.

    Worker Node là gì?


    Worker Node là nơi thực tế chạy các ứng dụng Container.
    Mỗi Worker Node thường bao gồm:

    Kubelet


    Agent chạy trên từng Node. Nhiệm vụ là nhận chỉ thị từ Control Plane; Khởi động Container; Theo dõi Pod; Báo cáo trạng thái về Cluster.

    Kube-proxy


    Quản lý Network Services như Service IP, Load Balancing, Routing giữa các Pods...

    Container Runtime


    Chịu trách nhiệm chạy Container. Ví dụ như Docker, containerd, CRI-O.

    Kubernetes Pod là gì?


    Đây là khái niệm quan trọng nhất khi học Kubernetes. Kubernetes quản lý Pod, không quản lý Container trực tiếp. Pod là đơn vị triển khai nhỏ nhất trong Kubernetes. Một Pod có thể chứa một hoặc nhiều Container. Các Container bên trong cùng một Pod có thể chia sẻ Network Namespace hoặc chia sẻ phần dung lượng ổ cứng Storage. Nó cũng có thể giao tiếp với nhau thông qua qua localhost.

    Ví dụ về Pod


    Một ứng dụng Web có thể gồm:
    Container 1: Website Frontend
    Container 2: Logging Agent
    Container 3: Sidecar Proxy
    Tất cả có thể cùng nằm trong một Pod.

    Workload trong Kubernetes


    Một ứng dụng hiện đại thường không chỉ có một Container. Ví dụ:
    Hệ thống E-Commerce sẽ bao gồm Frontend Containers, Backend API Containers, Authentication Containers, Logging Containers, Monitoring Containers. Các Container này có thể được phân phối trên nhiều Worker Nodes khác nhau. Kubernetes sử dụng Pod để đóng gói và quản lý các workload này.

    Quy trình triển khai Kubernetes trên Windows

    Bước 1: Tạo Kubernetes Master


    Thông thường Control Plane được triển khai trên Linux.
    Công cụ phổ biến:
    kubeadm init
    Kubeadm giúp:
    • Khởi tạo Cluster
    • Tạo Control Plane
    • Quản lý Nodes
    Bước 2: Cấu hình Networking


    Kubernetes yêu cầu một giải pháp mạng hỗ trợ:
    • Pod-to-Pod Communication
    • Service Routing
    • Routable Cluster Subnets
    Các giải pháp phổ biến:
    • Flannel
    • Open vSwitch (OvS)
    • OVN
    • ToR Integration
    • Linux CNI Plugins
    Networking là một trong những phần phức tạp nhất khi triển khai Kubernetes On-Premises.

    Bước 3: Tham gia Worker Nodes


    Sau khi Control Plane được tạo, các Worker Nodes sẽ join Cluster:
    kubeadm join
    Worker Nodes có thể là Linux Server hoặc Windows Server.

    Bước 4: Triển khai và quản lý tài nguyên Kubernetes


    Sử dụng:
    kubectl
    Ví dụ:
    Tạo Deployment:
    kubectl apply -f app.yaml
    Xem Pods:
    kubectl get pods
    Xem Nodes:
    kubectl get nodes
    Xóa tài nguyên:
    kubectl delete deployment app

    Kubernetes trên Windows Server


    Microsoft chính thức hỗ trợ Windows Worker Nodes trong Kubernetes. Kubernetes 1.14 hỗ trợ Windows Server 2019, Windows Server version 1809 trở lên. Tuy nhiên chúng ta cần lưu ý:
    Windows Server hiện chỉ hỗ trợ vai trò Worker Node. Còn Control Plane vẫn chủ yếu chạy trên Linux. Mô hình phổ biến hiện nay:

    Linux Control Plane

    Windows Worker Nodes
    Linux Worker Nodes
    Điều này cho phép doanh nghiệp:
    • Chạy ứng dụng .NET Framework trên Windows Containers
    • Chạy Microservices Linux trong cùng Cluster
    • Từng bước hiện đại hóa hệ thống Legacy
    Tại sao nhiều doanh nghiệp chọn AKS thay vì tự triển khai Kubernetes?


    Triển khai Kubernetes On-Premises khá phức tạp. Chúng ta phải lo về Control Plane, Networking, Certificate, Upgrades, Security, High Availability, Storage Integration...Do đó nhiều doanh nghiệp lựa chọn Azure Kubernetes Service (AKS). AKS giúp quản lý Control Plane, vấn đề nâng cấp Upgrades, Monitoring, vấn đề mở rộng Scaling, vá lỗi Security Patching... Team IT tập trung vào ứng dụng thay vì quản lý hạ tầng Kubernetes.

    Tóm tắt bài Kubernetes trên Win.


    Kubernetes là nền tảng điều phối Container ở quy mô lớn, được xây dựng theo kiến trúc Cluster gồm Master/Control Plane và các Worker Nodes chạy trên Linux hoặc Windows. Thay vì quản lý Container trực tiếp, Kubernetes sử dụng Pod như đơn vị triển khai cơ bản, cho phép phân phối tải workload trên nhiều máy chủ và tự động hóa việc mở rộng, khôi phục và quản lý ứng dụng. Kể từ Kubernetes 1.14, Windows Server 2019 và Windows Server version 1809 trở lên được hỗ trợ như các Worker Nodes, mở ra khả năng chạy đồng thời Windows Containers và Linux Containers trong cùng một hệ sinh thái Kubernetes hiện đại.
    Cám ơn các bạn đã đọc.​
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X