Kubernetes 11

Chính sách mạng xác định cách các nhóm trong cùng một không gian tên sẽ giao tiếp với nhau và điểm cuối của mạng. Nó yêu cầu các phần mở rộng / v1beta1 / networkpolicies được bật trong cấu hình thời gian chạy trong máy chủ API. Các tài nguyên của nó sử dụng các nhãn để chọn các nhóm và xác định các quy tắc để cho phép lưu lượng truy cập đến một nhóm cụ thể ngoài nhóm được xác định trong không gian tên. Đầu tiên, chúng ta cần cấu hình Chính sách cách ly không gian tên. Về cơ bản, loại chính sách mạng này được yêu cầu trên bộ cân bằng tải.

kind: Namespace
apiVersion: v1
metadata:
   annotations:
      net.beta.kubernetes.io/network-policy: |
      {
         "ingress": 
         {
            "isolation": "DefaultDeny"
         }
      }
$ kubectl annotate ns <namespace> "net.beta.kubernetes.io/network-policy = 
{\"ingress\": {\"isolation\": \"DefaultDeny\"}}"

Khi không gian tên được tạo, chúng ta cần tạo Chính sách mạng.

Chính sách mạng Yaml

kind: NetworkPolicy
apiVersion: extensions/v1beta1
metadata:
   name: allow-frontend
   namespace: myns
spec:
   podSelector:
      matchLabels:
         role: backend
   ingress:
   - from:
      - podSelector:
         matchLabels:
            role: frontend
   ports:
      - protocol: TCP
         port: 6379

Kubernetes – API

Kubernetes API đóng vai trò là nền tảng cho lược đồ cấu hình khai báo cho hệ thống. Công cụ dòng lệnh Kubectl có thể được sử dụng để tạo, cập nhật, xóa và lấy đối tượng API. Kubernetes API đóng vai trò giao tiếp giữa các thành phần khác nhau của Kubernetes.

 API vào Kubernetes

Thêm API vào Kubernetes

Việc thêm một API mới vào Kubernetes sẽ bổ sung thêm các tính năng mới cho Kubernetes, điều này sẽ làm tăng chức năng của Kubernetes. Tuy nhiên, bên cạnh đó nó cũng sẽ làm tăng chi phí và khả năng bảo trì của hệ thống. Để tạo ra sự cân bằng giữa chi phí và độ phức tạp, có một số bộ được xác định cho nó.

API đang được thêm vào sẽ hữu ích cho hơn 50% người dùng. Không có cách nào khác để triển khai chức năng trong Kubernetes. Các trường hợp ngoại lệ được thảo luận trong cuộc họp cộng đồng của Kubernetes, và sau đó API được thêm vào.

Thay đổi API

Để tăng khả năng của Kubernetes, các thay đổi liên tục được đưa vào hệ thống. Nhóm Kubernetes thực hiện để thêm chức năng vào Kubernetes mà không xóa hoặc ảnh hưởng đến chức năng hiện có của hệ thống.

Để chứng minh quy trình chung, đây là một ví dụ (giả định) –

  • Người dùng ĐĂNG một đối tượng Pod lên / api / v7beta1 / …
  • JSON không được quản lý thành cấu trúc v7beta1.Pod
  • Giá trị mặc định được áp dụng cho v7beta1.Pod
  • V7beta1.Pod được chuyển đổi thành cấu trúc api.Pod
  • Api.Pod được xác thực và mọi lỗi sẽ được trả lại cho người dùng
  • Api.Pod được chuyển đổi thành v6.Pod (vì v6 là phiên bản ổn định mới nhất)
  • V6.Pod được sắp xếp thành JSON và được ghi vào etcd

Bây giờ chúng ta đã lưu trữ đối tượng Pod, người dùng có thể NHẬN đối tượng đó trong bất kỳ phiên bản API nào được hỗ trợ. Ví dụ –

  • Người dùng NHẬN Pod từ / api / v5 / …
  • JSON được đọc từ etcd và không được quản lý thành cấu trúc v6.Pod
  • Giá trị mặc định được áp dụng cho v6.Pod
  • V6.Pod được chuyển đổi thành cấu trúc api.Pod
  • Api.Pod được chuyển đổi thành cấu trúc v5.Pod
  • V5.Pod được sắp xếp thành JSON và được gửi đến người dùng

Hàm ý của quá trình này là các thay đổi API phải được thực hiện cẩn thận và tương thích ngược.

Phiên bản API

Để hỗ trợ nhiều cấu trúc dễ dàng hơn, Kubernetes hỗ trợ nhiều phiên bản API, mỗi phiên bản API khác nhau tại các đường dẫn API khác nhau, chẳng hạn như / api / v1 hoặc / apsi / extensions / v1beta1

Các tiêu chuẩn lập phiên bản tại Kubernetes được xác định theo nhiều tiêu chuẩn.

Cấp độ Alpha

  • Phiên bản này chứa alpha (ví dụ: v1alpha1)
  • Phiên bản này có thể có lỗi; phiên bản đã kích hoạt có thể có lỗi
  • Hỗ trợ cho lỗi có thể bị loại bỏ bất kỳ lúc nào.
  • Chỉ được khuyến nghị sử dụng trong thử nghiệm ngắn hạn vì hỗ trợ có thể không có mặt mọi lúc.

Cấp độ Beta

  • Tên phiên bản chứa beta (ví dụ: v2beta3)
  • Mã được kiểm tra đầy đủ và phiên bản được kích hoạt được cho là ổn định.
  • Hỗ trợ của tính năng sẽ không bị bỏ; có thể có một số thay đổi nhỏ.
  • Chỉ được đề xuất cho các mục đích sử dụng không quan trọng trong kinh doanh vì khả năng xảy ra các thay đổi không tương thích trong các bản phát hành tiếp theo.

Mức độ ổn định

  • Tên phiên bản là vX trong đó X là một số nguyên.

Phiên bản ổn định của các tính năng sẽ xuất hiện trong phần mềm đã phát hành cho nhiều phiên bản tiếp theo.

Kubernetes – Kubectl

Kubectl là tiện ích dòng lệnh để tương tác với Kubernetes API. Nó là một giao diện được sử dụng để giao tiếp và quản lý các nhóm trong Kubernetes cluster.

Người ta cần thiết lập kubectl thành cục bộ để tương tác với Kubernetes cluster.

Đặt Kubectl

Tải tệp thực thi xuống máy trạm cục bộ bằng lệnh curl.Trên Linux

$ curl -O https://storage.googleapis.com/kubernetesrelease/
release/v1.5.2/bin/linux/amd64/kubectl

Trên máy trạm OS X

$ curl -O https://storage.googleapis.com/kubernetesrelease/
release/v1.5.2/bin/darwin/amd64/kubectl

Sau khi quá trình tải xuống hoàn tất, hãy di chuyển các tệp nhị phân trong đường dẫn của hệ thống

$ chmod +x kubectl
$ mv kubectl /usr/local/bin/kubect

Định cấu hình Kubectl

Sau đây là các bước để thực hiện thao tác cấu hình.

$ kubectl config set-cluster default-cluster --server = https://${MASTER_HOST} --
certificate-authority = ${CA_CERT}

$ kubectl config set-credentials default-admin --certificateauthority = ${
CA_CERT} --client-key = ${ADMIN_KEY} --clientcertificate = ${
ADMIN_CERT}

$ kubectl config set-context default-system --cluster = default-cluster --
user = default-admin
$ kubectl config use-context default-system
  • Thay thế $ {MASTER_HOST} bằng địa chỉ hoặc tên nút chính được sử dụng trong các bước trước.
  • Thay thế $ {CA_CERT} bằng đường dẫn tuyệt đối đến ca.pem đã tạo ở các bước trước.
  • Thay thế $ {ADMIN_KEY} bằng đường dẫn tuyệt đối đến admin-key.pem đã tạo ở các bước trước.
  • Thay thế $ {ADMIN_CERT} bằng đường dẫn tuyệt đối đến admin.pem đã tạo ở các bước trước.

Xác minh thiết lập

Để xác minh xem kubectl có hoạt động tốt hay không, hãy kiểm tra xem ứng dụng Kubernetes có được thiết lập chính xác hay không

$ kubectl get nodes

NAME       LABELS                                     STATUS
Vipin.com  Kubernetes.io/hostname = vipin.mishra.com    Ready

Kubernetes – Lệnh Kubectl (xem thêm)

Trả lời