【GO】K8s 管理系统项目34[Linux环境–应用部署]

news2025/7/14 13:24:34

K8s 管理系统项目[Linux环境–应用部署]

1. 启动数据库

1.1 配置yum仓库

rm -f /etc/yum.repos.d/*.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

1.2 安装mariadb

mkdir -p /data/RPMS
cd /data/RPMS
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
tar xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
yum install ./*.rpm -y
systemctl enable --now mysqld

1.3 启动连接数据库

# 启动mysql
systemctl enable --now mysqld
# 取密码
grep pass /var/log/mysqld.log |awk '{print $NF}'
## 这里得到密码SYxFQYqA>2QM
# 登录mysql
mysql -uroot -p'SYxFQYqA>2QM'
# 重置localhost密码
set global validate_password_policy=0;
set global validate_password_length=1;
alter user 'root'@'localhost' identified by '123456';
# 创建远程用户(这里可以是其他用户名)
create user 'root'@'%' identified by '123456';

1.4 初始化数据库

create database k8s_dashboard charset utf8;

1.5 建表

use  k8s_dashboard
CREATE TABLE `workflow` ( 
	`id` int NOT NULL AUTO_INCREMENT,
	`name` varchar(32) COLLATE utf8mb4_general_ci NOT NULL,
	`namespace` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
	`replicas` int DEFAULT NULL,
	`deployment` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
	`service` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
	`ingress` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
	`type` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
	`created_at` datetime DEFAULT NULL,
	`updated_at` datetime DEFAULT NULL,
	`deleted_at` datetime DEFAULT NULL,
	PRIMARY KEY (`id`) USING BTREE,
	UNIQUE KEY `name` (`name`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

1.5 数据库授权

grant all privileges on k8s_dashboard.* to 'root'@'%';
exit

2. 后端部署

2.1 拉取代码

2.1.1 配置go代理

# 配置go代理
cd /data
echo "export GO111MODULE=on" >> ~/.profile
echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
source ~/.profile

2.1.2 安装git

yum install git -y

2.1.3 拉取代码

git config --global user.name "qqmiller"
git config --global user.email "13917099322@139.com"
git clone https://gitee.com/qqmiller/k8s-plantform.git

输出结果

Cloning into 'k8s-plantform'...
Username for 'https://gitee.com': qqmiller
Password for 'https://qqmiller@gitee.com': 输入密码
remote: Enumerating objects: 80, done.
remote: Counting objects: 100% (80/80), done.
remote: Compressing objects: 100% (75/75), done.
remote: Total 80 (delta 31), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (80/80), done.

2.2 安装Golang

rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
yum install go -y

2.3 配置依赖

开始安装依赖

cd /data/k8s-plantform
go mod tidy

输出的结果

go: downloading github.com/gin-gonic/gin v1.8.1
go: downloading github.com/wonderivan/logger v1.0.0
go: downloading github.com/jinzhu/gorm v1.9.16
go: downloading github.com/gorilla/websocket v1.4.2
go: downloading k8s.io/api v0.26.0
go: downloading k8s.io/apimachinery v0.26.0
go: downloading k8s.io/client-go v0.25.4
go: downloading github.com/dgrijalva/jwt-go v3.2.0+incompatible
go: downloading github.com/gin-contrib/sse v0.1.0
go: downloading github.com/mattn/go-isatty v0.0.14
go: downloading golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10
go: downloading google.golang.org/protobuf v1.28.1
go: downloading github.com/jinzhu/inflection v1.0.0
go: downloading github.com/stretchr/testify v1.8.0
go: downloading github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5
go: downloading github.com/jinzhu/now v1.0.1
go: downloading github.com/go-sql-driver/mysql v1.5.0
go: downloading github.com/gogo/protobuf v1.3.2
go: downloading gopkg.in/inf.v0 v0.9.1
go: downloading github.com/google/gofuzz v1.1.0
go: downloading github.com/spf13/pflag v1.0.5
go: downloading k8s.io/klog/v2 v2.80.1
go: downloading sigs.k8s.io/yaml v1.3.0
go: downloading github.com/imdario/mergo v0.3.6
go: downloading golang.org/x/term v0.3.0
go: downloading github.com/go-playground/validator/v10 v10.10.0
go: downloading github.com/pelletier/go-toml/v2 v2.0.1
go: downloading github.com/ugorji/go/codec v1.2.7
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/goccy/go-json v0.9.7
go: downloading github.com/json-iterator/go v1.1.12
go: downloading golang.org/x/sys v0.3.0
go: downloading github.com/google/go-cmp v0.5.9
go: downloading github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd
go: downloading github.com/lib/pq v1.1.1
go: downloading github.com/mattn/go-sqlite3 v1.14.0
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading github.com/pmezard/go-difflib v1.0.0
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading sigs.k8s.io/structured-merge-diff/v4 v4.2.3
go: downloading k8s.io/utils v0.0.0-20221107191617-1a15be271d1d
go: downloading sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2
go: downloading github.com/golang/protobuf v1.5.2
go: downloading github.com/google/gnostic v0.5.7-v3refs
go: downloading golang.org/x/time v0.0.0-20220210224613-90d013bbcef8
go: downloading github.com/go-logr/logr v1.2.3
go: downloading github.com/moby/spdystream v0.2.0
go: downloading github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5
go: downloading github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153
go: downloading github.com/go-playground/universal-translator v0.18.0
go: downloading github.com/leodido/go-urn v1.2.1
go: downloading golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd
go: downloading golang.org/x/text v0.5.0
go: downloading github.com/go-playground/assert/v2 v2.0.1
go: downloading github.com/go-playground/locales v0.14.0
go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
go: downloading github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
go: downloading github.com/modern-go/reflect2 v1.0.2
go: downloading github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe
go: downloading k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280
go: downloading golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8
go: downloading github.com/kr/pretty v0.3.0
go: downloading github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
go: downloading github.com/go-openapi/swag v0.19.14
go: downloading github.com/kr/text v0.2.0
go: downloading github.com/rogpeppe/go-internal v1.8.0
go: downloading github.com/emicklei/go-restful/v3 v3.8.0
go: downloading github.com/go-openapi/jsonreference v0.19.5
go: downloading github.com/onsi/ginkgo/v2 v2.4.0
go: downloading github.com/onsi/gomega v1.23.0
go: downloading github.com/mailru/easyjson v0.7.6
go: downloading github.com/PuerkitoBio/purell v1.1.1
go: downloading github.com/go-openapi/jsonpointer v0.19.5
go: downloading google.golang.org/appengine v1.6.7
go: downloading github.com/josharian/intern v1.0.0
go: downloading github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578

2.4 运行环境

2.4.1 配置修改

这里需要修config/config.go的一些内容,将以下内容改为自己环境中数据库配置.
数据库创建详见https://blog.csdn.net/qq_29974229/article/details/129044435

	//数据库配置
	DbType = "mysql"
	DbHost = "192.168.31.24"
	DbPort = 3306
	DbName = "k8s_dashboard"
	DbUser = "root"
	DbPwd  = "123456"

修改Kubecofnig配置 config/config.go的第9行

	Kubeconfig = "config/cka"

将自己k8s服务器~/.kube/config取出来放到config/下,如果不改名的话,就把第9行改为config/config.否则就改为cka放到目录下覆盖原来文件即可.

可以用命令

# 这里192.168.31.57是本次部署节点的ip,替换这部分就可以了
sed -i 's/192.168.31.24/192.168.31.57/g' config/config.go

2.4.2 运行后端

go run main.go

这里如果卡住不动有2个可能

  1. 没有配置go代理,解决方法确认1.1的命令都被正常执行

  2. 数据库没有启动.

    检查方法 telnet 1.4.1配置的地址和端口号

    telnet 192.168.31.24 3306
    

    如果端口通,确认DbName里的库是否创建,详见1.4.1

这里要多等一会

请添加图片描述

2.5 测试

2.5.1 本地测试

curl "http://127.0.0.1:9091/api/k8s/pods?namespace=default&filter_name=app-01-dffbb57c4-mzr67"

请添加图片描述

2.5.2 远程测试

通过postman测试

请添加图片描述

3. 前端部署

3.1 拉取代码

cd /data
git clone https://gitee.com/qqmiller/k8s-plantform-fe.git

输出结果

Cloning into 'k8s-plantform-fe'...
Username for 'https://gitee.com': qqmiller
Password for 'https://qqmiller@gitee.com': 
remote: Enumerating objects: 81, done.
remote: Counting objects: 100% (81/81), done.
remote: Compressing objects: 100% (72/72), done.
remote: Total 81 (delta 23), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (81/81), done.

3.2 安装npm

cd /data/
yum install gcc gcc-c++ -y
wget https://registry.npmmirror.com/-/binary/node/latest-v16.x/node-v16.15.0-linux-x64.tar.gz
tar xf  node-v16.15.0-linux-x64.tar.gz
rm -f node-v16.15.0-linux-x64.tar.gz
ln -sf /data/node-v16.15.0-linux-x64 /usr/local/node
echo 'export NODE_HOME=/usr/local/node' >> /etc/profile  
echo 'export PATH=$NODE_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
echo 'export NODE_HOME=/usr/local/node' >> /etc/rc.local
echo 'export PATH=$NODE_HOME/bin:$PATH' >> /etc/rc.local
chmod +x /etc/rc.local

确认npm版本

node -v
    v16.15.0
npm -v
    8.5.5

3.3 安装依赖包

cd /data/k8s-plantform-fe/
npm install

请添加图片描述

3.4 运行环境

3.4.1 配置修改

如果前后端在一台服务器上,那么不需要修改.
如果在不同服务器或者pod上,修改src/views/common/Config.js搜索红框内的localhost改为后端的服务器ip即可

我这里api服务器ip是192.168.31.57

sed -i 's/localhost/192.168.31.57/g' /data/k8s-plantform-fe/src/views/common/Config.js 

请添加图片描述

3.4.2 运行前端

npm run serve

请添加图片描述

请添加图片描述

3.5 登录访问

使用账号admin,密码123456

请添加图片描述

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 实现图片监听鼠标滑轮滚动实现图片缩小放大功能

前言 其实想要实现功能很简单,就是在一张图片上监听鼠标滑轮滚动的事件,然后根据上滚还是下滚实现图片的缩放。 效果: 注:该配图使用《漫画|有趣的了解一下赋值、深浅拷贝》文章图片,不存在侵权问题。 实现思路 在…

规划数据指标体系方法(下)——新海盗模型

前面已经跟大家分享了规划数据指标体系的两种方法—— OSM 和 UJM 模型,分别从目标-策略以及用户旅途的角度阐述了规划数据指标体系的过程。今天我来跟大家分享最后一种规划数据指标体系的方法——新海盗模型。 了解新海盗模型 海盗模型,即 AARRR 模型&…

脑机接口科普0014——大脑

本文禁止转载!!!! 在提到脑机接口的时候,不得不提到大脑。 在我们的思维意识中,植物是没有大脑的。这是正确的。 在我们的思维意识中,动物都是有大脑的。 但是很明显,动物都有大…

程序员看过都说好的资源网站,你值得拥有。

程序员必备的相关资源网站一.技术社区1.GitHub2.Gitee(码云)3.稀土掘金4.OSCHINA开源中国5.CSDN6.博客园7.SegmentFault(思否)8.Stack Overflow9.Golang中文社区10.ChinaUnix11.51CTO12.Ruby China二.技术教程1.Devdocs2.码农教程…

案例解读| 从集中告警平台发展趋势看城商行如何落地数字化转型(二)

上期我们以具体案例入手,分享了集中告警平台到底应该与集中监控平台解耦还是紧绑定等问题。这一期依旧从具体案例切入,跟大家一起探索下告警与服务台的对接过程,以及这个过程中可能产生的问题。上期内容,一键回顾不迷路→案例解读…

17万字 JUC 看这一篇就够了(二) (精华)

今天我们继续来学习并发编程 17万字 JUC 看这一篇就够了(一) (精华) 线程池 基本概述 线程池:一个容纳多个线程的容器,容器中的线程可以重复使用,省去了频繁创建和销毁线程对象的操作 线程池作用: 降低资源消耗,减…

网络工程师面试题(面试必看)(1)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.正题 1.TCP UDP协议的区别

YARN基本架构

主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成,如图所YA示。 ResourceManager(RM) RM是全局资源管理器,负责整个系统的资源管理和分配 主要由两个组件构成:Scheduler调度器和应用程序…

ZYNQ嵌入式学习(5)

UARTUART简介发送FIFO接收FIFO模式切换寄存器操作中断和状态寄存器发送数据轮询中断接收数据轮询中断实验:串口中断数据环回UART简介 不需要了解时序。 UART是全双工异步收发的,没有时钟。 UART的操作通过配置和模式寄存器控制。 UART由独立的接受和发送…

Vue计算属性Computed

30. Vue计算属性Computed 1. 定义 Computed属性是Vue中的一个计算属性,是一种基于其它属性值计算而来的属性值,具有缓存机制,在依赖的属性值发生变化时会重新计算。 使用computed属性可以避免在模板中书写过多的计算逻辑,提高代…

【敏捷开发】jenkins「CI持续集成 CD持续部署」- 部署vue和go项目 - 待定

文章目录前言一、安装jenkins1. 部署中的痛点2. 什么是jenkins3. jenkins的安装和配置(1)下载(2)安装二、上传到运行服务器1. jenkins构建服务器流程2. 安装jenkins常用插件3. 通过freestyle构建项目4. 将构建服务器上的代码上传到…

Mybatis工程升级到FlunetMybatis后引发的问题以及解决方法

0. 背景交代为了提高开发速度,我打算将公司原有Mybatis框架升级为FlunetMybatis。可是遇到了一系列问题,下面开始爬坑工程结构示意如下:src/ ├── main │ ├── java.com.demo │ │ ├── Application.java //S…

常见数据模型

目录 1.1两类数据模型 1.2概念模型 1.3数据模型的组成要素 1.4常见数据模型 层次模型 网状模型 关系模型 数据模型是对现实世界数据特征的抽象,也就是说数据模型是用来描述数据、组织数据和对数据进行操作的。数据模型是数据库系统的核心和基础。 1.1两类数…

ip地址的分类及地址范围

IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。1、A类IP地址一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。A类IP地址中网络的标识长度为…

一种用于智能建筑云辅助检测的快速传感器放置位置优化方法

随着健康意识的觉醒,人们对居住的建筑提出了一系列与健康相关的要求,以期改善居住条件。在此背景下,BIM(Building Information Modeling)充分利用健康、环境、信息技术等诸多领域的前沿理论和技术,为工程师…

低代码开发的优势是什么?

低代码开发的优势是什么?低代码开发这个概念这两年来经常出现在人们的视野中,市场对于低代码的需求也越来越庞大。 Gartner预测,到2025年,75%的大型企业将使用至少四种低代码/无代码开发工具,用于IT应用开发和公民开发计划。 可…

Java面试题--Spring事务失效

Spring事务失效概述 Spring对事务的管理和处理,是基于AOP和编程范式的。因此Spring事务失效的场景较为丰富,包括但不限于以下常见情况: 异常被吞掉:当事务管理中出现异常但没有被正确捕捉并处理时,事务就会失效。例如…

Sedona 简介

Sedona 可以做什么? 分布式空间数据集 Spatial RDD on SparkSpatial DataFrame/SQL on SparkSpatial DataStream on FlinkSpatial Table/SQL on Flink 处理复杂的空间类型 Vector geometries / trajectoriesRaster images with Map AlgebraVarious input formats: CSV, TSV…

Vue 项目如何迁移小程序

最近我们看到有开发者在社群里提出新的疑惑「我手头已经有一个成熟的 HTML5 项目了,这种项目可以转为小程序在 FinClip 环境中运行吗?」。 经过工作人员的沟通了解,开发者其实是想将已有的 Vue 项目转为小程序,在集成了 FinClip …

(蓝桥真题)扫描游戏(计算几何+线段树二分)

题目链接:P8777 [蓝桥杯 2022 省 A] 扫描游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 样例输入: 5 2 0 1 1 0 3 2 4 3 5 6 8 1 -51 -33 2 样例输出: 1 1 3 4 -1 分析:先考虑如何对物件进行排序,首先&…