您好,登錄后才能下訂單哦!
如何部署kubernates dashboard,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
直接部署官方默認的dashboard:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
官方默認的replica是1,可以下載官方的yaml文件,按需修改后部署
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
部署成功后輸入命令查看Pod可以看到dashboard已經部署成功
$ kubectl -n kube-system get pods
輸入命令查看Service,會發現dashboard的IP地址是一個自動分配的Cluster IP地址
$ kubectl -n kube-system get svc
在不配置任何網絡策略的情況下,我們可以啟動kube-proxy,用localhost進行訪問。也可以修改service增加node port后通過node的IP地址進行訪問。
在這里我修改了type為nodePort和指定了port
$ kubectl -n kube-system edit svc kubernetes-dashboard
apiVersion: v1 kind: Service metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"kubernetes-dashboard"},"name":"kubernetes-dashboard","namespace":"kube-system"},"spec":{"ports":[{"port":443,"targetPort":8443}],"selector":{"k8s-app":"kubernetes-dashboard"}}} creationTimestamp: "2019-06-25T08:32:58Z" labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system resourceVersion: "131106" selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard uid: d65ea8d9-9723-11e9-beba-08002777dcd3 spec: clusterIP: 10.105.212.27 ports: - nodePort: 31195 port: 443 protocol: TCP targetPort: 8443 selector: k8s-app: kubernetes-dashboard sessionAffinity: None type: NodePort status: loadBalancer: {}
修改后保存,可以看到service的TYPE已經變成NodePort,端口映射也完成了。
使用dashboard所在node的IP地址加上映射到Node的端口號可以直接訪問Dashboard
https://192.168.7.87:31195/
登陸 dashboard 的時候支持 kubeconfig 和 token 兩種認證方式,kubeconfig 中也依賴 token 字段,所以生成 token 這一步是必不可少的。
下文分兩塊來講解兩種登陸認證方式:
為 brand 命名空間下的 brand 用戶創建 kubeconfig 文件
為集群的管理員(擁有所有命名空間的 amdin 權限)創建 token
登陸dashboard的時候可以指定kubeconfig
文件來認證用戶權限,如何生成登陸dashboard時指定的kubeconfig
文件請參考創建用戶認證授權的kubeconfig文件。
注意我們生成的 kubeconfig 文件中沒有 token 字段,需要手動添加該字段。
比如我們為 brand namespace 下的 brand 用戶生成了名為 brand.kubeconfig
的 kubeconfig 文件,還要再該文件中追加一行 token
的配置(如何生成 token 將在下文介紹),如下所示:
這樣就可以使用brand.kubeconfig
文件來登陸dashboard了,而且只能訪問和操作brand
命名空間下的對象。
需要創建一個 admin 用戶并授予 admin 角色綁定,使用下面的 yaml 文件創建 admin 用戶并賦予他管理員權限,然后可以通過 token 登陸 dashbaord,該文件見 dashboard-admin.yaml。這種認證方式本質上是通過 Service Account 的身份認證加上 Bearer token 請求 API server 的方式實現,參考 Kubernetes 中的認證。
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: admin annotations: rbac.authorization.kubernetes.io/autoupdate: "true" roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccount name: admin namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: admin namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile
執行命令
$ kubectl create -f dashboard-admin.yaml
執行命令
$ kubectl -n kube-system describe secret admin-token-78bfl
拷貝token在登錄頁面進行登錄,可以以管理員身份進入dashboard
也可以用命令直接提取token
$ kubectl -n kube-system get secret admin-token-78bfl -o jsonpath={.data.token}|base64 -d
看完上述內容,你們掌握如何部署kubernates dashboard的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。