k8s dashboard部署
dashboard
本文件基於 dashboard 1.10.0版本,k8s版本 1.11.x。因 dashboard 1.7 以後預設開啟了自帶的登陸驗證機制,因此不同版本登陸有差異:
- 舊版(<= 1.6)建議通過apiserver訪問,直接通過apiserver 認證授權機制去控制 dashboard許可權,詳見舊版文件
- 新版(>= 1.7)可以使用自帶的登陸介面,使用不同Service Account Tokens 去控制訪問 dashboard的許可權
部署
如果之前已按照本專案部署dashboard1.6.3,先刪除舊版本:kubectl delete -f /etc/ansible/manifests/dashboard/1.6.3/
新版配置檔案參考官方文件
- 增加了通過
api-server
方式訪問dashboard - 增加了
NodePort
方式暴露服務,這樣叢集外部可以使用https://NodeIP:NodePort
(注意是https不是http,區別於1.6.3版本) 直接訪問 dashboard。
安裝部署
# 部署dashboard 主yaml配置檔案 $ kubectl apply -f /etc/ansible/manifests/dashboard/kubernetes-dashboard.yaml # [可選]部署基本密碼認證配置,使用apiserver 方式訪問需要 $ kubectl apply -f /etc/ansible/manifests/dashboard/ui-admin-rbac.yaml $ kubectl apply -f /etc/ansible/manifests/dashboard/ui-read-rbac.yaml # 建立可讀可寫 admin Service Account $ kubectl apply -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml # 建立只讀 read Service Account $ kubectl apply -f /etc/ansible/manifests/dashboard/read-user-sa-rbac.yaml
驗證
# 檢視pod 執行狀態 kubectl get pod -n kube-system | grep dashboard kubernetes-dashboard-7c74685c48-9qdpn 1/1 Running 0 22s # 檢視dashboard service kubectl get svc -n kube-system|grep dashboard kubernetes-dashboard NodePort 10.68.219.38 <none> 443:24108/TCP 53s # 檢視叢集服務 kubectl cluster-info|grep dashboard kubernetes-dashboard is running at https://192.168.1.1:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy # 檢視pod 執行日誌 kubectl logs kubernetes-dashboard-7c74685c48-9qdpn -n kube-system
- 由於還未部署 Heapster 外掛,當前 dashboard 不能展示 Pod、Nodes 的 CPU、記憶體等 metric 圖形,後續部署 heapster後自然能夠看到
訪問控制
因為dashboard 作為k8s 原生UI,能夠展示各種資源資訊,甚至可以有修改、增加、刪除許可權,所以有必要對訪問進行認證和控制,本專案部署的叢集有以下安全設定:詳見 apiserver配置模板
- 啟用
TLS認證
RBAC授權
等安全特性 - 關閉 apiserver非安全埠8080的外部訪問
--insecure-bind-address=127.0.0.1
- 關閉匿名認證
--anonymous-auth=false
- 補充啟用基本密碼認證
--basic-auth-file=/etc/kubernetes/ssl/basic-auth.csv
,密碼檔案模板中按照每行(密碼,使用者名稱,序號)的格式,可以定義多個使用者
新版 dashboard可以有多層訪問控制,首先與舊版一樣可以使用apiserver 方式登陸控制:
- 第一步通過api-server本身安全認證流程,與之前1.6.3版本相同,這裡不再贅述
- 第二步通過dashboard自帶的登陸流程,使用
Kubeconfig
Token
等方式登陸
演示使用 https://NodeIP:NodePort
方式訪問 dashboard,支援兩種登入方式:Kubeconfig、令牌(Token)
- 令牌登入(admin)
選擇“令牌(Token)”方式登陸,複製下面輸出的admin token 欄位到輸入框
# 建立Service Account 和 ClusterRoleBinding $ kubectl apply -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml # 獲取 Bearer Token,找到輸出中 ‘token:’ 開頭那一行 $ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
- 令牌登入(只讀)
選擇“令牌(Token)”方式登陸,複製下面輸出的read token 欄位到輸入框
# 建立Service Account 和 ClusterRoleBinding $ kubectl apply -f /etc/ansible/manifests/dashboard/read-user-sa-rbac.yaml # 獲取 Bearer Token,找到輸出中 ‘token:’ 開頭那一行 $ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep read-user | awk '{print $1}')
- Kubeconfig登入(admin) Admin kubeconfig檔案預設位置:
/root/.kube/config
,該檔案中預設沒有token欄位,使用Kubeconfig方式登入,還需要將token追加到該檔案中,完整的檔案格式如下:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdxxxxxxxxxxxxxx
server: https://192.168.1.2:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: admin
name: kubernetes
current-context: kubernetes
kind: Config
preferences: {}
users:
- name: admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRxxxxxxxxxxx
client-key-data: LS0tLS1CRUdJTxxxxxxxxxxxxxx
token: eyJhbGcixxxxxxxxxxxxxxxx
- Kubeconfig登陸(只讀) 首先建立只讀許可權 kubeconfig檔案,然後類似追加只讀token到該檔案,略。
參考
相關文章
- 部署dashboard
- 容器編排系統K8s之Dashboard部署K8S
- 部署 K8s 圖形化管理工具 DashboardK8S
- 【k8s】在AWS EKS部署並通過ALB訪問k8s Dashboard保姆級教程K8S
- k8s dashboard token 生成/獲取K8S
- 微服務探索之路02篇liunx ubuntu伺服器部署k8s(kubernetes)-kubernetes/dashboard微服務Ubuntu伺服器K8S
- K8S dashboard搭建部署,以及拒絕訪問,ImagePullBackOff,ErrImagePull,CrashLoopBackOff問題解決K8SOOP
- k8s建立普通使用者訪問dashboardK8S
- rancher部署k8sK8S
- centos 7 部署k8sCentOSK8S
- K8s 部署 Prometheus + GrafanaK8SPrometheusGrafana
- k8s叢集部署K8S
- 來了,k8s!-----------------k8s叢集部署K8S
- 在 k8s 中部署 PrometheusK8SPrometheus
- helm部署traefik到k8sK8S
- K8S部署Metrics-ServerK8SServer
- Helm部署k8s應用K8S
- Kubeadm叢集部署k8sK8S
- Ansible部署K8s叢集K8S
- K8s 部署 Gitlab CI RunnerK8SGitlab
- K8s kubernetes安裝部署K8S
- k8s 部署 Java 專案K8SJava
- kubeadm部署K8S叢集K8S
- k8s與監控--k8s部署grafana6.0K8SGrafana
- 使用 helm 部署 k8s 資源K8S
- azure k8s netcore 程式初次部署K8SNetCore
- k8s如何部署分散式jenkinsK8S分散式Jenkins
- k8s二進位制部署K8S
- K8s 部署應用必備K8S
- k8s 快速部署 sonarqube 詳解K8S
- k8s單master叢集部署K8SAST
- 部署 Prometheus 和 Grafana 到 k8sPrometheusGrafanaK8S
- K8S 部署 ingress-nginx (二) 部署後端為 tomcatK8SNginx後端Tomcat
- 微服務從程式碼到k8s部署應有盡有大結局(k8s部署)微服務K8S
- idea 開啟 dashboardIdea
- Kubernetes Dashboard 安裝
- Kubernetes(k8s)部署安全最佳實踐K8S
- k8s環境部署及使用方式K8S