作者 | 李大白
本文已参与「开源摘星计划」,欢迎正在阅读的你加入。
部署环境
- 有一个kubernetes集群;
- 安装有Helm;
- 安装Git(可选);
- 操作系统: CentOS 7.5 (VMWare 虚拟主机);
安装Helm
因为我用Helm部署Kstone,所有得在我的kubernetes集群的master节点先安装好Helm包管理工具。
$ wget https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz
$ tar -zxvf helm-v3.7.2-linux-amd64.tar.gz
$ mv linux-amd64/helm /usr/local/bin/helm
$ helm version
version.BuildInfo{Version:"v3.7.2", GitCommit:"663a896f4a815053445eec4153677ddc24a0a361",
GitTreeState:"clean", GoVersion:"go1.16.10"}
helm安装包提前下载好,因为下载过程会比较慢。
安装git
$ yum install -y git
$ git version
git version 1.8.3.1
下载Kstone Chart包
$ git clone -b release-0.2 git@github.com:tkestack/kstone.git
$ cd kstone
$ cd ./charts
创建Kstone命名空间
$ kubectl create ns kstone
创建 Admin TOKEN
为 dashboard-api 创建 Admin TOKEN 以访问 Kubernetes
$ kubectl create serviceaccount kube-admin -n kube-system
$ kubectl create clusterrolebinding kube-admin \
--clusterrole=cluster-admin --serviceaccount=kube-system:kube-admin
获取 Admin TOKEN
从 Kubeadm 集群获取 Admin TOKEN。
$ kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='kube-admin')].data.token}" -n kube-system|base64 --decode
修改values.yaml配置
修改charts/dashboard-api/values.yaml文件中kube.token中的参数值,将刚才获取到的Token复制到文件中。$token 是待部署集群的访问凭证 TOKEN,需要能够访问集群中的所有资源。
[root@master charts]# vim charts/dashboard-api/values.yaml
kube:
# need to fill
token: $token
target: kubernetes.default.svc.cluster.local:443
Helm部署Kstone
Helm 安装测试环境的Kstone,values.test.yaml为测试环境,values.yaml为生产环境,区别就是测试环境所占用的资源比较少,如果自己的kubernetes集群资源足够,可以部署生产的。
$ cd charts/
$ pwd
/app/kstone/charts
$ helm install kstone . -n kstone -f values.test.yaml
查看Pod资源
[root@master charts]# kubectl -n kstone get pods
NAME READY STATUS RESTARTS AGE
kstone-backup-operator-7664c59c84-n8dmk 1/1 Running 0 23m
kstone-dashboard-5c9587b569-5s6g4 1/1 Running 0 23m
kstone-dashboard-api-546cbf8578-glhdq 1/1 Running 0 23m
kstone-etcd-controller-76d988d96c-g4pxz 1/1 Running 0 23m
kstone-etcd-operator-cb8c9f8b5-btxzg 1/1 Running 0 23m
kstone-grafana-64f86f5b59-dbwpf 2/2 Running 0 23m
kstone-inspection-controller-6c548dd76d-hvkgf 1/1 Running 0 23m
kstone-prometheus-operator-58df5b47cc-dsbvt 1/1 Running 0 23m
prometheus-kstone-prometheus-prometheus-0 2/2 Running 0 19m
可以看到Pod服务都部署成功了,如果部署失败,可自行排查。
查看Service资源
[root@master charts]# kubectl -n kstone get svc
配置Ingress资源(可选)
在安装Kstone的时候,默认创建了Ingress资源,但无法正常使用,需要删掉后重新创建。前提是kubernetes集群中部署有Ingress-conroller控制器。
1)查看部署的Ingress
$ kubectl -n kstone get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
kstone <none> * 80 33m
2)删除旧的Ingress
$ kubectl delete ingress kstone -n kstone
ingress.networking.k8s.io "kstone-ingress" deleted
3)重新创建Ingress
$ kubectl apply -f kstone-ingress.yaml
ingress.networking.k8s.io/kstone-ingress created
$ cat kstone-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kstone-ingress
namespace: kstone
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kstone-dashboard
port:
number: 80
- path: /apis
pathType: Prefix
backend:
service:
name: kstone-dashboard-api
port:
number: 80
- path: /grafana
pathType: Prefix
backend:
service:
name: kstone-grafana
port:
number: 80
访问Kstone dashboard
在浏览器输入域名或节点地址访问Kstone的UI管理界面。因为Kstone-dashboard服务是以Nodeport的方式暴露的,也可以通过节点IP+ 服务端口的方式进行访问。
用户名:admin
默认密码:adm1n@kstone.io
【下一篇】: 使用Kstone高效管理etcd集群