Triển khai ứng dụng đầu tiên (không trạng thái)

Nhập môn Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

Tìm hiểu thêm về "kubectl"

  • kubectl: lệnh chính để làm việc với các đối tượng Kubernetes
  • Đối tượng như pod, service, v.v.

$$

  • Cách dùng thường gặp:

    • kubectl create -f <Manifest.yml>: tạo đối tượng mới, -f là "filename"
    • kubectl apply -f <Manifest.yml>: tạo mới và áp dụng thay đổi trạng thái đối tượng
    • kubectl get <object>: xem tổng quan các đối tượng đã triển khai
    • kubectl describe <object>: thông tin chi tiết về một đối tượng

    $$

  • Trợ giúp chi tiết qua tùy chọn dòng lệnh --help

Nhập môn Kubernetes

Tìm hiểu thêm về Manifest

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25.4
        ports:
        - containerPort: 80
  • Lưu ý: Manifest là khai báo
  • Thường ở YAML, cũng có thể là JSON
  • Hai phần quan trọng:
    • metadata: thông tin cốt lõi về đối tượng/tài nguyên
    • spec: đặc tả/trạng thái mong muốn của đối tượng/tài nguyên
  • Các phần có thể lồng sâu, tùy tài nguyên cần triển khai
Nhập môn Kubernetes

Ứng dụng không trạng thái

  • Ứng dụng không trạng thái:

    • Khái niệm chung
    • Không chỉ riêng Kubernetes
    • Không lưu trạng thái nội bộ hay ngữ cảnh dữ liệu đã xử lý
  • Khi bị gián đoạn, một bản sao mới được tạo lại và tiếp tục chạy.

  • Ví dụ:
    • Giao diện database truy vấn backend database
    • Ứng dụng tìm kiếm truy vấn chỉ mục toàn văn
    • Ứng dụng luồng dữ liệu chuyển đổi nhiệt độ từ cảm biến IoT từ °F sang °C
Nhập môn Kubernetes

Kubernetes Deployments

  • "Ứng dụng không trạng thái" tương ứng với "Kubernetes Deployments"
  • Một Manifest mẫu gồm:
    • apiVersionkind
    • metadataspec
  • spec định nghĩa số replicas, selector, và template
  • Sẽ nói thêm về selector sau
  • template mô tả chi tiết tạo pod trong Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: <deployment name>
  labels:
    app: <a label for the application>
spec:
  replicas: <number of initial replicas>
  selector:
    matchLabels:
      app: <matches the label above>
  template:
    metadata:
      labels:
        app: <label to be given to each pod>
    spec:
      containers:
      - name: <container name>
        image: <the image to be used>
        ports:
        - containerPort: <ports for networking>
Nhập môn Kubernetes

Triển khai lên cụm Kubernetes

  • kubectl apply -f <manifest.yml> để tạo pod và áp dụng thay đổi.
  • Control Plane của Kubernetes sẽ lên lịch Deployment lên các Node.
    • Sau đó, Pods được tạo và khởi chạy trên các Node.
  • Mỗi Pod có một định danh duy nhất, ngẫu nhiên (khó đoán); mỗi Pod "tương đương nhau"
Nhập môn Kubernetes

Ayo berlatih!

Nhập môn Kubernetes

Preparing Video For Download...