install/v3/install-in-k8s.md
在 K8S 中安装 Kuboard,主要考虑的问题是,如何提供 etcd 的持久化数据卷。建议的两个选项有:
<strong>如果使用此方法安装 Kuboard 碰到问题,强烈建议您使用 docker run 或者 static-pod 的方式安装 kuboard .</strong>
执行 Kuboard v3 在 K8S 中的安装
<b-card no-body> <b-tabs content-class="mt-3" card pills> <b-tab title="在线安装" active>kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
# 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像
# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
::: tip 定制参数 如果您想要定制 Kuboard 的启动参数,请将该 YAML 文件下载到本地,并修改其中的 ConfigMap :::
</b-tab> <b-tab title="离线安装(K8S服务器不能访问公网)">在您的镜像仓库服务中创建一个名为 kuboard 的 repository(harbor 中称之为项目、华为镜像仓库中称之为组织)
输入您镜像仓库地址及 repository 名称(替换输入框中 registry.mycompayn.com 为你的镜像仓库服务地址即可):
<b-input size="sm" v-model="privateRegistry" placeholder="例如:registry.mycompany.com/kuboard"></b-input>
将所需镜像导入到您的私有镜像仓库
<div class="language-sh line-numbers-mode" v-if="privateRegistry"> <pre class="language-sh"> <code>{{dockerPull}}</code> </pre> <div class="line-numbers-wrapper"> <span class="line-number">1</span><span class="line-number">2</span>
<span class="line-number">3</span>
<span class="line-number">4</span>
<span class="line-number">5</span>
<span class="line-number">6</span>
<span class="line-number">7</span>
<span class="line-number">8</span>
<span class="line-number">9</span>
<span class="line-number">10</span>
<span class="line-number">11</span>
<span class="line-number">12</span>
在您的镜像仓库设置导入的镜像为公开可访问(无需镜像仓库的用户名密码)
获取 YAML 文件,并将该文件保存到集群 master 节点(或者 kubectl 客户端所在机器,假设文件名为 kuboard-v3.yaml)
<b-button variant="primary" @click="save">保存 YAML 到文件</b-button> <b-button variant="outline-primary" v-clipboard:copy="resultYaml" v-clipboard:success="onCopy">复制 YAML 到粘贴板</b-button>
执行安装指令
kubectl apply -f kuboard-v3.yaml
等待 Kuboard v3 就绪
执行指令 watch kubectl get pods -n kuboard,等待 kuboard 名称空间中所有的 Pod 就绪,如下所示,
如果结果中没有出现 kuboard-etcd-xxxxx 的容器,请查看
<b-button v-b-toggle.collapse-init-pending variant="danger" size="sm" style="margin-top: -5px;" v-on:click="$sendGaEvent('install-in-k8s', 'error-install-in-k8s', '查看等待 Kuboard 就绪时的常见问题')">
<b-icon icon="circle-fill" animation="throb" font-scale="1"></b-icon> 常见错误 </b-button>
中关于 缺少 Master Role 的描述。
[root@node1 ~]# kubectl get pods -n kuboard
NAME READY STATUS RESTARTS AGE
kuboard-agent-2-65bc84c86c-r7tc4 1/1 Running 2 28s
kuboard-agent-78d594567-cgfp4 1/1 Running 2 28s
kuboard-etcd-fh9rp 1/1 Running 0 67s
kuboard-etcd-nrtkr 1/1 Running 0 67s
kuboard-etcd-ader3 1/1 Running 0 67s
kuboard-v3-645bdffbf6-sbdxb 1/1 Running 0 67s
::: danger 缺少 Master Role
kubectl get nodes 将 看不到 master 节点;node-role.kubernetes.io/master= 标签时,此时执行 kubectl get nodes,结果如下所示:
[root@k8s-19-master-01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-19-master-01 Ready <none> 19d v1.19.11
k8s-19-node-01 Ready <none> 19d v1.19.11
k8s-19-node-02 Ready <none> 19d v1.19.11
k8s-19-node-03 Ready <none> 19d v1.19.11
k8s.kuboard.cn/role=etcd 的标签,来增加 kuboard-etcd 的实例数量;
your-node-name 节点添加所需要的标签
kubectl label nodes your-node-name k8s.kuboard.cn/role=etcd
:::
::: tip etcd
k8s.kuboard.cn/role=etcd 的标签,来增加 kuboard-etcd 的实例数量;
kubectl delete daemonset kuboard-etcd -n kuboardkubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml在浏览器中打开链接 http://your-node-ip-address:30080
输入初始用户名和密码,并登录
adminKuboard123::: tip 浏览器兼容性
<li>请使用 Chrome / FireFox / Safari / Edge 等浏览器</li> <li>不兼容 IE 以及以 IE 为内核的浏览器</li>:::
::: tip 添加新的集群
内网IP 的 30080 TCP、30081 TCP、30081 UDP 端口;执行 Kuboard v3 的卸载
kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
清理遗留数据
在 master 节点以及带有 k8s.kuboard.cn/role=etcd 标签的节点上执行
rm -rf /usr/share/kuboard
::: danger 注意事项
刚接触 K8S 的同学,强烈建议您使用 内建用户库 的方式安装 Kuboard-v3,在 K8S 中安装 Kuboard v3 时,需要理解更复杂的端口映射方式、存储卷声明/存储类等概念。
:::
获取部署 Kuboard 所需的 YAML 文件:
curl -o kuboard-v3.yaml https://addons.kuboard.cn/kuboard/kuboard-v3-storage-class.yaml
编辑 kuboard-v3.yaml 文件中的配置,该部署文件中,有两处配置必须修改:
KUBOARD_ENDPOINT
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kuboard-v3-config
namespace: kuboard
data:
# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-built-in.html
# [common]
KUBOARD_ENDPOINT: 'http://your-node-ip-address:30080'
KUBOARD_AGENT_SERVER_UDP_PORT: '30081'
KUBOARD_AGENT_SERVER_TCP_PORT: '30081'
storageClassName
volumeClaimTemplates:
- metadata:
name: data
spec:
# 请填写一个有效的 StorageClass name
storageClassName: please-provide-a-valid-StorageClass-name-here
accessModes: [ "ReadWriteMany" ]
resources:
requests:
storage: 5Gi
部署到 Kubernetes 集群
kubectl create -f kuboard-v3.yaml
在浏览器中打开链接 http://your-node-ip-address:30080
输入初始用户名和密码,并登录
adminKuboard123::: tip 浏览器兼容性
<li>请使用 Chrome / FireFox / Safari / Edge 等浏览器</li> <li>不兼容 IE 以及以 IE 为内核的浏览器</li>:::
执行 Kuboard v3 的卸载
kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3-storage-class.yaml
此 YAML 文件向 Kubernetes 中部署了一个三副本的 StatefulSet kuboard-etcd 和一个单副本的 Deployment kuboard-v3;其中 Deployment kuboard-v3 暂时不支持多副本,请保持其 replicas 字段为 1,将在后续的版本升级中解决 kuboard-v3 多副本部署的问题。