TKE部署kubord
1. 部署kubord
kubord部署很简单,获取部署的yaml,直接kubectl命令部署这个yaml即可
curl -o kuboard-v3.yaml https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
kubectl apply -f kuboard-v3.yaml
yaml文件具体内容如下
- 需要修改KUBOARD_ENDPOINT为你集群的nodeip
- storageClassName改成集群中存在的存储类
[root@VM-0-13-centos ~]# cat kuboard-v3.yaml
---
apiVersion: v1
kind: Namespace
metadata:
name: kuboard
---
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://xx.xx.xx.xx:30080'
KUBOARD_AGENT_SERVER_UDP_PORT: '30081'
KUBOARD_AGENT_SERVER_TCP_PORT: '30081'
KUBOARD_SERVER_LOGRUS_LEVEL: info # error / debug / trace
# KUBOARD_AGENT_KEY 是 Agent 与 Kuboard 通信时的密钥,请修改为一个任意的包含字母、数字的32位字符串,此密钥变更后,需要删除 Kuboard Agent 重新导入。
KUBOARD_AGENT_KEY: 32b7d6572c6255211b4eec9009e4a816
# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-gitlab.html
# [gitlab login]
# KUBOARD_LOGIN_TYPE: "gitlab"
# KUBOARD_ROOT_USER: "your-user-name-in-gitlab"
# GITLAB_BASE_URL: "http://gitlab.mycompany.com"
# GITLAB_APPLICATION_ID: "7c10882aa46810a0402d17c66103894ac5e43d6130b81c17f7f2d8ae182040b5"
# GITLAB_CLIENT_SECRET: "77c149bd3a4b6870bffa1a1afaf37cba28a1817f4cf518699065f5a8fe958889"
# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-github.html
# [github login]
# KUBOARD_LOGIN_TYPE: "github"
# KUBOARD_ROOT_USER: "your-user-name-in-github"
# GITHUB_CLIENT_ID: "17577d45e4de7dad88e0"
# GITHUB_CLIENT_SECRET: "ff738553a8c7e9ad39569c8d02c1d85ec19115a7"
# 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-ldap.html
# [ldap login]
# KUBOARD_LOGIN_TYPE: "ldap"
# KUBOARD_ROOT_USER: "your-user-name-in-ldap"
# LDAP_HOST: "ldap-ip-address:389"
# LDAP_BIND_DN: "cn=admin,dc=example,dc=org"
# LDAP_BIND_PASSWORD: "admin"
# LDAP_BASE_DN: "dc=example,dc=org"
# LDAP_FILTER: "(objectClass=posixAccount)"
# LDAP_ID_ATTRIBUTE: "uid"
# LDAP_USER_NAME_ATTRIBUTE: "uid"
# LDAP_EMAIL_ATTRIBUTE: "mail"
# LDAP_DISPLAY_NAME_ATTRIBUTE: "cn"
# LDAP_GROUP_SEARCH_BASE_DN: "dc=example,dc=org"
# LDAP_GROUP_SEARCH_FILTER: "(objectClass=posixGroup)"
# LDAP_USER_MACHER_USER_ATTRIBUTE: "gidNumber"
# LDAP_USER_MACHER_GROUP_ATTRIBUTE: "gidNumber"
# LDAP_GROUP_NAME_ATTRIBUTE: "cn"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kuboard-etcd
namespace: kuboard
labels:
app: kuboard-etcd
spec:
serviceName: kuboard-etcd
replicas: 3
selector:
matchLabels:
app: kuboard-etcd
template:
metadata:
name: kuboard-etcd
labels:
app: kuboard-etcd
spec:
containers:
- name: kuboard-etcd
image: swr.cn-east-2.myhuaweicloud.com/kuboard/etcd:v3.4.14
ports:
- containerPort: 2379
name: client
- containerPort: 2380
name: peer
env:
- name: KUBOARD_ETCD_ENDPOINTS
value: >-
kuboard-etcd-0.kuboard-etcd:2379,kuboard-etcd-1.kuboard-etcd:2379,kuboard-etcd-2.kuboard-etcd:2379
volumeMounts:
- name: data
mountPath: /data
command:
- /bin/sh
- -c
- |
PEERS="kuboard-etcd-0=http://kuboard-etcd-0.kuboard-etcd:2380,kuboard-etcd-1=http://kuboard-etcd-1.kuboard-etcd:2380,kuboard-etcd-2=http://kuboard-etcd-2.kuboard-etcd:2380"
exec etcd --name ${HOSTNAME} \\
--listen-peer-urls http://0.0.0.0:2380 \\
--listen-client-urls http://0.0.0.0:2379 \\
--advertise-client-urls http://${HOSTNAME}.kuboard-etcd:2379 \\
--initial-advertise-peer-urls http://${HOSTNAME}:2380 \\
--initial-cluster-token kuboard-etcd-cluster-1 \\
--initial-cluster ${PEERS} \\
--initial-cluster-state new \\
--data-dir /data/kuboard.etcd
volumeClaimTemplates:
- metadata:
name: data
spec:
# 请填写一个有效的 StorageClass name
storageClassName: cbs
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:
name: kuboard-etcd
namespace: kuboard
spec:
type: ClusterIP
ports:
- port: 2379
name: client
- port: 2380
name: peer
selector:
app: kuboard-etcd
---
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: '9'
k8s.kuboard.cn/ingress: 'false'
k8s.kuboard.cn/service: NodePort
k8s.kuboard.cn/workload: kuboard-v3
labels:
k8s.kuboard.cn/name: kuboard-v3
name: kuboard-v3
namespace: kuboard
spec:
replicas: 1
selector:
matchLabels:
k8s.kuboard.cn/name: kuboard-v3
template:
metadata:
labels:
k8s.kuboard.cn/name: kuboard-v3
spec:
containers:
- env:
- name: KUBOARD_ETCD_ENDPOINTS
value: >-
kuboard-etcd-0.kuboard-etcd:2379,kuboard-etcd-1.kuboard-etcd:2379,kuboard-etcd-2.kuboard-etcd:2379
envFrom:
- configMapRef:
name: kuboard-v3-config
image: 'swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3'
imagePullPolicy: Always
name: kuboard
---
apiVersion: v1
kind: Service
metadata:
annotations:
k8s.kuboard.cn/workload: kuboard-v3
labels:
k8s.kuboard.cn/name: kuboard-v3
name: kuboard-v3
namespace: kuboard
spec:
ports:
- name: webui
nodePort: 30080
port: 80
protocol: TCP
targetPort: 80
- name: agentservertcp
nodePort: 30081
port: 10081
protocol: TCP
targetPort: 10081
- name: agentserverudp
nodePort: 30081
port: 10081
protocol: UDP
targetPort: 10081
selector:
k8s.kuboard.cn/name: kuboard-v3
sessionAffinity: None
type: NodePort
2. 配置ingress
这里我么用nginx-ingress来配置一个域名提供访问
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: ingress
nginx.ingress.kubernetes.io/use-regex: "true"
name: kuboard-ingress
namespace: kuboard
spec:
rules:
- host: kuboard.tke.niewx.cn
http:
paths:
- backend:
serviceName: kuboard-v3
servicePort: 80
path: /
tls:
- hosts:
- kuboard.tke.niewx.cn
secretName: kuboard-tls
创建好之后我们就可以用kuboard.tke.niewx.cn这个域名来访问kuboard
3. 登录kuboard
浏览器输入访问域名,会提示你输入账号密码登录,默认的登录账号密码是
- 用户名:
admin
- 密码:
Kuboard123
4. 添加k8s集群
这里我们演示下如何添加集群到kuboard来管理
这里等agent的pod运行,则表示集群导入成功
[root@VM-0-13-centos ~]# kubectl get pods -n kuboard -o wide -l "k8s.kuboard.cn/name in (kuboard-agent, kuboard-agent-2)"
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kuboard-agent-2-5bcb78d76b-n5c82 1/1 Running 0 36s 10.0.0.87 eklet-subnet-ktam6hp8 <none> 1/1
kuboard-agent-b954f6c4-hkwtx 1/1 Running 0 36s 10.0.0.254 eklet-subnet-ktam6hp8 <none> 1/1
5. 操作导入集群资源
集群导入成功后,我们就可以在kuboard来对我们的集群资源进行增删改查,点击集群查看会让你选择访问身份,这里可以选择kuboard-admin,默认有所有的访问权限,然后点击集群概要就可以进入集群概览页了
我们到命名空间下点击某一个命名空间进入查看资源
进入ns后,我们可以操作ns下的资源,这里介绍几个好用的功能
5.1 部署套件
kuboard给我们提供了监控,日志,存储等监控套件,支持一键部署到集群中,可以省去了很多部署过程
5.2 工作负载的复制功能
kuboard支持对已有的工作负载进行复制,这样支持一键复制,可以跨ns和跨集群,省去了多次部署的麻烦
5.3 工作负载导出功能
我们可以将某一个命名空间下的资源对象导出成yaml,如果需要部署到其他集群,则只需要一键apply导出的yaml文件即可
5.4 导入工作负载
如果您有部署的yaml文件,可以用导入工作负载功能,这里在导入的过程中会对你的资源对象是否冲突及时调整
5.5 具体操作工作负载
点击工作负载进去,可以查看pod的所有信息,我们可以在一个界面查看deployment对应关联的其他资源,比如service,ingress等
点击文件浏览器,可以支持从容器传输文件到本地或者上传文件到容器内
点击追踪日志可以查看到容器的标准输出日志
点击sh或者bash,可以直接进入容器内
其他基本功能,比如查看事件,查看修改yaml,这些功能就不一一介绍了,大家可以自行体验,总体来说,kuboard的功能比现在公有云k8s产品控制台功能更加丰富。
6. 创建访问用户
有时候我们为了做权限控制,需要给不同的用户分配不同的权限查看集群,我们可以在用户与权限界面创建其他登录用户
这里我们新建一个niewx的用户,给用户赋予viewer权限
这里可以给用户绑定到所属用户组,绑定全局和某一个集群的权限,这里我们给t用绑定tke集群的viewer权限
我们登录下niewx账号,看下对应的权限是否只有viewer
点击集群,这里选择角色可以看到只有viewer身份可以选择,kuboard-admin是无法选择的
查看工作负载也只有导入工作负载功能,点击工作负载进入查看,也只有查看日志和pod信息权限,不能拷贝文件或者进入容器等。
如果你觉得系统自带的角色不能满足你的需求,你可以自定义角色,这里你可以自定义角色有哪些资源的权限, 可以非常灵活的进行配置。
kuboard的介绍就到这里,用这个来管理你的k8s集群,非常的方便,所提供的功能也非常丰富,可以说是管理k8s集群的神器。