1. 程式人生 > >Kubernetes 配置管理 Dashboard(十三)

Kubernetes 配置管理 Dashboard(十三)

Kubernetes 所有的操作我們都是通過命令列工具 kubectl 完成的。為了提供更豐富的使用者體驗,Kubernetes 還開發了一個基於 Web 的 Dashboard,使用者可以用 Kubernetes Dashboard 部署容器化的應用、監控應用的狀態、執行故障排查任務以及管理 Kubernetes 各種資源。

在 Kubernetes Dashboard 中可以檢視叢集中應用的執行狀態,也能夠建立和修改各種 Kubernetes 資源,比如 Deployment、Job、DaemonSet 等。使用者可以 Scale Up/Down Deployment、執行 Rolling Update、重啟某個 Pod 或者通過嚮導部署新的應用。Dashboard 能顯示叢集中各種資源的狀態以及日誌資訊。

可以說,Kubernetes Dashboard 提供了 kubectl 的絕大部分功能,大家可以根據情況進行選擇。

一、安裝配置

1.1 下載 映象

因為 kubernetes-dashboard 的映象我們大陸是無法訪問的,我們還是通過間接的方式進行獲取,具體版本大家可以自己去通過錯誤檢視。

docker pull registry.cn-shanghai.aliyuncs.com/qubit/kubernetes-dashboard-amd64:v1.10.0
docker tag registry.cn-shanghai.aliyuncs.com/qubit/kubernetes-dashboard-amd64:v1.10.0 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
docker image rm registry.cn-shanghai.aliyuncs.com/qubit/kubernetes-dashboard-amd64:v1.10.0

1.2、安裝

Kubernetes 預設沒有部署 Dashboard,可通過如下命令安裝:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

Dashboard 會在 kube-system namespace 中建立自己的 Deployment 和 Service。

1.3、修改 NodePort

因為 Service 是 ClusterIP 型別,為了方便使用,我們可通過下面命令修改成 NodePort 型別。

kubectl edit svc kubernetes-dashboard -n kube-system

把 type 修改為如下:

spec:
  clusterIP: 10.107.238.193
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 30931
    port: 443
    protocol: TCP
    targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

檢視埠

[[email protected] ~]# kubectl get svc -n kube-system
NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
kube-dns               ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP   6h
kubernetes-dashboard   NodePort    10.107.238.193   <none>        443:30931/TCP   167m

二、配置授權

訪問地址 https://10.0.0.23:30931,記得用火狐或者谷歌瀏覽器,國內的一些瀏覽器可能會有問題。

Kubernetes 配置管理 Dashboard(十三)

Dashboard 支援 Kubeconfig 和 Token 兩種認證方式,為了簡化配置,我們通過配置檔案 dashboard-admin.yaml 為 Dashboard 預設使用者賦予 admin 許可權。

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: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system

應用並且獲取token。

kubectl apply -f dashboard-admin.yaml
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

類似於下面這一段,把token填入確定即可。

Name:         admin-user-token-xln5d
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: admin-user
              kubernetes.io/service-account.uid: 54801c01-01e2-11e9-857e-00505689640f

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXhsbjVkIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI1NDgwMWMwMS0wMWUyLTExZTktODU3ZS0wMDUwNTY4OTY0MGYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.MbGeROnjA9f1AhBO8v2GuHC1ihVk1UcxpM8lYkIC_P9Mx9jVZcM56zr4jcxjSnIuZPZxIznLJIIo7TRY94Ya2VujzF2lpDxlNYF2hWY3Ss9d5LqRtP3JsJNZVLmxvYIGnmnGyVCEikCM6W44WPu-Sm71TKwCOFImF7wz7pu4atJH-xrEedO7agQaGK8A_EYrE_gfGCFuMXWtz6Oj94t0InXo7hDnFl1xMI0f3cA0WYJKhzh0Gmm2MTEJXKedvjspLUGuDSY-AjI2VGIfccafpcYKHyXNO_2j4Lf4cF3Zv7TdHG3DCWVKNox4QSEgv7HJMprwlVRKpliKe4m4YY4MQg

Kubernetes 配置管理 Dashboard(十三)