Cấu hình Port Forwarding truy cập ứng dụng trong Kubernetes Cluster

Cấu hình Port Forwarding truy cập ứng dụng trong Kubernetes ClusterCuongquach.com | Kubectl port-foward sẽ giúp bạn truy cập và tương tác với những dịch vụ Pod đang được chạy trên Kubernetes Cluster từ localhost của bạn. Phương pháp này thường được sử dụng để debug các vấn đề phát sinh liên quan đến dịch vụ, mà không được phép public dịch vụ đó ra ngoài. Về Port-forwarding là gì bạn có thể tham khảo tại đây : https://en.wikipedia.org/wiki/Port_forwarding

Thao tác cấu hình Port-Forwarding với Kubernetes Cluster

Các mục đích của việc sử dụng Port Fowarding thường là :

  • Bạn có ứng dụng nội bộ, cần bảo mật,.. không cho public ra ngoài. Nên chỉ có thể truy cập từ máy chủ nội bộ qua VPN hay văn phòng.
  • Đó có thể là ứng dụng web, cũng có thể là ứng dụng database như redis, postgresql,..
  • Bạn có thể mở port forward từ localhost laptop đến dịch vụ nội bộ đó. Từ đấy giúp bạn quản lý từ laptop hoặc đơn giản là dễ dàng debug các vấn đề phát sinh với dịch vụ nội bộ đó thông quan port dịch vụ với port localhost (tunnel port forwarding)

Kubectl là một trong những công cụ chương trình lệnh chính dùng để tương tác quản lý các Kubernetes Cluster. Chương trình giúp bạn triển khai các ứng dụng, quản lý các thành phần hệ thống Kubernetes Cluster,…

Quy trình của hoạt động Port Forward với kubectl đơn giản như sau :

  • Người dùng sử dụng lệnh kubectl để khởi tạo Port-fowarding đến port của Pod/Deployment/Service trên Kubernetes Cluster.
  • Kubernetes API sẽ tiến hành khởi tạo một Tunnel Connection giữa localhost của bạn với resource đang chạy trên Kubernetes Cluster.
  • Các đối tượng trong Kubernetes Cluster bạn có thể tương tác qua Port-forwarding kubectl : Deployment/Pod/Service/ReplicaSet.

Cấu hình Port Forwarding với kubectl

Cú pháp lệnh port-foward sẽ giúp khởi tạo một Tunnel từ Pod được chỉ định đến localhost đang chạy lệnh port-forward. Từ đó bạn có thể truy cập ứng dụng dịch vụ thông qua port local đến port Pod.

Cú pháp:

# kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT

Giờ chúng ta sẽ tạo một Deployment service để dễ thử nghiệm nhé. Mình sẽ chọn service Grafana, có giao diện để truy cập web dashboard từ localhost laptop thử nhé.

# kubectl create deployment grafana --image=docker.io/grafana/grafana:7.0.0

# cat << EOF > grafana-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: grafana-service
spec:
  selector:
    app: grafana
  ports:
  - port: 3000
    targetPort: 3000
EOF

# kubectl apply -f grafana-service.yaml
service/grafana-service created

Sau đó bạn kiểm tra xem DeploymentPod Grafana đã chạy chưa :

# kubectl get deployments
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
grafana   1/1     1            1           46s

# kubectl get pod -A | grep -i "grafana"
default       grafana-6d559d4bbb-ntnvr                 1/1     Running   0          25m

Bình thường để có thể truy cập được Grafana Dashboard, thì dịch vụ này cần được cấu hình để có thể truy cập từ ngoài Kubernetes Cluster. Nhưng mặc định ban đầu bạn chỉ có thể truy cập từ bên trong Kubernetes Cluster vì Grafana đang được cấu hình ClusterIP.

# kubectl get svc
NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
grafana-service   ClusterIP   10.101.180.227   <none>        3000/TCP   6s

Vì vậy, điều này giúp thực hành cho nhu cầu sử dụng Port Forwarding dễ hiểu hơn. Bằng cách thực hiện mở local port forwarding đến port web dashboard của dịch vụ Grafana.

Giờ ta đã có thông tin chính xác của NamespacePod/Deployment/Service Grafana đang chạy nhé ở các output lệnh trên.

+ Sử dụng port local forwarding cụ thể (:8080)

Chúng ta sẽ mở port-forwarding đến port 3000 của Pod Grafana với local host port là 8080.

# kubectl port-forward -n default pods/grafana-6d559d4bbb-ntnvr 8080:3000
Forwarding from 127.0.0.1:8080 -> 3000
Forwarding from [::1]:8080 -> 3000

hoặc port-forward đến Deployment Grafana.

# kubectl port-forward -n default deployment/grafana 8080:3000

hoặc port-foward đến Service Grafana.

# kubectl port-forward -n default service/grafana-service 8080:3000

Kết quả truy cập port 8080 trên laptop thử.

+ Sử dụng port local forwarding ngẫu nhiên

# kubectl port-forward -n default deployment/grafana :3000
Forwarding from 127.0.0.1:51948 -> 3000
Forwarding from [::1]:51948 -> 3000

Nguồn: https://cuongquach.com/

Previous articleCài đặt Kubernetes Cluster với kubeadm
Next articleCài đặt FTP Server trên CentOS 7 với Vsftpd
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !