Kubernetes Kuboard部署

Kuboard是一款免费的Kubernetes管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具等,
可以便捷的搭建一个生产可用的Kubernetes容器云平台,轻松管理和运行云原生应用。
也可以直接将Kuboard安装到现有的Kubernetes集群,通过Kuboard提供的Kubernetes RBAC管理界面,将Kubernetes提供的能力开放给开发/测试团队。
项目地址:https://kuboard.cn/

部署

#提前部署好MetalLB 负载均衡 支持 LoadBalancer

[root@k8s-master01 Kuboard]# cat deploy.yaml
---
apiVersion: v1
kind: Namespace
metadata:
  name: kuboard
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kuboard-boostrap
  namespace: kuboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kuboard-boostrap-crb
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kuboard-boostrap
  namespace: kuboard
---
apiVersion: apps/v1
kind: Deployment
metadata:
  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_ENDPOINT"
              value: "http://kuboard-v3:80"
            - name: "KUBOARD_AGENT_SERVER_TCP_PORT"
              value: "10081"
          image: eipwork/kuboard:v3
          volumeMounts:
          - name: kuboard-data
            mountPath: /data
            readOnly: false
          imagePullPolicy: Always
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /
              port: 80
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: kuboard
          ports:
            - containerPort: 80
              name: web
              protocol: TCP
            - containerPort: 443
              name: https
              protocol: TCP
            - containerPort: 10081
              name: peer
              protocol: TCP
            - containerPort: 10081
              name: peer-u
              protocol: UDP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /
              port: 80
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
      volumes:
      - name: kuboard-data
        emptyDir: {}
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      serviceAccount: kuboard-boostrap
      serviceAccountName: kuboard-boostrap
---
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s.kuboard.cn/name: kuboard-v3
  name: kuboard-v3
  namespace: kuboard
spec:
  ports:
    - name: web
      nodePort: 30080
      port: 80
      protocol: TCP
      targetPort: 80
    - name: tcp
      nodePort: 30081
      port: 10081
      protocol: TCP
      targetPort: 10081
    - name: udp
      nodePort: 30081
      port: 10081
      protocol: UDP
      targetPort: 10081
  selector:
    k8s.kuboard.cn/name: kuboard-v3
  type: LoadBalancer

#
[root@k8s-master01 Kuboard]# kubectl get pods -n kuboard
NAME                          READY   STATUS    RESTARTS   AGE
kuboard-v3-6c9f7ddd97-d7q8h   1/1     Running   0          16m
[root@k8s-master01 Kuboard]# kubectl get svc
NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
externalname-redis-svc      ExternalName   <none>          redis.ik8s.io   6379/TCP       21h
kubernetes                  ClusterIP      10.96.0.1       <none>          443/TCP        6d3h
nginx-loadbalancer-server   LoadBalancer   10.110.35.224   192.168.40.51   80:31238/TCP   4d18h
[root@k8s-master01 Kuboard]# kubectl get svc -n kuboard
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                                        AGE
kuboard-v3   LoadBalancer   10.111.22.174   192.168.40.53   80:30080/TCP,10081:30081/TCP,10081:30081/UDP   16m

Ingress可选

[root@k8s-master01 Kuboard]# cat ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kuboard
  namespace: kuboard
spec:
  ingressClassName: nginx
  rules:
  - host: kuboard.magedu.com
    http:
      paths:
      - path: /
        backend:
          service:
            name: kuboard-v3
            port:
              number: 80
        pathType: Prefix

管理端访问

[root@k8s-master01 ~]# kubectl config view --raw
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJZDJpZHp4M0pZNFV3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBeE1EVXdNekE0TlRKYUZ3MHpOREF4TURJd016RXpOVEphTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURPY2dEUlB2YnhSTkhUeXp0N0M4MTIwYlZUVElyU01JNVE3RkZwOTE4SU5tS2lvUHR4SXRMbFdiNCsKVkl2S0JUWmgvVVFPNjhIZmFNRnIxb2FIRTZrYUdDM05qSHIxU3pmSGd0T3hNSGhXQWt0aGd0TjRnNHNrYUY4aApxeEZyOVN6Z2JYeXhmdG9VM3VFVFhYUDllWE9nSDBjckRydkc4dmczZnVpeFErNEJsTUY3NFZJV0RBR3QyQkl6CmJHK2NMaGVvRlFBamFKOUdZaXpsMkJkZTBIanorelM4T3YyRFI4TDFhY3ZKQWRnTVZzMTR6ZlJYL0k0RUVKQlkKWHdCNWNEVUZ5OUpQZDVTd0hyVmRxQktUbnlyanN3QzVZVDhzRWtPYlh6dkhKcThRVHR0RyswV0twRlBUUjhsYgpNZFdkSHBnVzY4YVUxRit3akdQdkx5NXU5UUREQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJTVHltOE1HSVViTkJsbTJYWGFkUXZnNG84dFdEQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXJNYTFPMmNhaAp3enFZUDBGWE5MdWlqZmlYVitiR3Ywb2J0aUFCMzlDNXdzMkVlWUg0TGVXS0RwNzJxN091R2o3MlJLbEFVYXdrCnlOOTFObms2NGlQcWJuK2p5Kyt6RUJjWTJBN25FT3R3YStUNG9sYWEyWnJmZTlZMlVmTkJKd294dVN2T1pPSisKYXFLWWFCQkg4SDN1d2FDa1dCRm9IN2dHdUZMUXE3S1MybUtzd1RqVE1EYm5YNzRLN1ZQaytoTE1ablpBS2FzNQp2c0lCTEZSUHV6aElpTFoxMjUrN0ptbzFDOXBPTVhabDdra1doT2JKejVnUUVlWFJJWDZhakFOejJLRHVhREZ0CkJKODdqMkQzbW1LWXhlN2xneFV4QVBwK2NURkY5YUlYU1NQU3dpTlRTVVF0TVV0eTRjMHFrSGl0K1Q2STM2ZWkKajFZYmVtQXc0dGg5Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    server: https://192.168.40.101:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJUUZXUW5uOU5EMFF3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBeE1EVXdNekE0TlRKYUZ3MHlOVEF4TURRd016RXpOVE5hTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXB1ZFhjTWl5dWkyNk1yRXMKZ05Lak9jbTRMejlQWEFPZmQ1cEdiWSttY0xPV1BXejJUS2VJdEdBQ0hxTlJJWEtTV2JJMk9HdUdoeFZaV2RERQpFV3RDRi9TYitUNkFvRzNxcDhtNzV5QkNrY0wwMmZQVkhXUVkrVmtmaTFpK3BOeStiakw3UjJvTzUwUUdDemRpCnhxdDJvNUtERFFpd05WaTRaUGQ1R2FmOE55Unp1SUdrSk5UOHBBSForVFdTcDdnQU5BM1UxanFWaTVsYWFRTm4KYzdTK1c0M25wN1FuY2c0WkhnNVBEREVMV1lacGxvMlV0cm9Ta3BRY3JyMmMvOEx2WjM0VkF2MElZOFVQaVB4MQorWWtGMTI1cmIyYnh1d3RHQ1YvUDRKbGpxWm1NOFZYU0VDTUpCUlF5NjJpODZqb2Y4Y2c1eEJqRGRlWkFxaU9lCmRuWVA1UUlEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JTVHltOE1HSVViTkJsbTJYWGFkUXZnNG84dApXREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBZFBQV2VFRW43SVpVUmVoclhtcE0rMnV5Q01wdzNRU2lUWXNZCndzazJ0Z3VaZTRyV3R6REIzaTZZNTVON3BteXdmcGNvNjlvdUtLbGc5WWpXT0ZkaW9jN1ByY2pEUlU0RVpGN2sKTlAwb0F2M3dSRHRCdERVWjdlSkM3UFFCemVCbGk0ZDY1U20va1ZZOVRQdUdpamRQQk15dTUxSUYvdUl6MTg5dwpUdkZEcGRCRjhRa3RtRVRtY3B6R2VkY1kyb1JvRmNzQVNuWWFlQ0VRRlAyS2dubmRJek5FdWl6eG1HU0ZPV0k1CmduWnYxbG1lakpGK3dLSmI2cTdoNE55QVFDU3ZSYXlZTDQrVDN1ZHQxLzNWR2dhUnljYnBVL2JPMjVHWGk5ZWoKYXJvS3FXSTVpNVVzZDF5MTZFR1p1azJnQ0NuUmZYVzZwVzBqNWRCSHBRRjVoSGwxZHc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBcHVkWGNNaXl1aTI2TXJFc2dOS2pPY200THo5UFhBT2ZkNXBHYlkrbWNMT1dQV3oyClRLZUl0R0FDSHFOUklYS1NXYkkyT0d1R2h4VlpXZERFRVd0Q0YvU2IrVDZBb0czcXA4bTc1eUJDa2NMMDJmUFYKSFdRWStWa2ZpMWkrcE55K2JqTDdSMm9PNTBRR0N6ZGl4cXQybzVLRERRaXdOVmk0WlBkNUdhZjhOeVJ6dUlHawpKTlQ4cEFIWitUV1NwN2dBTkEzVTFqcVZpNWxhYVFObmM3UytXNDNucDdRbmNnNFpIZzVQRERFTFdZWnBsbzJVCnRyb1NrcFFjcnIyYy84THZaMzRWQXYwSVk4VVBpUHgxK1lrRjEyNXJiMmJ4dXd0R0NWL1A0SmxqcVptTThWWFMKRUNNSkJSUXk2Mmk4NmpvZjhjZzV4QmpEZGVaQXFpT2VkbllQNVFJREFRQUJBb0lCQUViZ29XSjA2R2xsOTllRgpJK2dGQzJvRC91S1ptU0x6S3VwSXFyWG1OZ0ZRVW5IOWJzNzRxblltKzE5MWJZT3R1dmE2Vm9vNUoyVUFMUFNXClVsMHZWbDhEOHFTeTVUNjd6dFc0TnNLZEVZZ0M2YVlSQlNTNUdGM3plaERiL0FIWStFbWwvczNCL1ZnNnEvSmgKYitIOGVLSllHcTBUVG5rcEZ3MVJocXpkaUo4RmZVbjM1YTNuM1FMaFg0bzB5akJTa3FhenFlTWhEN291cHJDTQp4alBmOWxlZDU2Z2lKZVFkLzYzRURiMXZyM0ZDb1NFUHRDRkIvWVBycDROeFhxSGM0MUlEcDVCdk5DTzBOcGt3CmJxU0FhM3NNY3pZOHlGVkNNTkpPOXFNR1p0U0t0Zy83YTl6TXEwUzQxRzZLT0d5RlFwWDZHTUp0WEJ2VW8vQ1QKckZZaVU2RUNnWUVBMENmSjhsN2JOdTFPSkprMmEwVzlGSzBSVFQ0UFRRaWNyOHpUcER6amNmQm5hOWZkK0ZsKwpKZnJiZHRjK2F6eUc2cStWelZ5UHlwNk1xWSt0eHNGZ2JKTUs1ZUN0QTVZS3huSDhlMUp1ei92bDFqQm4rRGlEClR0V1JTVGxxNXRadjhBNlNIU1dINmNnMzZtcXYwSzlqVE85YzZrSzhSMHZkQk5lWUxmMk82ZWtDZ1lFQXpVUTcKT2FtcTBzdlBDSE1MSXJ5TXI5cmF0Z1ZBeWxYV2ZvNm15Rm1kRHhad3NaRWJBK09FS3lPdDdHSXd6cjJIQldCSgphL2Q1aEpsVTRLeFFMY2hSb1Y2UVZCVkZlemx2K201S3p6ZjNqMjFSdUxNU0FwSGxrNmNvQnRVZ2kxQVVxWjZDCkVZckRYNTBUR0V6SVJuTXNSRm1ESjdvS1luUDNPYklUOW1KT1BKMENnWUIrR2t5K2wzYW9mUFVsT09oOTdsN1IKSXRQamZxQllZOHBBdW83UTVjNUluWUthRThtMmhjamxpMmJmUlNEY2FHdTN5NjJ1SHRCQnlQR2dXNW5FV2l4bgpPbUdVeUJzb25BSmxISEwvNXYyWTVKcmx1cWVSK2ZLYWxNbVNtY1ZJbVVweEhQS3AwNjNXRkdURGorUjVRWGVnCkNUYTUrTG9GVzFGSGVMRUowNTE3MlFLQmdGU2RzK3hwVE1ub3lrZXBaUVhFeEJvYUZkN0MrNXB0R0NiRGwyMHYKdzliY1lVaFJrTmxoaUxKZjJ1cCs3Ni9KNFVjT0VqWTNwaGhMUFBvQkRteFJENVY5N2ZFN2M1RUFkSEMvMW9ibApnMS9VcU1PQ3pnSFJNdHBUSmVUckpxZEhNNzFZWWpYcEJmRDhSMHJWSEJvdWtDajgzVndiRFB6WTRTa2ZoNnNoCml5N2hBb0dBR3FVUDVseSs2YzhNb1YwVGs3Zk5sSlo1ckt1d0VNaCtpS3NCWUVlVnVHcmxpeVAyT09KMUVZdCsKVnF5VnBoVTBRYjhMdnV4MkF2VWxLeDdSeWhMaDJmTnVOa3c1RW9xQ1hPQVRWeWVDM1JtRHZJSVRJanFQZnlqRwovUkZIcUcveGFVSENnTVhoWlgzREFydyswcjQ0ejhjY2hidEtxQTlSSmF0VVlFeVVrZ0E9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==

  

posted @ 2024-01-11 15:18  しみずよしだ  阅读(108)  评论(0)    收藏  举报