Published on

Microsoft Hyper-V Server: Cài đặt Kubernetes Dashboard

Ở các bài viết trước, mình đã thiết lập xong Kubernetes cluster trên Microsoft Hyper-V Server. Bước tiếp theo mình sẽ tiến hành cài đặt công cụ Dashboard để quản lý, giám sát cluster.

Windows Admin Center

Cài đặt Kubernetes Dashboard

Đầu tiên, vào Windows Admin Center mở PowerShell của server. Deploy Dashboard bằng việc chạy lệnh sau:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

Theo mặc định thì dashboard service là ClusterIP nên không thể truy cập từ lớp mạng bên ngoài. Trên hình mình minh họa POD khung đỏ tượng trưng có Pod Dashboard.

Vì vậy, mình sử dụng thêm Service NodePort sử dụng port 30002 để cho lớp mạng bên ngoài cluster có thể try cập được dashboard.

Tạo NodePort service

kubectl apply -f https://raw.githubusercontent.com/nvtienanh/hyperv-k8s/main/k8s/kubernetes-dashboard/kubernetes-dashboard-service-np.yaml

Nội dung file kubernetes-dashboard-service-np.yaml để tạo service Nodeport

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: admin-user
    namespace: kubernetes-dashboard
---
kind: Service
apiVersion: v1
metadata:
  namespace: kubernetes-dashboard
  name: kubernetes-dashboard-service-np
  labels:
    k8s-app: kubernetes-dashboard
spec:
  type: NodePort
  ports:
    - port: 8443
      nodePort: 30002
      targetPort: 8443
      protocol: TCP
  selector:
    k8s-app: kubernetes-dashboard

Sau khi deploy thành công NodePort service, mọi client trong lớp mạng 10.10.0.1/24 đều có thể truy cập vào dashboard thông qua đường dẫn https://nodeIP:30002 do ở đây chúng ta có 3 node (master và 2 worker node) nên chúng ta có thể truy cập vào dashboard thông qua 1 trong 3 đường dẫn: https://10.10.0.10:30002 hoặc https://10.10.0.11:30002 hoặc https://10.10.0.12:30002

Lưu ý rằng Hyper-V server có Physical IP 192.168.1.5 đồng thời cũng có IP trong KubeNatNet với IP là 10.10.0.1

Trên Microsoft Hyper-V Server là môi trường command, không có giao diện cũng như trình duyệt để chúng ta truy cập vào, vì vậy 1 lần nữa, chúng ta phải cho phép lớp mạng khác truy cập vào KubeNatNet trong Hyper-V Server chúng ta sử dụng NetNatStaticMapping

NetNatStaticMapping

Add-NetNatStaticMapping -ExternalIPAddress "0.0.0.0/24" -ExternalPort 30002 -Protocol TCP -InternalIPAddress "10.10.0.10" -InternalPort 30002 -NatName KubeNatNet

Bằng việc thực hiện điều ở trên, 1 laptop có IP 192.168.1.10 chẳng hạn có thể truy câp vào Kubernetes Dashboard thông qua địa chỉ: https://192.168.1.5:30002

Lấy mã token để đăng nhập vào dashboard

$account = ((kubectl -n kubernetes-dashboard get secret -o json | ConvertFrom-Json).items.metadata | where { $_.annotations.'kubernetes.io/service-account.name' -eq "admin-user" }).name
kubectl -n kubernetes-dashboard describe secret $account

Sau khi thực thi thành công token sẽ được tạo ra dùng cho đăng nhập vào Dashboard

Sử dụng dashboard

Link truy cập: https://IP_Hyper-V_Server:30002

Nhập token được tạo ở bước trước là đã đăng nhập vào được Dashboard rồi

Chi tiết có thể xem thêm video dưới đây