Kubernetes
容器编排已越来越被大家关注,然而学习 Kubernetes
的门槛却依然很高,主要体现在这几个方面:
- 集群的安装复杂
Kubernetes
相较于容器,引入了许多新的概念
- 需要手工编写
YAML
文件
- 没有好的参考案例可以遵循
今天给大家介绍的这款工具 Kuboard
,是一款免费的 Kubernetes
图形化管理工具, Kuboard
力图帮助用户快速在 Kubernetes
上落地微服务。为了达到此目标, Kuboard
提供了针对上述问题的解决办法:
Kuboard
提供 Kubernetes
免费安装文档、免费在线答疑,每天约有 200
位网友参照 Kuboard
提供的文档进行 K8S 集群安装。
Kuboard
提供 Kubernetes
免费中文教程、用户无需付费购买视频教程或参加线下培训班,就可参照 Kuboard
提供的免费教程完成 K8S
的学习,更有 QQ
社群可以和网友互相讨论,共同进步。
Kuboard
是 Kubernetes
的一款图形化管理工具,使用 Kuboard,用户无需编写 YAML
文件,就可以完成应用程序的部署和管理。
Kuboard
提供 Spring Cloud
等微服务参考架构在 K8S
上的详细部署文档和步骤,是 Spring Cloud
用户将自己的应用迁移到 K8S
部署环境的非常好的参考资料。
Kuboard
是一款专为 Kubernetes
设计的免费管理界面,兼容 Kubernetes
版本 1.13
及以上。 Kuboard
每周发布一个 beta
版本,最长每月发布一个正式版本,经过两年的不断迭代和优化,已经具备多集群管理、权限管理、监控套件、日志套件等丰富的功能,并且有 1000+
的企业将 Kuboard
应用于其生产环境。 Kuboard
自 2019年8月
发布第一个版本以来,得到了众多用户的认可,目前已经获得了 10000+ GitHub Star
# 安装
# 给 master
节点添加标签.
首先查看一下 master
节点是否有 "k8s.kuboard.cn/role=etcd"
标签:
1
| kubectl get nodes --show-labels=true
|
如果有则进行下一步.
如果没有,添加标签:
1
| kubectl label nodes k8s-master-01 k8s.kuboard.cn/role=etcd
|
其中 将 k8s-master-01
替换成你的 master
节点。
# 安装 kuboard.
1
| kubectl create -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
|
然后查看启动情况
1 2 3 4 5 6 7
| [root@k8s-master-01 yamls]# kubectl get pod -n kuboard NAME READY STATUS RESTARTS AGE kuboard-agent-2-8644cd44c9-wdq5h 1/1 Running 2 (21m ago) 22m kuboard-agent-8467cc9799-2n4wl 1/1 Running 0 9m5s kuboard-agent-8467cc9799-p9qb6 1/1 Running 2 (21m ago) 22m kuboard-etcd-pmdxq 1/1 Running 0 22m kuboard-v3-84f9bf8bfc-8gt5z 1/1 Running 0 22m
|
都启动成功之后。
通过浏览器访问 <MasterIp>:30080
即可。
# 页面操作
Kuboard
是一款专为 Kubernetes
设计的免费管理界面,兼容 Kubernetes
版本 1.13
及以上。 Kuboard
已经具备多集群管理、权限管理、监控套件、日志套件等丰富的功能.
# 多集群管理
管理员可以把 不同的 Kubernetes
集群添加同一个 Kuboard
中, 并且可以分配不同的权限进行控制,将不同集群 / 名称空间的权限分配给指定的用户或用户组。
# 微服务分层展示
在 Kuboard
的名称空间概要页中,以经典的微服务分层方式将工作负载划分到不同的分层,更加直观地展示微服务架构的结构,并且可以为每一个名称空间自定义名称空间布局。
进入命名空间之后,可以查看各种资源信息。还支持各种常用操作。
# 附录 - kuboard-v3 安装文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303
| --- apiVersion: v1 kind: Namespace metadata: name: kuboard
--- apiVersion: v1 kind: ConfigMap metadata: name: kuboard-v3-config namespace: kuboard data: KUBOARD_SERVER_NODE_PORT: '30080' KUBOARD_AGENT_SERVER_UDP_PORT: '30081' KUBOARD_AGENT_SERVER_TCP_PORT: '30081' KUBOARD_SERVER_LOGRUS_LEVEL: info KUBOARD_AGENT_KEY: 32b7d6572c6255211b4eec9009e4a816 KUBOARD_AGENT_IMAG: eipwork/kuboard-agent KUBOARD_QUESTDB_IMAGE: questdb/questdb:6.0.5 KUBOARD_DISABLE_AUDIT: 'false'
--- 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: DaemonSet metadata: labels: k8s.kuboard.cn/name: kuboard-etcd name: kuboard-etcd namespace: kuboard spec: revisionHistoryLimit: 10 selector: matchLabels: k8s.kuboard.cn/name: kuboard-etcd template: metadata: labels: k8s.kuboard.cn/name: kuboard-etcd spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/master operator: Exists - matchExpressions: - key: node-role.kubernetes.io/control-plane operator: Exists - matchExpressions: - key: k8s.kuboard.cn/role operator: In values: - etcd containers: - env: - name: HOSTNAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: HOSTIP valueFrom: fieldRef: apiVersion: v1 fieldPath: status.hostIP image: 'eipwork/etcd-host:3.4.16-2' imagePullPolicy: Always name: etcd ports: - containerPort: 2381 hostPort: 2381 name: server protocol: TCP - containerPort: 2382 hostPort: 2382 name: peer protocol: TCP livenessProbe: failureThreshold: 3 httpGet: path: /health port: 2381 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 volumeMounts: - mountPath: /data name: data dnsPolicy: ClusterFirst hostNetwork: true restartPolicy: Always serviceAccount: kuboard-boostrap serviceAccountName: kuboard-boostrap tolerations: - key: node-role.kubernetes.io/master operator: Exists - key: node-role.kubernetes.io/control-plane operator: Exists volumes: - hostPath: path: /usr/share/kuboard/etcd name: data updateStrategy: rollingUpdate: maxUnavailable: 1 type: RollingUpdate
--- apiVersion: apps/v1 kind: Deployment metadata: annotations: {} labels: k8s.kuboard.cn/name: kuboard-v3 name: kuboard-v3 namespace: kuboard spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: k8s.kuboard.cn/name: kuboard-v3 template: metadata: labels: k8s.kuboard.cn/name: kuboard-v3 spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: node-role.kubernetes.io/master operator: Exists weight: 100 - preference: matchExpressions: - key: node-role.kubernetes.io/control-plane operator: Exists weight: 100 containers: - env: - name: HOSTIP valueFrom: fieldRef: apiVersion: v1 fieldPath: status.hostIP - name: HOSTNAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName envFrom: - configMapRef: name: kuboard-v3-config image: 'eipwork/kuboard:v3' imagePullPolicy: Always livenessProbe: failureThreshold: 3 httpGet: path: /kuboard-resources/version.json 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: /kuboard-resources/version.json port: 80 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} dnsPolicy: ClusterFirst restartPolicy: Always serviceAccount: kuboard-boostrap serviceAccountName: kuboard-boostrap tolerations: - key: node-role.kubernetes.io/master operator: Exists
--- apiVersion: v1 kind: Service metadata: annotations: {} 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 sessionAffinity: None type: NodePort
|
以上 yaml
文件可以通过 https://github.com/fangjiaxiaobai/k8s/tree/main/yamls
进行获取。
扫码或搜索:方家小白
发送 290992
即可立即永久解锁本站全部文章