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集群的神器。

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
TKE部署kubord
kubord部署很简单,获取部署的yaml,直接kubectl命令部署这个yaml即可
<<上一篇
下一篇>>