Thứ Bảy, 15 tháng 5, 2021

[K8s] Kubernetes Object

 I. References

1. https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/

II. Các đối tượng của K8s (Kubernetes objects)

1. Định dạng

Sử dụng định dang Yaml 

2. K8sO lưu trữ các thông tin

- Ứng dụng container đang chạy là gì

- Tài nguyên cấp phát

- Các chính sách áp dụng cho ứng dụng: restart, update, khẳ năng chịu lỗi

K8sO có thể tạo, chỉnh sửa, xóa thông qua Kubernet API

3. Object Spec và Status (đặc tả và trạng thái object)

Hầu hết các K8sO đều gồm 2 object lồng bên trong là spec và status

- Spec: mô tả về thuộc tính object khi tạo

- Status: mô tả trạng thái hiện tại của Object

Tìm hiểu thêm về các thông tin spec, status, metadata có thể xem trong link sau K8s API Conventions

4. Mô tả một đối tượng K8sO

Thông thường khi sử dụng API để tạo Object, các thông tin được lưu dạng JSON trong request body. Khi dùng command kubectl thì các thông tin được lưu trong file .yaml , kubectl sẽ convert  thông tin sang dạng JSON khi thực hiện call API.

VD: file mẫu application/deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-deployment

spec:

  selector:

    matchLabels:

      app: nginx

  replicas: 2 # tells deployment to run 2 pods matching the template

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - name: nginx

        image: nginx:1.14.2

        ports:

        - containerPort: 80

 

 

Khi tạo Deployment sử dụng file .yaml tạ sử dụng lệnh:

 

kubectl apply -f https://k8s.io/examples/application/deployment.yaml --record

 

 

Output thành công như sau, với các thành phần mô tả trong file hiển thị màu highlight tương ứng như hình dưới.

 
deployment.apps/nginx-deployment created

 

 

5. Các trường bắt buộc trong file .yaml

·         apiVersion – version của API sử dụng để tạo object

·         kind loại object muốn tạo

·         metadata – Dữ liệu giúp xác định duy nhất đối tượng, bao gồm name, String UID, namespace (tùy chọn, nếu không ghi sẽ là default)

·         Spec – mô tả các thông tin mong muốn của Object khi chạy

Spec của object khác nhau với từng loại đối tượng K8s, chứa các trường lồng nhau và đặc tả khác nhau.

Bạn có thể tìm đặc tả cho từng loại object theo link sau: Kubernetes API Reference

VD: Đặc tả cho 1 POD: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#podspec-v1-core

-          Example: định dạng file yaml mẫu

-          apiVersion: v1 
o    Group : core (core thì không cần viết vào Apiversion)
o    Version: v1
-          Kind: Pod
-          Appears In:  Link liệt kê các Object chứa đặc tả này
 
Lưu ý: It is recommended that users create Pods only through a Controller, and not directly. See Controllers: DeploymentJob, or StatefulSet.

 

6. K8s API references gồm các thông tin:

-          Appears In: Link các object chứa Object này

-          Example: định dạng file yaml mẫu

 

 

-          Mô tả tên group, version, kind tương ứng, Group core không cần viết trong apiVersion:

-          FieldDescription: các field và description tương ứng.

Click vào các trường có link để chuyển sang mô tả tương ứng của trường đó.

VD: click và  PodSpec để biết mô tả các trường của PodSpec, các trường được đẩy lùi dòng theo cấu trúc của Yaml.