K3s Dashboards

2022-05-08
2022-05-08
5 min read
Hits

  K3s 操作理论上都应该是通过 Kubectl 来进行的,但是作为没有很多空余时间的“打工初学者”,当然是要觅到一个合适的 Dashboard 了……本文就整理了两三个博主所使用过的 Dashboards

Kuboard(Made in China)

  刚开始接触 K3s 就知道 K8s 官方就有 Dashboard,但是这个 UI 设计有些复古,于是就支(wu)持(ru)国(qi)货(tu),选用了国产 Kuboard。

  原本看 Kuboard 官方出的 K8s 教程还以为是“国货之光”,但是后期使用时发现似乎有一些 Kuboard 自创的概念,官方并没有解释的很清楚,而且因为这些自创的概念使得面板在操作过程中有很多地方不知道如何下手。

  当然还有最重要的两点,首先是我原以为 K8s 汉化版教程是 Kuboard 自行翻译的,没想到其实 K8s 官方就有……然后就是安装完面板发现是一年前的版本,和官方教程有些地方有出入不说,K8s 一直在持续更新,我也不理解为什么面板能一年都未更新?

  但是因为刚安装 K3s 时就安装了 Kuboard,直接把这一段删了也有些可惜,所以就挪到了这篇博文作开头啦。各位愿意支持国货的也可以根据以下的教程自行搭建使用。

安装方式

  其实出于“规范使用”或者是企业大规模部署,安装 K3s 可视化管理面板都应该是用本地自建的单独一台支持例如 SSO 等身份验证方式的服务器。此种安装方式显而易见的的会有如下两个优点

  1. 便于管理多个集群,同时也不会因为集群发生故障而影响可视化管理面板的使用
  2. 可以原生支持双因子认证

  但是因为我们只是个人使用,且不会大规模部署集群,所以我们还是采用在 K8S 中安装 Kuboard v3(似乎这种方式也支持上述所说的两个优点,但博主未验证

安装 Kuboard

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml     # 一行命令在 K3s 集群中安装 Kuboard
# 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

watch kubectl get pods -n kuboard     # 等待 kuboard 名称空间中所有的 Pod 就绪

访问 Kuboard

  在浏览器中打开链接:http://your-node-ip-address:30080,这里有两点需注意

  1. 安全组需先放通 TCP 30080 端口
  2. 不管 Kuboard 安装在 Server 还是 Agent,访问 Kuboard 的地址均为 Agent 的 IP(博主在这里掉了个坑,一直在试 Server 的地址,各种防火墙开端口……)

  接着输入初始用户名和密码,并登录

  1. 用户名: admin
  2. 密码: Kuboard123

好了,Kuboard 也安装完成了。注意修改初始默认密码!

Dashboard(K8s 官方出品)

  既然是官方出品那也用不着博主废话了,直接上链接:部署和访问 Kubernetes 仪表板(Dashboard)

  这里要感谢一下腾讯云,因为博主在等对应 K8s 1.24 版本(此版本开始摒弃了 Dockershim,原因见官方文档:更新:弃用 Dockershim 的常见问题)的 K3s(既然未来都要弃用 Docker,那作为刚入门的小白来说当然就没必要装旧版咯),所以还未部署。腾讯云轻量服务器自带 K3s+Dashboard,可以随便折腾重装~😄

访问 Dashboard

  首先先获取登录的 token

dashboard-token     # 记录获取的 token

  在浏览器中打开链接:http://your-node-ip-address:9090,当然也是一样的需要在安全组先放通 TCP 9090 端口。

  而后输入刚才获取的 token 即可登录,且每次登录都需要使用该 token。

Kubeapps(Helm Charts 面板)

  看标题就能知道,这个不是 K3s 或者 K8s 的面板,而是 Helm Charts 的面板。

  博主在研究 K3s 装 Wordpress 的时候,K8s 官方教程一开始就写明了只适用于学习环境,而生产环境还是建议使用 Helm Chart。在 Helm Chart 安装 Wordpress 的官方教程 WordPress packaged by Bitnami 中提到了可以使用 Kubeapps 进行管理,所以博主就安装了这个面板,而且感觉使用起来挺顺手的。

准备工作

  安装 Kubeapps 需要使用 Helm,所以我们需要先安装 Helm。这里根据 K3s 服务器所处的不同网络环境(中国境内和境外)提供了两种安装方式。

中国境内安装 Helm

  在 Helm Releases 下载服务器所对应的版本(一般为 Linux amd64),并将其上传至 K3s 服务器中。

tar -zxvf helm-v3.0.0-linux-amd64.tar.gz     # 在 K3s 服务器中解压刚才上传的 Helm 压缩包,注意版本号
mv linux-amd64/helm /usr/local/bin/helm     # 在解压目中找到 Helm 程序,移动到需要的目录中
helm help     # 尝试是否成功安装

注意 针对 Linux AMD64,Helm 的自动测试只有在 CircleCi 构建和发布时才会执行。测试其他操作系统是社区针对系统问题请求 Helm 的责任。

中国境外安装 Helm

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

安装 Kubeapps

helm repo add bitnami https://charts.bitnami.com/bitnami
kubectl create namespace kubeapps
helm install kubeapps --namespace kubeapps bitnami/kubeapps     # 初次安装在这一步会报错

  如代码注释所示,运行上述最后一条命令时会报错:Error: Kubernetes cluster unreachable: Get “http://localhost:8080/version?timeout=32s”: dial tcp [::1]:8080: connect: connection refused

  这里是因为 Helm v3 版本不再需要 Tiller,而是直接访问 ApiServer 来与 k3s 进行交互,通过环境变量 KUBECONFIG 来读取存有 ApiServre 地址与 token 的配置文件地址,默认地址为 ~/.kube/config,所以我们需要手动配置 KUBECONFIG 环境变量。我们可以使用如下命令来临时解决这个问题。

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml     # 临时解决方案

  也可以通过如下命令永久解决此问题

vi /etc/profile     # 在此文件最底部增加一行:export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
source /etc/profile     # 保存配置

  解决上述报错后,我们继续安装

helm install kubeapps --namespace kubeapps bitnami/kubeapps
kubectl create --namespace default serviceaccount kubeapps-operator
kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator
kubectl get secret $(kubectl get serviceaccount kubeapps-operator -o jsonpath='{range .secrets[*]}{.name}{"\n"}{end}' | grep kubeapps-operator-token) -o jsonpath='{.data.token}' -o go-template='{{.data.token | base64decode}}' && echo     # 记录获取的 token

访问 Kubeapps

  此时提供两种方式访问 Kubeapps,其一是 Kubeapps 官方推荐的在 K3s 服务器上直接访问。当然这种方式需要服务器有浏览器,应该不适用于大部分的使用场景

kubectl port-forward -n kubeapps svc/kubeapps 8080:80     # 在服务器上访问:http://127.0.0.1:8080/,并输入刚才获取的 token 进行登录

  既然在服务器本地无法直接访问,那么我们可以修改 Kubeapps 的配置文件,使得可以从公网(节点 IP)进行访问

kubectl edit svc kubeapps -n kubeapps     # 将配置文件中的 ClusterPort 改为 NodePort
get svc -n kubeapps     # 查看 Kubeapps 所使用的端口

  接着便是在服务器安全组放开 Kubeapps 所使用的端口,而后通过:http://your-node-ip-address:port 访问 Kubeapps,并使用刚才获取的 token 进行登录。

  接下来可以我们可以在面板的 Catalog 中发现有好多已经打包好的原生应用可以一建部署。

Enjoy yourself~Yeah!🎇

因为本文是 K3s Dashboards,所以接下来又觅到什么好面板会及时更新哒~

Avatar

Hui.Ke

❤ Cyber Security | Safety is a priority.