bmson7112 / TTS-VTNet

1 stars 0 forks source link

Kubernetes core concepts: Part 3 - 4 #7

Open bmson7112 opened 1 year ago

bmson7112 commented 1 year ago

Networking

1. Within a pod.

2. Pod to pod

=> Bất tiện, khó khăn khi 1 pod chạy lại hoặc có vấn đề gì đó phải khởi động lại khiến cho việc kết nối với mạng khó khăn do thay đổi địa chỉ IP => Sử dụng Service.

3. Networking Service to pod

Khi triển khai service, các pod sẽ được dùng chung 1 địa chỉ IP, DNS

4. Kubernetes Service Type:

5. Resource organization

Storage, statefull app

1. Storage

2. StatefulSet

3. Image Configurability

4. ConfigMap

5. Secret

bmson7112 commented 1 year ago

So sánh Deployment với StatefulSet

  1. Deployment

    • Deployment là tài nguyên Kubernetes dễ dàng nhất và được sử dụng nhiều nhất để triển khai ứng dụng, cho phép quản lý vòng đời của các pod thông qua Replicaset.
    • Deployment chứa đặc tả (specification) cho một Pod và các thông tin thêm, như số lượng Pod để chạy. ReplicaSet được tạo khi Deployment được tạo hoặc được chỉnh sửa và ReplicaSet thật sự được dùng như định nghĩa để tạo Pod.

      image

  1. StatefulSet

    • Được sử dụng để quản lý các ứng dụng stateful, nó quản lý việc triển khai (deployment) và mở rộng (scaling) của một nhóm các Pod, đồng thời nó cũng cung cấp sự đảm bảo về thứ tự và tính duy nhất của các Pod này có nghĩa mỗi pod sẽ có 1 thứ tự cố định và tên riêng
    • StatefulSet cũng là một Controller nhưng không giống như Deployments, nó không tạo ReplicaSet mà chính nó tạo Pod với quy ước đặt tên duy nhất
    • Mỗi bản sao của StatefulSet sẽ có trạng thái riêng và nếu sử dụng PV mỗi Pod sẽ tạo PVC riêng, khi đấy mỗi pod sẽ có 1 volume riêng, sơ đồ miêu tả như hình bên dưới

      image

  2. Một số điểm mạnh mà StatefulSet hơn Deployment

    • Đảm bảo trạng thái: StatefulSet cho phép duy trì trạng thái của các pod được triển khai bằng cách gán một định danh duy nhất cho mỗi pod. Điều này giúp đảm bảo rằng các pod được triển khai và quản lý theo cách đồng bộ và tránh xung đột với các pod khác.
    • Triển khai tuần tự: StatefulSet triển khai các pod theo thứ tự, đảm bảo rằng mỗi pod mới chỉ được triển khai sau khi pod trước đó đã hoạt động thành công. Điều này đặc biệt hữu ích đối với các ứng dụng stateful, nơi mỗi pod có trạng thái riêng.
    • Khả năng mở rộng: StatefulSet có thể được mở rộng theo chiều ngang, cho phép triển khai thêm các pod mới để đáp ứng nhu cầu tăng cường khả năng xử lý và khả năng mở rộng ứng dụng.
    • Các ứng dụng stateful như cơ sở dữ liệu, các ứng dụng lưu trữ, các ứng dụng truyền thông liên kết (stateful communication), thường được triển khai bằng cách sử dụng StatefulSet.

Bên trong Container có gì? Nó thực chất là gì ?

bmson7112 commented 1 year ago
  1. Ingress

    • 1 API obiject quản lý các truy cập từ bên ngoài tới các service trong cụm, điển hình là HTTP
    • Cung cấp các phương pháp như load-balancing, SSL termination và name-based virtual hosting
    • ĐỊnh tuyến các luồng HTTP, HTTPS từ bên ngoài cluster tới các service. ĐỊnh tuyến lưu lượng truy cập được quản lý bởi các quy tắc mặc định của Ingress
    • Ingress nó sử dụng nhiều service và khi sử dụng nó thì người dùng ko chỉ đơn thuần truy cập 1 service. Đúng ra, nó là 1 bộ quy tắc, và việc lựa chọn sử dụng phương pháp xâm nhập định tuyến nào là tùy thuộc vào nhu cầu của người dùng
    • IngressController hoạt động ở layer 7, quy tắc hoạt động tùy thuộc vào caáu hình tài nguyên của ingress. Thằng external load-balancer định tuyến luồng truy câp đến service của cum k8s và được liên kết đến 1 địa chỉ IP cụ thể
    • IngressController sẽ tạo thêm 1 lớp trừu tượng và trafic routing, chấp nhận luu lượng truy cập từ bên ngoài k8s và cân bằng tải các pod chạy bên trong nó. Nó chuyển đổi các cấu hình từ tài nguyên của Ingress thành các quy tắc định tuyến mà reverse proxi có thể hiểu được và thực hiện. Nó theo dõi các tài nguyên trong 1 cụm và biến chúng thành trạng thái mà người dùng yêu cầu.
    • Nhìn chung thì về căn bản, load-balancer truyền các luồng truy cập đến 1 địa chỉ IP trong cụm, và sau đó, nhờ vào IngressController định tuyến các truy cập đó đến đúng với service
  2. Load Balancer

    • LoadBalancer hoạt động ở layer 4 và cả layer 7
    • ở layer 7, khi hoạt đọng, nó nhận tất cả request sau đó gửi tới service đc yêu cầu, từ đó có thể sử dụng lưu trữ cache, về sau quá trình truy cập sẽ đc sử dụng bố nhớ cache để trả về dữ liệu cho các request mà ko cần phải truy cập đến service
    • ở layer 4, khi nhận đc request thì lập tức truyển tải yêu cầu tới service do đó thì nó ko thể sử dụng lưu trữ cache,
    • Có 2 loại loadbalancer là internal loadbalancer và external loadbalancer
      • external loadbalancer hoạt động bằng cách điện tuyến ở bên ngoài internet trước sau đó với định tuyến vào bên trong nội bộ, Khi nó hoạt động thì thông tin kết nối, ip/ port / các giao tiếp của pod sẽ được hiển thị ra bên ngoài => tính an toàn ko đc cao
      • trái lại, nếu sử dụn tới internal loadbalancer thì thông tin của pod sẽ được giữ bí mật vì nó ko sử dụng public IP mà sử dụng 1 private subnet , phần còn lại sẽ không thể truy cập được từ internet, ngoài ra nếu sử dụng internal load-balancẻr thì lưu lượng truy cập sẽ ko đi ra ngoài internet trước do đó nó hđ nhanh hơn so với external