Ở 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:~/homelab-k8s/k8s-dashboard$ 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

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

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