Etcd可视化工具:Kstone部署(一),基于Helm快速部署_运维

  作者 | 李大白

 

 本文已参与「开源摘星计划」,欢迎正在阅读的你加入。

 活动链接:​​https://github.com/weopenprojects/WeOpen-Star​


部署环境

  • 有一个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

Etcd可视化工具:Kstone部署(一),基于Helm快速部署_云原生_02


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

Etcd可视化工具:Kstone部署(一),基于Helm快速部署_Kstone_03

查看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

Etcd可视化工具:Kstone部署(一),基于Helm快速部署_etcd_04

可以看到Pod服务都部署成功了,如果部署失败,可自行排查。


查看Service资源

[root@master charts]# kubectl -n kstone  get  svc

Etcd可视化工具:Kstone部署(一),基于Helm快速部署_运维_05

配置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

Etcd可视化工具:Kstone部署(一),基于Helm快速部署_Kstone_06


访问Kstone dashboard

         在浏览器输入域名或节点地址访问Kstone的UI管理界面。因为Kstone-dashboard服务是以Nodeport的方式暴露的,也可以通过节点IP+ 服务端口的方式进行访问。

用户名:admin

默认密码:adm1n@kstone.io

Etcd可视化工具:Kstone部署(一),基于Helm快速部署_Kstone_07

【下一篇】: 使用Kstone高效管理etcd集群