当前位置: 首页 > news >正文

在k8s环境下部署kanboard项目管理平台

一、本次实践环境规划

hostnameIP地址操作系统版本k8s版本角色
k8s-master192.168.3.201centos7.6v1.23.1master节点
k8s-node01192.168.3.202centos7.6v1.23.1worker节点
k8s-node02192.168.3.203centos7.6v1.23.1worker节点

二、检查k8s环境

2.1检查工作节点状态

[root@k8s-master ~]#  kubectl get nodes
NAME         STATUS   ROLES                  AGE    VERSION
k8s-master   Ready    control-plane,master   289d   v1.23.1
k8s-node01   Ready    <none>                 289d   v1.23.1
k8s-node02   Ready    <none>                 289d   v1.23.1

2.2检查系统pod状态

[root@k8s-master ~]# kubectl get pods -n kube-system 
NAME                                       READY   STATUS    RESTARTS        AGE
calico-kube-controllers-7bc6547ffb-2nf66   1/1     Running   18 (13m ago)    289d
calico-node-8c4pn                          1/1     Running   17 (2d8h ago)   289d
calico-node-f28qq                          1/1     Running   18 (12m ago)    289d
calico-node-wmc2j                          1/1     Running   18 (13m ago)    289d
coredns-6d8c4cb4d-6gm4x                    1/1     Running   18 (13m ago)    289d
coredns-6d8c4cb4d-7vxlz                    1/1     Running   18 (13m ago)    289d
etcd-k8s-master                            1/1     Running   18 (13m ago)    289d
kube-apiserver-k8s-master                  1/1     Running   18 (13m ago)    289d
kube-controller-manager-k8s-master         1/1     Running   18 (13m ago)    289d
kube-proxy-8dfw8                           1/1     Running   18 (13m ago)    289d
kube-proxy-ghzrv                           1/1     Running   18 (12m ago)    289d
kube-proxy-j867z                           1/1     Running   17 (2d8h ago)   289d
kube-scheduler-k8s-master                  1/1     Running   18 (13m ago)    289d

三、编辑kanboard.yaml文件

3.1创建部署目录

 mkdir -p /data/kanboard && cd /data/kanboard

3.2编辑kanboard.yaml文件

vim kanboard.yaml
########################## Aplication#####################################################
---
apiVersion: v1
kind: Namespace
metadata:name: kanboard
---apiVersion: apps/v1
kind: Deployment
metadata:labels:app: kanboardname: kanboardnamespace: kanboard
spec:replicas: 2selector:matchLabels:app: kanboardtemplate:metadata:labels:app: kanboardspec:volumes:- name: datahostPath: path:  /data/kanboard/data/- name: pluginshostPath:path: /data/kanboard/plugins/- name: sslhostPath:path: /data/kanboard/ssl/
#      initContainers:
#      - name: volume-permissions
#        image: busybox:1.28
#        imagePullPolicy:  IfNotPresent
#        command:
#          - sh
#          - -c
#          - chmod 777 /data/kanboard/data/
#        volumeMounts:
#          - name: web
#            mountPath: /data/kanboard/data/containers: - image:   kanboard/kanboard:v1.2.26name: my-kanboardports:- name:  web protocol: "TCP"containerPort: 80- name:  sslprotocol: "TCP"containerPort: 443env:- name: TZvalue: "Asia/Shanghai"resources:         requests:cpu: 0.1memory: 0.1Glimits:cpu: 1memory:  0.5GvolumeMounts:- name: datamountPath: /var/www/html- name: pluginsmountPath: var/www/app/plugins- name: sslmountPath: /etc/nginx/ssl---
apiVersion: v1
kind: Service
metadata:name: my-kanboardnamespace: kanboard
spec:ports:- name: webprotocol: TCPtargetPort: 80port: 80nodePort: 30080- name: sslprotocol: TCPtargetPort: 443port: 443nodePort: 30090selector:app: kanboardtype: NodePort 

四、部署kanboard

4.1部署kanboard服务

[root@k8s-master kanboard]# kubectl apply -f kanboard.yaml 
namespace/kanboard unchanged
deployment.apps/kanboard created
service/my-kanboard created

4.2检查pod状态

[root@k8s-master kanboard]# kubectl get pods -n kanboard  -owide
NAME                        READY   STATUS    RESTARTS   AGE     IP              NODE         NOMINATED NODE   READINESS GATES
kanboard-7696dcff55-26nl2   1/1     Running   0          3m55s   10.244.85.245   k8s-node01   <none>           <none>
kanboard-7696dcff55-lgb24   1/1     Running   0          3m55s   10.244.58.239   k8s-node02   <none>           <none>

4.3检查pod详细信息

[root@k8s-master kanboard]# kubectl describe pods -n kanboard kanboard-7696dcff55-26nl2 
Name:         kanboard-7696dcff55-26nl2
Namespace:    kanboard
Priority:     0
Node:         k8s-node01/192.168.3.202
Start Time:   Sun, 25 Jun 2023 14:29:40 +0800
Labels:       app=kanboardpod-template-hash=7696dcff55
Annotations:  cni.projectcalico.org/containerID: dc93b926396ac660881620c2a2c614373b21bbb8aa714a7c5a8aa509985189f4cni.projectcalico.org/podIP: 10.244.85.245/32cni.projectcalico.org/podIPs: 10.244.85.245/32
Status:       Running
IP:           10.244.85.245
IPs:IP:           10.244.85.245
Controlled By:  ReplicaSet/kanboard-7696dcff55
Containers:my-kanboard:Container ID:   containerd://8c0f668a8e68a8381f03c804adeb206dc3f44b097162029965d97f521ba4789bImage:          kanboard/kanboard:v1.2.26Image ID:       docker.io/kanboard/kanboard@sha256:2311633ea6b2ce1ed35e6b9cee675c97752672a5139cd7dd26a8e566b27a7c57Ports:          80/TCP, 443/TCPHost Ports:     0/TCP, 0/TCPState:          RunningStarted:      Sun, 25 Jun 2023 14:31:15 +0800Ready:          TrueRestart Count:  0Limits:cpu:     1memory:  500MRequests:cpu:     100mmemory:  100MEnvironment:TZ:  Asia/ShanghaiMounts:/etc/nginx/ssl from ssl (rw)/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-q2vml (ro)/var/www/html from data (rw)var/www/app/plugins from plugins (rw)
Conditions:Type              StatusInitialized       True Ready             True ContainersReady   True PodScheduled      True 
Volumes:data:Type:          HostPath (bare host directory volume)Path:          /data/kanboard/data/HostPathType:  plugins:Type:          HostPath (bare host directory volume)Path:          /data/kanboard/plugins/HostPathType:  ssl:Type:          HostPath (bare host directory volume)Path:          /data/kanboard/ssl/HostPathType:  kube-api-access-q2vml:Type:                    Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds:  3607ConfigMapName:           kube-root-ca.crtConfigMapOptional:       <nil>DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type    Reason     Age    From               Message----    ------     ----   ----               -------Normal  Scheduled  4m46s  default-scheduler  Successfully assigned kanboard/kanboard-7696dcff55-26nl2 to k8s-node01Normal  Pulling    4m45s  kubelet            Pulling image "kanboard/kanboard:v1.2.26"Normal  Pulled     3m11s  kubelet            Successfully pulled image "kanboard/kanboard:v1.2.26" in 1m34.393452184sNormal  Created    3m11s  kubelet            Created container my-kanboardNormal  Started    3m11s  kubelet            Started container my-kanboard

4.4检查service状态

[root@k8s-master kanboard]# kubectl get service -n kanboard 
NAME          TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
my-kanboard   NodePort   10.99.118.143   <none>        80:30080/TCP,443:30090/TCP   5m57s

五、访问kanboard平台

5.1http访问kanboard

打开本地浏览器,http://192.168.3.202:30080/login,将IP替换为自己工作节点的IP地址,默认登录密码admin/admin。

5.2https访问kanboard

打开浏览器:https://192.168.3.202:30090/
默认登录密码admin/admin

六、kanboard的基本使用

6.1设置系统中文

6.2新建项目

6.3编辑项目

6.4查看待办任务

6.5查看我的看板管理页

6.6新建用户


文章转载自:

http://nf7tOMeS.czrcf.cn
http://BfmBLHBu.czrcf.cn
http://HWLNha5T.czrcf.cn
http://geKTCe7K.czrcf.cn
http://1dFrAZNN.czrcf.cn
http://Tbdgl5Nh.czrcf.cn
http://9WXi6rlT.czrcf.cn
http://PNheXYxk.czrcf.cn
http://EFFN7Zol.czrcf.cn
http://xDJwx23u.czrcf.cn
http://g5ZQOoO5.czrcf.cn
http://kqi9wybC.czrcf.cn
http://ryxO1XL7.czrcf.cn
http://T0poQgfM.czrcf.cn
http://pCk9LxVI.czrcf.cn
http://IxAf7N39.czrcf.cn
http://4MnfIohk.czrcf.cn
http://mzxaGlVv.czrcf.cn
http://J43S0Gd9.czrcf.cn
http://VNloeikF.czrcf.cn
http://bfEwuG0e.czrcf.cn
http://j9lUc1NI.czrcf.cn
http://1ur2flPO.czrcf.cn
http://avV7J10k.czrcf.cn
http://e05Smsf8.czrcf.cn
http://NgEGhuMA.czrcf.cn
http://LjPlRhpu.czrcf.cn
http://Q636JOVd.czrcf.cn
http://OQf7lVM6.czrcf.cn
http://xg4Q4Jxe.czrcf.cn
http://www.dtcms.com/a/387579.html

相关文章:

  • 为什么 MySQL utf8 存不下 Emoji?utf8mb4 实战演示
  • 2025 年 PHP 常见面试题整理以及对应答案和代码示例
  • (二十五)、在 k8s 中部署证书,为网站增加https安全认证
  • 风机巡检目前有什么新技术?
  • 震坤行工业超市开放平台接口实战:工业品精准检索与详情解析全方案
  • 河南萌新联赛2025第(八)场:南阳理工学院
  • docker回收和mysql备份导入导致数据丢失恢复---惜分飞
  • 「Memene 摸鱼日报 2025.9.17」上海张江人工智能创新小镇正式启动,华为 DCP 技术获网络顶会奖项
  • 【数据结构】顺序表,ArrayList
  • 第十二章 Arm C1-Premium GIC CPU接口详解
  • 【数据结构---并查集】(并查集的原理,实现与应用)
  • 【数据结构-KMP算法(学习篇)】
  • Start application catch exception
  • 机器视觉在半导体封装检测中的应用
  • 雅菲奥朗SRE知识墙分享(九):『变更管理的定义与实践』
  • 51c视觉~3D~合集6
  • webRTC 的协议族
  • 线激光相机 眼在手上六轴机器人手眼标定 备忘记录
  • QML学习笔记(一)基本了解和工程配置
  • 大数据毕业设计选题推荐-基于大数据的牛油果数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • Hadoop单机模式下运行grep实例,output文件目录不存在
  • 【docker】清理中断构建后产生的镜像和缓存
  • Vue2项目集成打包分析工具webpack-bundle-analyzer
  • 【阶梯波发生器如何控制电压和周期】2022-12-9
  • Java 设计模式之桥接模式(Bridge Pattern)
  • Android 端启动 HTTP 服务:从基础实现到实战应用
  • 《2D横版平台跳跃游戏中角色二段跳失效与碰撞体穿透的耦合性Bug解析》
  • 基于本机知识库 + 豆包(火山引擎)+ MCP的落地方案
  • OpenCV 风格迁移、DNN模块 案例解析及实现
  • php实现火山引擎 【双向流式websocket-V3-支持复刻2.0/混音mix】开箱即用,可用于各种PHP框架。