Files
kuboard-press/install/install-dashboard.md
huanqing.shao 085a5ecffc v3.0.0-beta.1
2020-12-06 16:18:19 +08:00

380 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
vssueId: 13
lessAds: false
description: Kuboard_是一款Kubernetes_Dashboard_快速在K8S上落地微服务_本文是Kuboard的安装手册_包括安装Kuboard的前提条件_与Kubernetes的版本兼容性_安装步骤_以及完成安装后如何访问Kuboard界面。
meta:
- name: keywords
content: Kubernetes Dashboard安装,Kuboard安装,K8S Dashboard安装
---
# 安装 Kuboard v2
<AdSenseTitle/>
## 在线体验
Kuboard 是 Kubernetes 的一款图形化管理界面。
<div style="min-height: 433px;">
<InstallDashboardPreview/>
</div>
## v3 版本介绍
Kuboard v3.0 已经进入 beta 阶段,预计正式发布时间点为 2021 年元旦前后。相较于 Kuboard v2.0.x Kuboard v3 最大的特点是支持多 Kubernetes 集群管理。如果您的投产计划在 2021 年元旦之后,建议您选择 [Kuboard v3](./v3/install-built-in.html)。
## 前提
安装 Kuboard 时,假设您已经有一个 Kubernetes 集群,以下任何形式安装的集群都可以:
* kubeadm 安装(或者基于 kubeadm 的衍生工具,如 Sealos 等);
* 二进制安装;
* 阿里云、腾讯云等公有云托管集群;
* 其他。
如果没有 Kubernetes 集群:
* 初学者,请参考
* [在 Windows/Mac 安装 Kubernetes 测试集群](install-docker-desktop.html) <Badge type="error">不推荐</Badge>
* [安装 Kubernetes 单Master节点](install-k8s.html) <Badge type="success">推荐</Badge>
* 用于生产,请参考 [安装 Kubernetes 高可用](install-kubernetes.html)
## 兼容性
| Kubernetes 版本 | Kuboard 版本 | 兼容性 | 说明 |
| --------------- | -------------- | ------ | ------------------------------------------------------------ |
| v1.19 | v2.0.x | <span style="font-size: 24px;">😄</span> | 已验证 |
| v1.18 | v1.0.x v2.0.x | <span style="font-size: 24px;">😄</span> | 已验证 |
| v1.17 | v1.0.x v2.0.x | <span style="font-size: 24px;">😄</span> | 已验证 |
| v1.16 | v1.0.x v2.0.x | <span style="font-size: 24px;">😄</span> | 已验证 |
| v1.15 | v1.0.x v2.0.x | <span style="font-size: 24px;">😄</span> | 已验证 |
| v1.14 | v1.0.x v2.0.x | <span style="font-size: 24px;">😄</span> | 已验证 |
| v1.13 | v1.0.x v2.0.x | <span style="font-size: 24px;">😄</span> | 已验证 |
| v1.12 | v1.0.x v2.0.x | <span style="font-size: 24px;">😐</span> | Kubernetes Api v1.12 不支持 dryRun<br />Kuboard 不支持 Kubernetes v1.12 |
| v1.11 | v1.0.x v2.0.x | <span style="font-size: 24px;">😐</span> | Kuboard 不支持 Kubernetes v1.11 |
## 安装
<b-card>
<b-tabs content-class="mt-3">
<b-tab title="安装" active>
安装 Kuboard。
> 如果您参考 https://kuboard.cn 网站上提供的 Kubernetes 安装文档,可在 master 节点上执行以下命令。
> * 如果您已经安装了 Kuboard v1.0.x请参考 [了解如何从 v1.0.x 升级到 Kuboard v2.0.x](/support/change-log/upgrade-1-2.html)
<b-tabs content-class="mt-3">
<b-tab title="稳定版">
``` sh
kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml
kubectl apply -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server.yaml
```
</b-tab>
<b-tab title="Beta版">
``` sh
kubectl apply -f https://kuboard.cn/install-script/kuboard-beta.yaml
kubectl apply -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server.yaml
```
</b-tab>
<b-tab title="Arm版">
基于 Arm CPU 的机器上许多镜像都不能直接使用但是Arm 很可能是未来服务器端发展的一个方向,以华为鲲鹏社区为代表的 arm 服务器已经获得了许多用户的青睐。因此Kuboard 也提供了 arm 版本的镜像。安装 arm 版 Kuboard 之前,请确保您在 arm 上的 Kubernetes 集群已经搭建好,并可以正常工作。
> 于 Kuboard 而言arm 版本与 x86_64 版本的主要区别在于所使用的基础 nginx/openresty 镜像不同Kuboard 所提供的各项功能完全一致。
``` sh
kubectl apply -f https://kuboard.cn/install-script/kuboard-arm.yaml
kubectl apply -f https://addons.kuboard.cn/metrics-server/0.3.6/metrics-server-arm.yaml
```
</b-tab>
</b-tabs>
查看 Kuboard 运行状态:
``` sh
kubectl get pods -l k8s.kuboard.cn/name=kuboard -n kube-system
```
输出结果如下所示:
```
NAME READY STATUS RESTARTS AGE
kuboard-54c9c4f6cb-6lf88 1/1 Running 0 45s
```
<b-button v-b-toggle.collapse-init-pending variant="danger" size="sm" style="margin-top: 1rem;" v-on:click="$sendGaEvent('install-dashboard-pending', 'error-init-master', '查看初始化时的镜像下载错误的解决办法')">如果出错点这里</b-button>
<b-collapse id="collapse-init-pending" class="mt-2">
<b-card style="background-color: rgb(254, 240, 240); border: solid 1px #F56C6C;">
* ImagePullBackoff / Pending
* 如果 `kubectl get pod -n kube-system -o wide` 的输出结果中出现 ImagePullBackoff 或者长时间处于 Pending 的情况,请参考 [查看镜像抓取进度](/learning/faq/image-pull-backoff.html)
* ContainerCreating
* 如果 `kubectl get pod -n kube-system -o wide` 的输出结果中某个 Pod 长期处于 ContainerCreating、PodInitializing 或 Init:0/3 的状态,可以尝试:
* 查看该 Pod 的状态,例如:
``` sh
kubectl describe pod kuboard-8b8574658-q4lvf -n kube-system
```
如果输出结果中,最后一行显示的是 Pulling image请耐心等待或者参考 [查看镜像抓取进度](/learning/faq/image-pull-backoff.html)
```
Normal Pulling 44s kubelet, k8s02 Pulling image "eipwork/kuboard:latest"
```
* 将该 Pod 删除,系统会自动重建一个新的 Pod例如
``` sh
kubectl delete pod kuboard-8b8574658-q4lvf -n kube-system
```
* 其他问题
* 请在本文页尾,加入 Kuboard 社群,以获得帮助;
</b-card>
</b-collapse>
</b-tab>
<b-tab title="卸载">
执行以下指令,可以卸载 Kuboard
<b-tabs content-class="mt-3">
<b-tab title="稳定版">
``` sh
kubectl delete -f https://kuboard.cn/install-script/kuboard.yaml
kubectl delete -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server.yaml
```
</b-tab>
<b-tab title="Beta版">
``` sh
kubectl delete -f https://kuboard.cn/install-script/kuboard-beta.yaml
kubectl delete -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server.yaml
```
</b-tab>
<b-tab title="Arm版">
``` sh
kubectl delete -f https://kuboard.cn/install-script/kuboard-arm.yaml
kubectl delete -f https://addons.kuboard.cn/metrics-server/0.3.7/metrics-server-arm.yaml
```
</b-tab>
</b-tabs>
</b-tab>
</b-tabs>
</b-card>
## 获取Token
您可以获得管理员用户、只读用户的Token。
> * 默认情况下,您可以使用 ServiceAccount 的 Token 登录 Kuboard
> * 您还可以 [使用 GitLab/GitHub 账号登录 Kuboard/Kubectl](/learning/k8s-advanced/sec/authenticate/install.html)
> * 您也可以 [为用户授权](/learning/k8s-advanced/sec/kuboard.html)
<b-card>
<b-tabs content-class="mt-3">
<b-tab title="管理员用户" active>
**拥有的权限**
* 此Token拥有 ClusterAdmin 的权限,可以执行所有操作
**执行命令**
```bash
# 如果您参考 www.kuboard.cn 提供的文档安装 Kuberenetes可在第一个 Master 节点上执行此命令
echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)
```
**输出**
取输出信息中 token 字段
```{1}
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWc4aHhiIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI5NDhiYjVlNi04Y2RjLTExZTktYjY3ZS1mYTE2M2U1ZjdhMGYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.DZ6dMTr8GExo5IH_vCWdB_MDfQaNognjfZKl0E5VW8vUFMVvALwo0BS-6Qsqpfxrlz87oE9yGVCpBYV0D00811bLhHIg-IR_MiBneadcqdQ_TGm_a0Pz0RbIzqJlRPiyMSxk1eXhmayfPn01upPdVCQj6D3vAY77dpcGplu3p5wE6vsNWAvrQ2d_V1KhR03IB1jJZkYwrI8FHCq_5YuzkPfHsgZ9MBQgH-jqqNXs6r8aoUZIbLsYcMHkin2vzRsMy_tjMCI9yXGiOqI-E5efTb-_KbDVwV5cbdqEIegdtYZ2J3mlrFQlmPGYTwFI8Ba9LleSYbCi4o0k74568KcN_w
```
</b-tab>
<b-tab title="只读用户">
**拥有的权限**
- view 可查看名称空间的内容
- system:node 可查看节点信息
- system:persistent-volume-provisioner 可查看存储类和存储卷声明的信息
**适用场景**
只读用户不能对集群的配置执行修改操作,非常适用于将开发环境中的 Kuboard 只读权限分发给开发者,以便开发者可以便捷地诊断问题
**执行命令**
执行如下命令可以获得 <span style="color: #F56C6C; font-weight: 500;">只读用户</span> 的 Token
```bash
# 如果您参考 www.kuboard.cn 提供的文档安装 Kuberenetes可在第一个 Master 节点上执行此命令
echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-viewer | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)
```
**输出**
取输出信息中 token 字段
``` {1}
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWc4aHhiIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI5NDhiYjVlNi04Y2RjLTExZTktYjY3ZS1mYTE2M2U1ZjdhMGYiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.DZ6dMTr8GExo5IH_vCWdB_MDfQaNognjfZKl0E5VW8vUFMVvALwo0BS-6Qsqpfxrlz87oE9yGVCpBYV0D00811bLhHIg-IR_MiBneadcqdQ_TGm_a0Pz0RbIzqJlRPiyMSxk1eXhmayfPn01upPdVCQj6D3vAY77dpcGplu3p5wE6vsNWAvrQ2d_V1KhR03IB1jJZkYwrI8FHCq_5YuzkPfHsgZ9MBQgH-jqqNXs6r8aoUZIbLsYcMHkin2vzRsMy_tjMCI9yXGiOqI-E5efTb-_KbDVwV5cbdqEIegdtYZ2J3mlrFQlmPGYTwFI8Ba9LleSYbCi4o0k74568KcN_w
```
</b-tab>
</b-tabs>
</b-card>
## 访问Kuboard
您可以通过NodePort、port-forward 两种方式当中的任意一种访问 Kuboard
<b-card>
<b-tabs content-class="mt-3">
<b-tab title="通过NodePort访问" active>
Kuboard Service 使用了 NodePort 的方式暴露服务NodePort 为 32567您可以按如下方式访问 Kuboard。
`
http://任意一个Worker节点的IP地址:32567/
`
输入前一步骤中获得的 token可进入 **Kuboard 集群概览页**
::: tip
* 如果您使用的是阿里云、腾讯云等,请在其安全组设置里开放 worker 节点 32567 端口的入站访问,
* 您也可以修改 Kuboard.yaml 文件,使用自己定义的 NodePort 端口号
:::
</b-tab>
<b-tab title="通过port-forward访问">
在您的客户端电脑中执行如下命令
```sh
kubectl port-forward service/kuboard 8080:80 -n kube-system
```
在浏览器打开链接 (请使用 kubectl 所在机器的IP地址
`http://localhost:8080`
输入前一步骤中获得的 token可进入 **Kubernetes 集群概览**
::: tip
需要您先完成 [从客户端电脑远程管理 Kubernetes](install-kubectl.html) 的配置
:::
</b-tab>
</b-tabs>
</b-card>
<b-button v-b-toggle.collapse-access-error variant="danger" size="sm" style="margin-top: 1rem;" v-on:click="$sendGaEvent('install-dashboard-pending', 'error-get-token', '获取Token出错')">如果出错点这里</b-button>
<b-collapse id="collapse-access-error" class="mt-2">
<b-card style="background-color: rgb(254, 240, 240); border: solid 1px #F56C6C;">
* 可以访问 Kuboard 登录界面,但是登录失败,表现有如下几种:
* 提示认证失败,通常是因为 Token 拷贝不完整
如下图所示,您很可能忽略了图中红色标注的部分:
![image-20200329174546499](./install-dashboard.assets/image-20200329174546499.png)
* 输入 Token 后长时间无响应,通常是因为从 Kuboard 的容器中访问到您的 APIServer 接口,可能有如下两种情况:
* 您 Kubernetes 集群的 dnsDomain 不是默认的 `cluster.local`,请参考 [配置Kuboard环境变量 - KUBERNETES_CLUSTER_DOMAIN](/install/install-kuboard-env.html#kubernetes-cluster-domain)
* Kuboard 容器中不能访问到您的 API Server定位问题的方式如下
* 进入 Kuboard 的终端
```sh
kubectl exec -it $(kubectl get pods -l k8s.kuboard.cn/name=kuboard -n kube-system | grep kuboard | awk '{print $1}') /bin/bash -n kube-system
```
* 在 Kuboard 终端中执行
``` sh
curl -k https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT
```
如果一切正常,您将获得如下输出结果:
``` json
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {
},
"status": "Failure",
"message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
"reason": "Forbidden",
"details": {
},
"code": 403
}
```
如果是其他情况,请检查一下您 Kubernetes 集群的网络插件是否正常工作
* 不能访问 Kuboard 界面,可能的原因有:
* 您的防火墙/安全组配置规则不允许访问节点的 `32567` 端口
* 如果您为 Kuboard 配置了反向代理,请确保 Kuboard 使用了根路径,例如:
* 正确设置: `https://your.kuboard.dns/`
* 错误设置: `https://your.kuboard.dns/subcontext/`
</b-card>
</b-collapse>
## 为开发测试人员授权
运维团队搭建好 Kubernetes 之后,需要授权开发/测试团队的成员执行某些特定的操作例如更新镜像版本、查看容器日志、进入容器终端、通过Proxy访问接口等以便开发测试人员可以自行完成日常的测试联调等任务。使用 Kubernetes + Kuboard 的团队可能以如下几种形式授权开发、测试人员访问:
* 为开发团队、测试团队创建各自的 ServiceAccount并授权其访问指定的名称空间请参考
* [使用Kuboard管理ServiceAccount及RBAC](/learning/k8s-advanced/sec/kuboard.html)
* [授权 kuboard-viewer 查看日志](/learning/k8s-advanced/sec/rbac/logs.html)
* 与自建的 gitlab / github 实现单点登录,并授权 gitlab / github 中的 group/user 访问指定的名称空间,请参考 [Kubernetes Authentication 安装向导](/learning/k8s-advanced/sec/authenticate/install.html)
* 与自研的 PaaS 平台整合,免登录访问 Kuboard 提供的控制台界面、日志界面,请参考 [免登录访问](#免登录访问)
### 免登陆访问
可以通过查询参数中的 k8sToken 字段直接登录系统,无需在登录界面输入 Token。
#### 直接访问集群概览页
如需要无登录访问集群概览页面,可使用如下格式的 url 进入:
```
http://任意一个Worker节点的IP地址:32567/dashboard?k8sToken=yourtoken
```
::: tip 其他界面
其他任意 Kuboard 界面同理,只需要增加 k8sToken 作为查询参数,即可跳过输入 Token 的步骤
:::
#### 直接访问终端界面
如果想要无登录直接访问容器组的控制台,可使用如下格式的 url 进入:
```
http://任意一个Worker节点的IP地址:32567/console/yournamespace/yourpod?containerName=yourcontainer&shell=bash&k8sToken=yourtoken
```
其中shell 参数可选取值有:
* `bash`,使用 /bin/bash 作为 shell
* `sh` 使用 /bin/sh 作为 shell
## 下一步
:tada: :tada: :tada:
- 了解 [Kuboard 的环境变量](./install-kuboard-env.html)
- 使用 Kuboard 工作负载编辑器 [创建第一个应用](/guide/example/busybox.html) 10分钟
- 尝试 Kuboard 设计的其他 example [使用 Kuboard](/guide/index.html)
- 学习 [Kubernetes免费教程](/learning/)