Các từ khóa cơ bản trong Kubernetes (k8s)

#6
Topic created · 1 Posts · 39 Views
  • Nguồn: https://medium.com/google-cloud/kubernetes-101-pods-nodes-containers-and-clusters-c1509e409e16

    I. Phần cứng

    1. Nodes

    Node là đơn vị phần cứng nhỏ nhất trong Kubernetes, hay còn hiểu là một máy chủ trong cluster. Trong phần lớn các hệ thống, một node giống như một máy chủ vật lý trong datacenter, hoặc một máy ảo trên hạ tầng cloud (ví dụ như Google Cloud Platform). Như trên hình vẽ, một node có thể là một chiếc máy tính, laptop hoặc thậm chí là một chiếc đồng hồ thông minh. Ngoài ra có thể dùng các thiết bị khác như một chiếc Raspberry PI chẳng hạn, cũng có thể là một node.

    2. Cluster

    Đơn giản, cluster là tập các nodes. Trong Kubernetes, các nodes sẽ kết hợp tài nguyên của chúng thành một cỗ máy có tài nguyên lớn hơn. Khi triển khai ứng dụng, cluster sẽ phân phối một cách thông minh đến các node đơn lẻ

    3. Persistent Volumes

    II. Phần mềm

    1. Pods

    Kubernetes không trực tiếp chạy các containers; mà nó sẽ wraps một hoặc nhiều containers trong một kiến trúc cấp cao hơn được gọi là pod. Các containers trong cùng một pod có thể dùng chung tài nguyên và mạng trong pod đó, và còn có thể giao tiếp dễ dàng với nhau.

    Các pods được dùng như một đơn vị của replicas trong Kubernetes. Nếu ứng dụng của bạn có lượng truy cập lớn và một pod không thể xử lý kịp thì Kubernetes có thể được cấu hình để deploy một replicas mới phục vụ việc san tải. Tính năng này hay được dùng mục đích load balancing.

    Pods có thể có nhiều containers, nhưng ko phải là vô hạn, vì liên quan đến việc scale up hay scale down pod thì tất cả các containers trong pod cũng phải scale theo thì rất tốn chi phí và không cần thiết.

    Có một ví dụ lấy trên mạng như sau:

    • backend: có 3 container: backend (chứa code php backend), nginx(cấu hình dành cho backend), fluentd (tool gửi log)
    • frontend: có 2 container: frontend (chứa code php frontend), nginx (cấu hình dành cho frontend), fluentd (tool gửi log)

    → Có thể triển khai thành 2 pods như sau:

    Có thể triển khai 2 pods cùng 1 node cũng được

    2. Replicas

    Replica Set đảm nhận vai trò tạo ra số lượng Pods giống nhau dựa vào yêu cầu và luôn luôn duy trì số lượng đó.
    Giả sử quy định replicas: 3 thì nó sẽ tạo ra 3 Pods giống nhau, giả sử 1 pod ở Node nào đó bị sự cố, nó sẽ tạo ra 1 Pod mới để duy trì số lượng là 3 như yêu cầu lúc đầu.

    3. Deployments

    Mặc dù pods là đơn vị cơ bản trong Kubernetes nhưng chúng ko trực tiếp được khởi chạy tỏng cluster. Các pods được quản lý bởi một lớp trừu tượng (layer of abstraction) nữa là: the deployment.

    Mục đính chính của một deployment định nghĩa số lượng replicas các pods có thể chạy trong cùng một thời điểm. Khi một deployment được add vào cluster, nó sẽ tự động khởi chạy đủ số lượng các pods và sẽ giám sát chúng. Nếu một pod nào đó mà down, deployment sẽ tự động khởi tạo và start pop mới lên.

    4. Ingress

    Using the concepts described above, you can create a cluster of nodes, and launch deployments of pods onto the cluster. There is one last problem to solve, however: allowing external traffic to your application.

    By default, Kubernetes provides isolation between pods and the outside world. If you want to communicate with a service running in a pod, you have to open up a channel for communication. This is referred to as ingress.

    There are multiple ways to add ingress to your cluster. The most common ways are by adding either an Ingress controller, or a LoadBalancer. The exact tradeoffs between these two options are out of scope for this post, but you must be aware that ingress is something you need to handle before you can experiment with Kubernetes.

Log in to reply