Chuyển đến nội dung chính

Các thành phần Kubernetes.

Khi bạn triển khai Kubernetes, Kubernetes cluster được hình thành. 

Một Kubernetes cluster chứa một bộ các worker còn gọi là node. Bên trong những node này chạy các container, mỗi cluster có ít nhất một worker node. 

Những worker node chứa các ***POD, những POD này là những thành phần ứng dụng workload. 

Control plane quản lý các worker node và các POD trong một cluster. 

Trên môi trường sản phẩm, Control Plane thường chạy nhiều tính toán và nhiều nodes , nó có khả năng fault-tolerance* và high-availability**. 

Đây là các components trong một Kubernetes Cluster. 

Components of Kubernetes Architecture | by Gaurav Gupta | Medium

1.Các thành phần Control Plane: 

Các thành phần Control plane nó quyết định toàn cục của một cluster, cũng như phát hiện và phản hồi một sự kiện trong cluster. 

Các thành phần control plane có thể chạy bất kỳ trên máy nào trong cluster, Tuy nhiên để đơn giản, ta set up một đoạn code để start tất cả các thành phần control plane trong một một node và không chạy những ứng dụng dành cho người dùng trên node này.


How kubeadm Initializes Your Kubernetes Master - Ian Lewis

 + kube-apiserver

API Server là một thành phần của Kubernetes control plane, mà nó expose Kubernetes API, API Server là một lớp ngoài (front-end ) của Kubernetes Control Plane.

Thành phần triển khai chính của Kubernetes API Server là kube-apiserver, kube-apiserver được thiết kế để scale horizon ( nó sẽ scale thông qua việc tăng số lượng server )

Bạn có thể chạy 1 vài instance chạy kube-apiserver để cân bằng lưu lượng traffic trên các instance này. 

 + etcd: là nơi lưu trữ dữ liệu cố định và high-available dạng key-value của Kubernetes Cluster 

Nếu Kubernetes cluster sử dụng etcd để lưu trữ dữ liệu cluster thì bạn phải đảm bảo có phương án back up cho những dữ liệu này.


 + kube-scheduler: nó sẽ xem xét cho những Pods được sinh ra mới nhất chưa được gán cho 1 node nào, và chọn 1 node để pod sinh ra này chạy trên node đó.

Nhân tố lựa chọn quyết định cho scheduling là:

individual and collective resource requirements, hardware/software/policy constraints, affinity and anti-affinity specifications, data locality, inter-workload interference, and deadlines.   


 + kube-controller-manager: Control Plane chạy các controller process. 

Để giảm độ phực tạp các controller processes này được biên dịch và chạy trên một process duy nhất. 

Những controller này bao gồm : 

Node controller: Có trách nhiệm thông báo và trả lời khi một node down.

Replication Controller: Trách nhiệm cho việc bảo trì đảm bảo số lượng Pods luôn đúng cho mỗi object replication controller trong hệ thống.

Endpoints Controller: Ấn định đối tượng Endpoint

Service Account & Token Controller: Tạo một acount mặc định và token cho mỗi namespace mới.


 + cloud-controller-manager: cho phép liên kết cluster của bạn với cloud provider thông qua API, và phân tách những thành phần giao tiếp với cloud plalform, và những thành phần chỉ giao tiếp trong cluster của bạn, 

Cloud-controller-manager chỉ chạy các controller được ấn định với cloud provider, nếu bạn chạy kubernetes trong môi trường không cloud hay môi trường lab trên máy tính của bạn thì cluster của bạn không có cloud-controller-manager. 

Kubernetes Architecture. Kubernetes cluster consists of two main… | by  Krishna Chaitanya Sarvepalli | Medium

Các controller dưới có thể có trên các nhà cloud provider khác nhau: 

Node controller: Dành cho việc kiểm tra xem node có bị xoá hay không nếu một node nào đó không response.

Route Controller : Control những định tuyến đường đi trong hạ tầng cloud.

Service Controller: Cho việc tạo, cập nhật và xoá những load balancer của cloud provider.


res.cloudinary.com/practicaldev/image/fetch/s--...

2. Các thành phần Node:

Các thành phần node chạy trên mỗi node, bảo trì các pod đang chạy và cung cấp môi trường runtime của Kubernetes. 

Kubelet :là một service trạm chạy trên mỗi node của cluster. Nó đảm bảo rằng các container đó đang chạy trong Pod.

Kubelet là một thiết lập dựa vào thông số PodSpecs được cung cấp qua các thuật toán khác nhau và đảm bảo rằng các container được mô tả trong PodSpecs đang chạy và sống sót(healthy)

Kubelet không quản lý các container mà không được tạo bằng Kubernetes. 

Kube-proxy: là một thành phần mạng proxy đang chạy trên mỗi node trong cluster. Triển khai một phần  khái niệm dịch vụ Kubernetes

Kube-proxy bảo trì những rule về network trên các nodes. Những luật về network cho phép các giao tiếp mạng đến các Pods từ các phiên network ở trong cluster hoặc ngoài cluster. 

Kube-proxy sử dụng package filtering của tầng OS 

Container Runtime: là phần mềm có trách nhiệm cho các container chạy. 

Kubernetes hỗ trợ một vài container runtime như sau: docker, containerd, CRI-O, và một vài implementation của Kubernetes CRI (Container Runtime Interface )


Kubeflow 1.0 Machine Learning Toolkit for Kubernetes Goes Live -- ADTmag


3. Các Addons

Addons sử dụng tài nguyên của Kubernetes (DaemonSet, Deployment, ... )để triển khai những tính năng của cluster, bời vì chúng được cung cấp tính năng ở tầng cluster level, namespace cho những resource addons có tên là kube-system namespace.

3.1 DNS 

Cluster DNS là một DNS server, nó chứa các DNS record cho các dịch vụ Kubernetes. 

Các container được started bởi Kubernetes cluster một cách tự động, nó sẽ bao gồm start DNS server trong đó.

3.2 Web UI (Dashboard) là một web UI của Kubernetes Cluster dùng cho việc quản lý chung, cho phép user quản lý và troubleshooting ứng dụng chạy trên cluster cũng như cluster chính nó.

3.3 Container Resource Monitoring 

Lưu trữ những metric theo dạng time series chung của các container trong một database tập trung và cung cấp môt UI để xem các dữ liệu đó ví dụ như : ELK, Promtheus, ... 

3.4 Cluster Level Logging

 Là kỹ thuật có chức năng lưu trữ của các log container một cách tập trung có khả năng tìm kiếm/ xem xét log một cách dễ dàng nhất. Như bộ ELK, Prometheus,.v..v.. 


*fault-tolerance: khả năng không gây dán đoạn của hệ thống khi một điểm bị lỗi.

**high-availability: tính khả dụng cao (giảm thiểu khả năng downtime của hệ thống đang vận hành)

***POD: đơn vị triển khai nhỏ nhất của Kubernetes. 







Nhận xét

Bài đăng phổ biến từ blog này

Cách sử dụng sys.argv trong python.

Cách sử dụng sys.argv trong python.

sys.argv là môt danh sách [list] trong python, nó được sư dụng khi bạn chạy một lệnh command-line nào đó trên hệ thống.
Và argument này được đẩy vào script python để thực thi khi chạy câu lệnh.

Ví dụ: python sys.argv arg1 arg2

Trước tiên bạn phải import mô đun sys trong script.



import sys print"This is the name of the script: ", sys.argv[0]print"Number of arguments: ", len(sys.argv)print"The arguments are: ", str(sys.argv)

Tên của script này : sysargv.py
Số lượng arg là : 1
Arg là : ['sysargv.py']


python test1020.py 111 This is the name of the script:  test1020.py
Number of arguments:  2
The arguments are:  ['test1020.py', '111']

Thiết kế một RESTful API bằng python và flask.

Như các bạn đã biết thì REST viết tắt bởi REpresentational State Transfer. Bạn có thể tham khảo thêm ở đây.

Vậy REST là gì:

Có 6 yếu tố của REST như sau:

1. Client-Server: phía server side phục vụ như một service còn phía client sẽ dùng service này.

2.Stateless:  Mỗi request từ client phải chứa tất cả các thông tin mà phía server yêu cầu phải có. Nói nôm na là mỗi request chứa các thông tin riêng rẽ không liên quan đến những request khác.

3. Cacheable : Phía server side phải cảnh báo chỉ ra cho client side biết là request đó có cache hay không.

4. Hệ thống phân lớp: Giao tiếp giữa server side và client side có thể thông qua lớp trung gian ở giữa để trả lời các request được gọi mà không cân phía client phải làm những động tác khác nữa.

5. Các cổng giao tiếp là giống nhau : Các phương thức giao tiếp giữa client và server là khuôn mẫu giống nhau.

6. Mã code linh động. Phía server có thể thực thi cho môt API gọi duy nhất mà không ảnh hưởng tới các API khác.

RESTful web service là gì :

Kiế…

Cài đặt docker trên windows server 2016.

1. Cài đặt Windows Server 2016 Container Feature:  Mở PowerShell : Cài đặt các container feature dùng powershell: Dùng lệnh: InstallWindowsFeature containers Restart lại windows: 2. Cài đặt windows server 2016 base image:  Cài đặt mô đun : ContainerImage Dùng lệnh: Install-PackageProvider ContainerImage -force List các image có giá trị: Cài đặt Windows Server Core : 3. Cài đặt docker trên windows server 2016. Download script để cài đặt docker : Chạy script : Kiểm tra các image có trên server :