Kuboard-Spray安装kubernetes集群

1,944 阅读4分钟

kubernetes集群安装环境

  • 虚拟机:vmware 17
  • OS:Ubuntu server 22.04

七个虚拟主机:

  • ks: 192.168.3.10 Kuboard-Spray和Kuboard节点
  • n1: 192.168.3.11 k8s集群控制节点
  • n2: 192.168.3.12 k8s集群控制节点
  • n3: 192.168.3.13 k8s集群控制节点
  • n4: 192.168.3.14 k8s集群工作节点
  • n5: 192.168.3.15 k8s集群工作节点
  • n6: 192.168.3.16 k8s集群工作节点

最终集群架构如下图:

image.png

Ubuntu Server设置静态IP

将每个虚拟机的ip设置为固定IP:

vim /etc/netplan/00-installer-config.yaml

cody@n1:~$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      dhcp4: no
      addresses: 
        - 192.168.3.11/24
      optional: true
      routes:
        - to: default
          via: 192.168.3.1
      nameservers: 
        addresses: 
          - 114.114.114.114 # 首选 DNS 服务器 
          - 8.8.8.8 # 备用 DNS 服务器
  version: 2

修改配置后,应用刷新配置:

sudo netplan apply

Ubuntu Server设置允许root用户远程连接

kuboard-spray创建的集群节点只允许使用root用户。

vi /etc/ssh/sshd_config

添加如下一行配置:

PermitRootLogin yes

kuboard-spray主机安装docker

kuboard-spray主机需要预先安装docker.

参考官方安装指南

  1. 更新apt包索引并安装包以允许apt通过 HTTPS 使用存储库:
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg lsb-release
  1. 添加 Docker 的官方 GPG 密钥:
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
  1. 使用以下命令设置存储库:
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 安装 Docker Engine、containerd 和 Docker Compose:
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 设置国内镜像源:
vi /etc/docker/daemon.json

输入以下内容:

{
  "registry-mirrors": [
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://mirror.ccs.tencentyun.com",
    "https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://registry.docker-cn.com"
  ]
}

安装Kuboard-Spray

使用以下命令安装最新版本的Kuboard-Spray

docker run -d \
  --privileged \
  --restart=unless-stopped \
  --name=kuboard-spray \
  -p 80:80/tcp \
  -e TZ=Asia/Shanghai \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/kuboard-spray-data:/data \
  eipwork/kuboard-spray:latest-amd64
  # 如果您是 arm64 环境,请将标签里的 amd64 修改为 arm64,例如 eipwork/kuboard-spray:latest-arm64
  # 如果抓不到这个镜像,可以尝试一下这个备用地址:
  # swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd64

在浏览器打开地址 http://192.168.3.10 输入用户名admin,默认密码Kuboard123,即可登录Kuboard-Spray界面。

进入主界面后,先在【资源包管理】模块中导入Kuboard-Spray 离线资源包。选择最新的k8s v1.25.5版本。 image.png

然后进入【集群管理】创建集群。填写集群名称,选择集群资源包。

image.png

点击确定,进入集群规划界面。将节点的IP,u/p和etcd名称进行配置即可。配完后,点击【验证连接】验证是否能正常连接节点。

image.png

节点配置完成,点击【安装/设置集群】->【确定】进入集群安装过程。

image.png

安装过程持续时间取决于你的集群大小、硬件配置和网速,本次31分钟安装成功。

image.png

image.png

安装Kuboard

kuboard-spray在安装集群时,支持在可选组件中配置安装Kuboard.

image.png

但我不想安装在K8s集群中,所以选择在ks节点上使用docker安装。

docker run -d --restart=unless-stopped --name=kuboard -p 8080:80/tcp -p 10081:10081/tcp -e KUBOARD_ENDPOINT="http://192.168.3.10:8080"  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081"  -v /root/kuboard-data:/data eipwork/kuboard:v3

浏览器输入 192.168.3.10:8080

u/p: admin/Kuboard123

主界面导入集群,选择kubeconfig方式。

image.png

回到Kuboard Spray【集群管理】菜单,切换到【访问集群】页,点击【获取kubeconfig文件】按钮,再点 点击【复制到剪贴板】,拷贝kubeconfig文件内容。

image.png

再回到Kuboard,添加集群。拷贝kubeconfig文件内容后,Context和API Server会自动填充。

image.png

点击【确定】,集群就导入成功了。

image.png

image.png

安装Kubernetes dashboard

本地配置好kubeconfig文件,配置文件地址: ~/.kube/config。

C:\Users\Lenovo>kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

namespace/kubernetes-dashboard created
serviceaccount/kubernetes-dashboard created
service/kubernetes-dashboard created
secret/kubernetes-dashboard-certs created
secret/kubernetes-dashboard-csrf created
secret/kubernetes-dashboard-key-holder created
configmap/kubernetes-dashboard-settings created
role.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
deployment.apps/kubernetes-dashboard created
service/dashboard-metrics-scraper created
deployment.apps/dashboard-metrics-scraper created

查看pod状态是否就绪。

C:\Users\Lenovo>kubectl get pods -n kubernetes-dashboard
NAME                                         READY   STATUS              RESTARTS   AGE
dashboard-metrics-scraper-64bcc67c9c-vwrtq   0/1     ContainerCreating   0          11s
kubernetes-dashboard-5c8bd6b59-pdhpn         0/1     ContainerCreating   0          12s

C:\Users\Lenovo>kubectl get pods -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-64bcc67c9c-vwrtq   1/1     Running   0          2m44s
kubernetes-dashboard-5c8bd6b59-pdhpn         1/1     Running   0          2m45s

pod就绪后,在本地开启代理:

C:\Users\Lenovo>kubectl proxy
Starting to serve on 127.0.0.1:8001

然就可通过以下链接进行访问:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login

image.png

为了保护集群数据,默认情况下,Dashboard会使用最少的RBAC配置进行部署。Dashboard目前仅支持使用Bearer令牌登录。因此需要要创建一个名为admin-user的ServiceAccount,再创建一个ClusterRolebinding,将其绑定到 Kubernetes集群中默认初始化的 cluster-admin角色

创建服务账户

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

创建ClusterRoleBinding

通常集群安装完成后,会生成cluster-admin角色,如果没有则需要创建。

image.png

然后将帐号admin-user绑定到集群角色cluster-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: kubernetes-dashboard

获取令牌

执行以下命令获得令牌:

C:\Users\Lenovo>kubectl -n kubernetes-dashboard create token admin-user
eyJhbGciOiJSUzI1NiIsImtpZCI6IktJbHJxd2JfX3YydWJrWU9Za1ByalVSLVdRSHl0Mk0wbU1MZER6d2V3TUkifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNjczOTUzOTQ0LCJpYXQiOjE2NzM5NTAzNDQsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiMTEzMjAxYTgtNWFjYi00YWMwLWIwOGUtOTlkNWY1ZmI5OGE0In19LCJuYmYiOjE2NzM5NTAzNDQsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.AxaHq0vadKfhIf6z-NSXyuYh_iSSB2F99dijtj-u9AeAMM1sLbqTuGlSRnOnwuW-c0B5v80SM_6yaUJ3qP4KbDXXr190qY1fZ_DpzjXIRI1tjvbqosDKzK3_dYa8PCq8N-ZQAxRaizf4HnfGmtoD8WDJ8NrmxCzV3QXJ5lAImsmIsa7JLBD9n5i_xfqxh03QkgzZA7cDjiEQJDatpuIdDJ2udTRYDq4jDrzrncdbmRou5AhL1Jw1blq5jrmlULvD8kw6WSkkJubtPV6j3OmS233wuXroa2nd-8Rl2THgsr8iFwAfdVEWK6PlQWG89KZ8ndROyAQrQfSSqiENN2ws4Q

复制令牌并将其粘贴到登录界面中的输入 token字段中,点击确定即可成功登录。

image.png

参考文档:

  1. Kuboard Spray安装说明(Kuboard Spray官方文档) kuboard-spray.cn/
  2. Kuboard安装说明 (Kuboard 官方文档) press.demo.kuboard.cn/install/v3/…
  3. Kubernetes dashboard安装说明(Kubernetes 官方文档) kubernetes.io/zh-cn/docs/…
  4. 创建dashboard用户(Kubernetes 官方文档)dashboard/creating-sample-user.md at master · kubernetes/dashboard (github.com)
  5. Kubernetes dashboard安装说明(Kuboard 官方文档)kuboard.cn/install/ins…