Cách truy cập Kubernetes từ xa

[ad_1]

Sửa máy tính tại nhà TPHCM

Cần gỡ lỗi một ứng dụng đang chạy bên trong cụm Kubernetes của bạn? Chuyển tiếp cổng là một cách để kết nối với các Pod không thể truy cập công khai. Bạn có thể sử dụng kỹ thuật này để kiểm tra cơ sở dữ liệu, công cụ giám sát và các ứng dụng khác mà bạn muốn triển khai nội bộ mà không có đường dẫn công khai.

Chuyển tiếp cổng được tích hợp vào Kubectl. CLI có thể bắt đầu các phiên đào đường hầm chuyển hướng lưu lượng truy cập trên các cổng cục bộ đến các Pod trong cụm Kubernetes của bạn. Đây là cách thiết lập nó.

Cách thức hoạt động của chuyển tiếp cổng

Chuyển tiếp cổng là một loại quy tắc dịch địa chỉ mạng (NAT) định tuyến lưu lượng truy cập từ mạng này sang mạng khác. Trong ngữ cảnh của Kubernetes, các yêu cầu dường như được chấm dứt bởi localhost được chuyển hướng đến mạng nội bộ của cụm của bạn.

Giao nhận cảng chỉ hoạt động ở cấp cảng. Bạn chỉ đạo một cổng cụ thể như 33060 đến một cổng mục tiêu chẳng hạn như 3306 trong mạng đích. Khi bạn gửi lưu lượng truy cập đến cổng địa phương của bạn 33060nó sẽ được chuyển tiếp tự động đến cổng 3306 ở đầu từ xa.

Kỹ thuật này cho phép bạn truy cập các khối lượng công việc Kubernetes riêng tư không bị NodePort, Ingress hoặc LoadBalancer tiết lộ. Bạn có thể hướng lưu lượng truy cập cục bộ vào thẳng cụm của mình, loại bỏ nhu cầu tạo các dịch vụ Kubernetes cho khối lượng công việc nội bộ của bạn. Điều này giúp giảm bề mặt tấn công của bạn.

Triển khai một ứng dụng mẫu

Bây giờ chúng ta hãy xem chuyển tiếp cổng Kubernetes đang hoạt động. Bắt đầu bằng cách tạo một triển khai cơ bản mà bạn sẽ kết nối với việc sử dụng chuyển tiếp cổng trong phần tiếp theo.

Chúng tôi đang sử dụng Pod cơ sở dữ liệu MySQL làm ví dụ thực tế về thời điểm bạn có thể cần sử dụng kỹ thuật này. Cơ sở dữ liệu thường không được hiển thị công khai nên quản trị viên Kubernetes thường sử dụng chuyển tiếp cổng để mở kết nối trực tiếp.

Tạo tệp YAML để triển khai của bạn:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql:8.0
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: mysql

Đảm bảo rằng bạn thay đổi giá trị của MYSQL_ROOT_PASSWORD biến môi trường trước khi sử dụng tệp kê khai này trong sản xuất. Chạy kubectl apply để tạo triển khai MySQL của bạn:

$ kubectl apply -f mysql.yaml
deployment.apps/mysql created

Tiếp theo sử dụng get pods lệnh để kiểm tra khối lượng công việc đã bắt đầu thành công:

$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
mysql-5f54dd5789-t5fzc   1/1     Running   0          2s

Sử dụng Kubectl để chuyển tiếp đến Kubernetes

Mặc dù MySQL hiện đang chạy trong cụm của bạn, nhưng bạn không có cách nào để truy cập nó từ bên ngoài. Tiếp theo, hãy thiết lập phiên chuyển tiếp cổng để bạn có thể sử dụng cài đặt cục bộ của mình các công cụ như mysql CLI để kết nối với cơ sở dữ liệu của bạn.

Đây là một ví dụ đơn giản:

$ kubectl port-forward deployment/mysql 33060:3306
Forwarding from 127.0.0.1:33060 -> 3306
Forwarding from [::1]:33060 -> 3306

Các kết nối đến cổng 33060 sẽ được chuyển hướng đến cổng 3306 đối với Pod đang chạy triển khai MySQL của bạn. Bây giờ bạn có thể bắt đầu một phiên shell MySQL nhắm mục tiêu cơ sở dữ liệu của bạn trong Kubernetes:

$ mysql --host 127.0.0.1 --port 33060 -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 10
Server version: 8.0.29 MySQL Community Server - GPL

Giữ cửa sổ shell đang chạy kubectl port-forward mở lệnh trong suốt phiên gỡ lỗi của bạn. Chuyển tiếp cổng sẽ bị chấm dứt khi bạn nhấn Ctrl + C hoặc đóng cửa sổ.

Thay đổi số cổng cục bộ và từ xa

Cú pháp cho các ràng buộc số cổng là local:remote. Các 33060:3306 ví dụ được hiển thị ở trên bản đồ cổng 33060 trên localhost đến 3306 trong Pod mục tiêu.

Chỉ xác định một số, không có dấu hai chấm, sẽ diễn giải nó là cả cổng cục bộ và cổng từ xa:

$ kubectl port-forward deployment/mysql 3306

Thay vào đó, bạn có thể để trống cổng cục bộ để tự động gán một cổng ngẫu nhiên:

$ kubectl port-forward deployment/mysql :3306
Forwarding from 127.0.0.1:34923 -> 3306
Forwarding from [::1]:34923 -> 3306

Ở đây, bạn sẽ sử dụng số cổng được tạo ngẫu nhiên 34923 với ứng dụng MySQL cục bộ của bạn.

Thay đổi địa chỉ nghe

Kubectl liên kết cổng cục bộ trên 127.0.0.1 (IPv4) và ::1 Địa chỉ (IPv6) theo mặc định. Thay vào đó, bạn có thể chỉ định bộ IP của riêng mình bằng cách cung cấp --address gắn cờ khi bạn chạy port-forward yêu cầu:

# Listen on two IPv4 addresses
$ kubectl port-forward deployment/mysql :3306 --address 127.0.0.1,192.168.0.1

Cờ chỉ chấp nhận địa chỉ IP và localhost từ khóa. Cái sau được hiểu là bao gồm 127.0.0.1::1khớp với mặc định của lệnh khi --address bị bỏ qua.

Bản tóm tắt

Chuyển tiếp cổng là một kỹ thuật hữu ích để truy cập các ứng dụng riêng tư bên trong cụm Kubernetes của bạn. Kubectl chuyển lưu lượng truy cập từ mạng cục bộ của bạn đến một cổng cụ thể trên một Pod cụ thể. Đó là một cơ chế cấp tương đối thấp có thể xử lý bất kỳ kết nối TCP nào. Chuyển tiếp cổng UDP chưa được hỗ trợ.

Sử dụng phiên chuyển tiếp cổng đặc biệt là một cách an toàn để gỡ lỗi các khối lượng công việc không cần phải hiển thị ra bên ngoài. Tạo một dịch vụ cho mỗi lần triển khai mới có thể cho phép những kẻ xâm nhập và những kẻ tấn công phát hiện ra các điểm cuối cần được bảo vệ. Chuyển tiếp cổng trong Kubectl cho phép bạn kết nối an toàn trực tiếp với các ứng dụng của mình mà không cần phải tính toán xem chúng đang chạy trên Node nào.

dịch vụ cài win online từ xa

[ad_2]

Vui lòng đánh giá về dịch vụ tại nhà