Published on

K8s cluster trên Ubuntu: Cài đặt Kubernetes dashboard

Ở bài viết trước, mình đã cài đặt thành công 1 Kubernetes cluster: 01 master node và 02 worker node trên 3 con Ubuntu server. Tiếp theo đây, mình sẽ cài dashboard để quản lý và giám sát cluster hiện tại.

Thông tin về Kubernetes dashboard có thể xem tại đây. Trong bài viết này mình sử dụng phiên bản v2.7.0, dùng lệnh dưới để deploy dashboard:

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

Nếu chạy thành công thì terminal sẽ hiện ra thông tinh như bên dưới

anh@k8s-master:~/$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created

Kubernetes là một web app dùng để quản lý giám sát cluster, để đăng nhập vào được giao diện quản lý thì mình sẽ sử dụng Nodeport service để cho phép truy cập vào web app tại địa chỉ: https://<k8s-master-ip>:<nodeport>. Đồng thời tạo ServiceAccount tên admin-user để cấp quyền quản lý Dashboard:

kubernetes-dashboard-service-np.yaml

---
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

Chúng ta deploy NodePort:

kubectl apply -f kubernetes-dashboard-service-np.yaml

Tiếp theo, chúng ta tạo token cho admin-user

kubectl -n kubernetes-dashboard create token admin-user

Kết quả trả về trên terminal sẽ có dạng:

anh@k8s-master:~/homelab-k8s/k8s-dashboard$ kubectl apply -f kubernetes-dashboard-service-np.yaml
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
service/kubernetes-dashboard-service-np created
anh@k8s-master:~/homelab-k8s/k8s-dashboard$ kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6InVKM2pJaUt0SGxKM2FSV2w4Sk04R1Q4cldMSlBta0pBcklUREt3U1FiQWMifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjc3MjEyNTgzLCJpYXQiOjE2NzcyMDg5ODMsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm8ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiMDkyMzhmODQtNDc5Zi00ZjlmLWI4YzQtMWE1NGIzZGYwMzE3In19LCJuYmYiOjE2NzcyMDg5ODMsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.JOdT8M7xlcH6o7RsEsQnPQauahR7k5R2dm6PVeBJ01U_CQpWX-fZV00MLN5sDKn5JAAdGGQY0BeRiBgnV90kiq3djK4jczq3Y_3eoBlGP2i4owz6f1b0FZHysjINmXDkskFRupWdnDJzDxtv0t9xTELFknilPEUZUgtSz7GIBZ-lp94kxF8ByE1JF8UfXbYMqjODwRAtmepemYzqrb8LmiMnaW_HlyfrK2i3jFqEjFXQRsRAxbcG_BcwALw2L91DNst-ek3mG-imsy73kjhtt702PBghRD2YX5ZuX7--LqgYOoQoGOtBuLxzc65L7BWJ2hUBZ2jw5T81SA4FB7IwEA

Trong trường hợp của mình, IP của k8s-master là: 192.168.1.10 và NodePort là 30002, nên truy cập vào dashboard theo đường dẫn: https://192.168.1.10:30002

Kuberentes dashboard
login

Paste token ở trên vào thì cúng ta sẽ vào được giao diện quản lý như sau:

Dashboard
overview

Trân trọng, nvtienanh