kubernetest

Nhãn

Nhãn là các cặp khóa-giá trị được gắn vào nhóm, bộ điều khiển sao chép và dịch vụ. Chúng được sử dụng làm thuộc tính xác định cho các đối tượng như nhóm và bộ điều khiển sao chép. Chúng có thể được thêm vào một đối tượng tại thời điểm tạo và có thể được thêm vào hoặc sửa đổi tại thời điểm chạy.

Bộ chọn

Nhãn không cung cấp tính duy nhất. Nói chung, chúng ta có thể nói nhiều đối tượng có thể mang các nhãn giống nhau. Bộ chọn nhãn là nguyên thủy phân nhóm cốt lõi trong Kubernetes. Chúng được người dùng sử dụng để chọn một tập hợp các đối tượng.

API Kubernetes hiện hỗ trợ hai loại bộ chọn –

  • Bộ chọn dựa trên bình đẳng
  • Bộ chọn dựa trên bộ

Bộ chọn dựa trên bình đẳng

Chúng cho phép lọc theo khóa và giá trị. Các đối tượng phù hợp phải đáp ứng tất cả các nhãn được chỉ định.

Bộ chọn dựa trên bộ

Bộ chọn dựa trên bộ cho phép lọc các khóa theo một bộ giá trị.

Kubernetes - Nhãn & Bộ chọn
apiVersion: v1
kind: Service
metadata:
   name: sp-neo4j-standalone
spec:
   ports:
      - port: 7474
      name: neo4j
   type: NodePort
   selector:
      app: salesplatform ---------> 1
      component: neo4j -----------> 2

Trong đoạn mã trên, chúng tôi đang sử dụng bộ chọn nhãn làm ứng dụng: salesplatform và thành phần dưới dạng thành phần: neo4j .

Khi chúng tôi chạy tệp bằng lệnh kubectl , nó sẽ tạo một dịch vụ với tên sp-neo4j-standalone sẽ giao tiếp trên cổng 7474. Ype là NodePort với bộ chọn nhãn mới là ứng dụng: salesplatform và thành phần: neo4j .

Kubernetes – Không gian tên

Không gian tên cung cấp một tiêu chuẩn bổ sung cho tên tài nguyên. Điều này rất hữu ích khi nhiều nhóm đang sử dụng cùng một cụm và có khả năng xảy ra xung đột tên. Nó có thể như một bức tường ảo giữa nhiều cụm.

Chức năng của không gian tên

Sau đây là một số chức năng quan trọng của Không gian tên trong Kubernetes:

  • Không gian tên giúp giao tiếp nhóm với nhóm bằng cách sử dụng cùng một không gian tên.
  • Không gian tên là các cụm ảo có thể nằm trên cùng một cụm vật lý.
  • Chúng cung cấp sự tách biệt hợp lý giữa các đội và môi trường của họ.

Tạo không gian tên

Lệnh sau được sử dụng để tạo một không gian tên.

apiVersion: v1
kind: Namespce
metadata
   name: elk

Kiểm soát không gian tên

Lệnh sau được sử dụng để kiểm soát không gian tên.

$ kubectl create –f namespace.yml ---------> 1
$ kubectl get namespace -----------------> 2
$ kubectl get namespace <Namespace name> ------->3
$ kubectl describe namespace <Namespace name> ---->4
$ kubectl delete namespace <Namespace name>

Trong đoạn mã trên,

  • Chúng tôi đang sử dụng lệnh để tạo một không gian tên.
  • Điều này sẽ liệt kê tất cả các không gian tên có sẵn.
  • Thao tác này sẽ nhận được một không gian tên cụ thể có tên được chỉ định trong lệnh.
  • Điều này sẽ mô tả chi tiết đầy đủ về dịch vụ.
  • Thao tác này sẽ xóa một không gian tên cụ thể có trong cụm.

Sử dụng không gian tên trong dịch vụ – Ví dụ

Sau đây là một ví dụ về tệp mẫu để sử dụng không gian tên trong dịch vụ.

apiVersion: v1
kind: Service
metadata:
   name: elasticsearch
   namespace: elk
   labels:
      component: elasticsearch
spec:
   type: LoadBalancer
   selector:
      component: elasticsearch
   ports:
   - name: http
      port: 9200
      protocol: TCP
   - name: transport
      port: 9300
      protocol: TCP

Trong đoạn mã trên, chúng tôi đang sử dụng cùng một không gian tên trong siêu dữ liệu dịch vụ với tên của nai sừng tấm .

Kubernetes – Nút

Kubernetes - Nhãn & Bộ chọn

Một nút là một máy làm việc trong cụm Kubernetes, nó còn được gọi là một tay sai. Chúng là các đơn vị làm việc có thể là vật lý, máy ảo hoặc một phiên bản đám mây.

Mỗi nút có tất cả cấu hình bắt buộc cần thiết để chạy một nhóm trên đó, chẳng hạn như dịch vụ proxy và dịch vụ kubelet cùng với Docker, được sử dụng để chạy các vùng chứa Docker trên nhóm được tạo trên nút.

Chúng không được tạo bởi Kubernetes mà được tạo ra bên ngoài bởi nhà cung cấp dịch vụ đám mây hoặc trình quản lý cụm Kubernetes trên máy vật lý hoặc máy ảo.

Thành phần quan trọng của Kubernetes để xử lý nhiều nút là trình quản lý bộ điều khiển, chạy nhiều loại bộ điều khiển để quản lý các nút. Để quản lý các nút, Kubernetes tạo một đối tượng thuộc loại nút này sẽ xác thực rằng đối tượng được tạo là một nút hợp lệ. Dịch vụ với Bộ chọn

apiVersion: v1
kind: node
metadata:
   name: < ip address of the node>
   labels:
      name: <lable name>

Ở định dạng JSON, đối tượng thực được tạo ra trông như sau:

{
   Kind: node
   apiVersion: v1
   "metadata": 
   {
      "name": "10.01.1.10",
      "labels"
      {
         "name": "cluster 1 node"
      }
   }
}

Bộ điều khiển nút

Chúng là tập hợp các dịch vụ chạy trong Kubernetes master và liên tục giám sát nút trong cụm trên cơ sở metadata.name. Nếu tất cả các dịch vụ được yêu cầu đang chạy, thì nút đó được xác thực và một nhóm mới được tạo sẽ được bộ điều khiển gán cho nút đó. Nếu nó không hợp lệ, thì master sẽ không gán bất kỳ nhóm nào cho nó và sẽ đợi cho đến khi nó trở nên hợp lệ.

Kubernetes master đăng ký nút tự động, nếu cờ –register-node là true.

–register-node = true

Tuy nhiên, nếu quản trị viên cụm muốn quản lý nó theo cách thủ công thì điều đó có thể được thực hiện bằng cách chuyển sang –

–register-node = false

Kubernetes – Dịch vụ

Một dịch vụ có thể được định nghĩa là một tập hợp các nhóm hợp lý. Nó có thể được định nghĩa là một phần trừu tượng trên đầu nhóm cung cấp một địa chỉ IP và tên DNS duy nhất mà các nhóm có thể được truy cập. Với Service, rất dễ dàng quản lý cấu hình cân bằng tải. Nó giúp các nhóm mở rộng quy mô rất dễ dàng.

Một dịch vụ là một đối tượng REST trong Kubernetes mà định nghĩa của nó có thể được đăng lên Kubernetes apiServer trên Kubernetes master để tạo một phiên bản mới.

Dịch vụ không có bộ chọn

apiVersion: v1
kind: Service
metadata:
   name: dongthoigian_net_service
spec:
   ports:
   - port: 8080
   targetPort: 31999

Cấu hình trên sẽ tạo một dịch vụ với tên dongthoigian_net_service

Tệp cấu hình dịch vụ với bộ chọn

apiVersion: v1
kind: Service
metadata:
   name: dongthoigian_net_service
spec:
   selector:
      application: "My Application" -------------------> (Selector)
   ports:
   - port: 8080
   targetPort: 31999

Trong ví dụ này, chúng ta có một bộ chọn; vì vậy để chuyển lưu lượng truy cập, chúng ta cần tạo một điểm cuối theo cách thủ công.

apiVersion: v1
kind: Endpoints
metadata:
   name: dongthoigian_net_service

subnets:
   address:
      "ip": "192.168.168.40" -------------------> (Selector)
   ports:
      - port: 8080

Trong đoạn mã trên, chúng tôi đã tạo một điểm cuối sẽ định tuyến lưu lượng đến điểm cuối được định nghĩa là “192.168.168.40:8080”. Tạo dịch vụ đa cổng

apiVersion: v1
kind: Service
metadata:
   name: dongthoigian_net_service
spec:
   selector:
      application: “My Application” -------------------> (Selector)
   ClusterIP: 10.3.0.12
   ports:
      -name: http
      protocol: TCP
      port: 80
      targetPort: 31999
   -name:https
      Protocol: TCP
      Port: 443
      targetPort: 31998

Các loại dịch vụ

ClusterIP – Điều này giúp hạn chế dịch vụ trong cụm. Nó cho thấy dịch vụ trong cụm Kubernetes đã xác định.

spec:
   type: NodePort
   ports:
   - port: 8080
      nodePort: 31999
      name: NodeportService

NodePort – Nó sẽ hiển thị dịch vụ trên một cổng tĩnh trên nút được triển khai. Dịch vụ ClusterIP , mà dịch vụ NodePort sẽ định tuyến, được tạo tự động. Dịch vụ có thể được truy cập từ bên ngoài cụm bằng NodeIP: nodePort .

spec:
   ports:
   - port: 8080
      nodePort: 31999
      name: NodeportService
      clusterIP: 10.20.30.40

Load Balancer – Nó sử dụng bộ cân bằng tải của các nhà cung cấp đám mây. Các dịch vụ NodePort và ClusterIP được tạo tự động mà bộ cân bằng tải bên ngoài sẽ định tuyến.

Tệp yaml dịch vụ đầy đủ với loại dịch vụ là Node Port. Cố gắng tạo một cái cho mình.

apiVersion: v1
kind: Service
metadata:
   name: appname
   labels:
      k8s-app: appname
spec:
   type: NodePort
   ports:
   - port: 8080
      nodePort: 31999
      name: omninginx
   selector:
      k8s-app: appname
      component: nginx
      env: env_name

Kubernetes – Pod

Một nhóm là một tập hợp các vùng chứa và bộ lưu trữ của nó bên trong một nút của một cụm Kubernetes. Có thể tạo một nhóm với nhiều vùng chứa bên trong nó. Ví dụ: giữ một vùng chứa cơ sở dữ liệu và vùng chứa dữ liệu trong cùng một nhóm.

Các loại Pod

Có hai loại Vỏ –

  • Hộp chứa đơn
  • Nhiều thùng chứa

Hộp chứa đơn

Chúng có thể được tạo đơn giản bằng lệnh kubctl run, nơi bạn có một hình ảnh được xác định trên sổ đăng ký Docker mà chúng tôi sẽ kéo trong khi tạo nhóm.

$ kubectl run <name of pod> --image=<name of the image from registry>

Ví dụ – Chúng tôi sẽ tạo một nhóm với hình ảnh tomcat có sẵn trên trung tâm Docker.

$ kubectl run tomcat --image = tomcat:8.0

Điều này cũng có thể được thực hiện bằng cách tạo tệp yaml và sau đó chạy lệnh tạo kubectl .

apiVersion: v1
kind: Pod
metadata:
   name: Tomcat
spec:
   containers:
   - name: Tomcat
    image: tomcat: 8.0
    ports:
containerPort: 7500
   imagePullPolicy: Always

Khi tệp yaml ở trên được tạo, chúng tôi sẽ lưu tệp với tên là tomcat.yml và chạy lệnh tạo để chạy tài liệu.

$ kubectl create –f tomcat.yml

Nó sẽ tạo một pod với tên là tomcat. Chúng ta có thể sử dụng lệnh description cùng với kubectl để mô tả nhóm.

Nhiều vùng chứa

Nhiều nhóm vùng chứa được tạo bằng cách sử dụng thư yaml với định nghĩa của các vùng chứa.

apiVersion: v1
kind: Pod
metadata:
   name: Tomcat
spec:
   containers:
   - name: Tomcat
    image: tomcat: 8.0
    ports:
containerPort: 7500
   imagePullPolicy: Always
   -name: Database
   Image: mongoDB
   Ports:
containerPort: 7501
   imagePullPolicy: Always

Trong đoạn mã trên, chúng ta đã tạo một nhóm với hai vùng chứa bên trong nó, một cho tomcat và một cho MongoDB.

Kubernetes – Bộ điều khiển sao chép (xem thêm)

Trả lời