在k8s环境下部署kanboard项目管理平台
一、本次实践环境规划
hostname | IP地址 | 操作系统版本 | k8s版本 | 角色 |
---|---|---|---|---|
k8s-master | 192.168.3.201 | centos7.6 | v1.23.1 | master节点 |
k8s-node01 | 192.168.3.202 | centos7.6 | v1.23.1 | worker节点 |
k8s-node02 | 192.168.3.203 | centos7.6 | v1.23.1 | worker节点 |
二、检查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新建用户