爱摸鱼的Demon
首页
前端知识
后端技术
工程实践
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

爱摸鱼的Demon

我的地盘,欢迎光临。
首页
前端知识
后端技术
工程实践
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • C#

  • Golang

    • Go

    • Gin

      • Gin介绍
      • Gin中的身份认证
      • Gin中间件
      • Gin之K8s
        • K8s介绍
        • 使用k8s配置web服务
          • 1、移除相关初始化
          • 2、配置Dockerfile文件
          • 3、配置Deployment文件
          • 4、配置Service文件
          • 5、执行docker (在主目录下执行)
        • 使用k8s配置Mysql服务
          • 1、移除相关初始化 (见上)
          • 2、配置Dockerfile文件(见上)
          • 3、配置Deployment文件(具体注释与解释等见上)
          • 4、配置Service文件(具体注释与解释等见上)
          • 5、配置PersistentVolumeClaim文件(具体注释与解释等见上)
    • GORM

  • 后端技术
  • Golang
  • Gin
DemonW-X
2026-02-02
目录

Gin之K8s

# K8s介绍

K8s(Kubernetes)是一个开源的容器编排平台,可以管理不同软件产生的容器。

  • Pod:实例
  • Service:逻辑上的服务,可以认为是业务服务的直接映射。
  • Deployment:管理Pod的东西。

# 使用k8s配置web服务

# 1、移除相关初始化

//main.go
func main() {
	//db := initDB()
	//server := initWebServer()
	//u := initUser(db)
	//u.RegisterRoutes(server)

	server := gin.Default()
	server.GET("/test", func(c *gin.Context) {
		c.String(http.StatusOK, "hello world")
	})
	server.Run(":2222")
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 2、配置Dockerfile文件

//Dockerfile
# 基础镜像
FROM ubuntu:20.04

# 把编译后的打包进来这个镜像放到工作目录 /app(工作目录可以自行决定)
COPY webook /app/webook
WORKDIR /app

# 最佳执行
ENTRYPOINT["/app/webook"]
1
2
3
4
5
6
7
8
9
10

# 3、配置Deployment文件

# 如何解释这一份配置/如果处理这一份配置
apiVersion: apps/v1
# 声明我这里配置的是Deployment
kind: Deployment
metadata:
  # 名称 webook 但是哦这是一个Deployment
  name: webook
  labels:
    app: webook
# specification 规格说明
spec:
  # 副本数量
  replicas: 3
  # 筛选器
  selector:
    matchLabels:
      app: webook
  # temple 描述的是你的POD是什么样的(模板)
  template:
    metadata:
      name: webook
      labels:
        app: webook
    # POD 的具体信息
    spec:
      # POD 里面运行的 container
      containers:
        - name: webook
          image: docker/webook:v0.0.1
          imagePullPolicy: IfNotPresent
          ports:
            # 端口
            - containerPort: 2222
              protocol: TCP
      restartPolicy: Always
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
  • 解释
  • apiVersion:配置驱动文件(或叫元数据驱动/声明式框架),目的是用于解读配置。
  • spec:规格说明(说明书)。
  • selector:筛选器,用于筛选所需资源。
  • temple:在Deployment中为Pod创建的模板。
  • image:镜像。

执行命令:kubectl apply -f k8s-webook-deployment.yaml

# 4、配置Service文件

apiVersion: v1
kind: Service
metadata:
  # 代表这是webook本体
  name: webook
# 规格说明
spec:
  selector:
    app: webook
  ports:
    - protocol: TCP
      port: 88
      targetPort: 2222
  type: LoadBalancer
  
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  • 解释
  • type:负载均衡。
  • ports:端口。
    • name:端口名字。
    • port:外部访问的端口。
    • protocol:端口监听的协议。
    • targetPort:转发请求时,应该转发到Pod上的端口

执行命令:kubectl apply -f k8s-webook-service.yaml

# 5、执行docker (在主目录下执行)

docker build -t docker/webook:v0.0.1 .
1

(或使用makefile文件)

//makefile文件
.PHONY: docker
docker:
	@rm webook || true
	@GOOS=linux GOARCH=arm go build -o webook .
	@docker rmi -f docker/webook:v0.0.1
	@docker build -t docker/webook:v0.0.1 .
1
2
3
4
5
6
7

# 使用k8s配置Mysql服务

在使用k8s配置Mysql时需要考虑到存储空间(持久化卷)用于存储数据。

# 1、移除相关初始化 (见上)

# 2、配置Dockerfile文件(见上)

# 3、配置Deployment文件(具体注释与解释等见上)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webook-mysql
  labels:
    app: webook-mysql
spec:
  # mysql 的POD只能有一个
  replicas: 1
  selector:
    matchLabels:
      app: webook-mysql
  template:
    metadata:
      name: webook-mysql
      labels:
        app: webook-mysql
    spec:
      containers:
        - name: webook-mysql
          image: mysql8.0
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: root
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3306
      restartPolicy: Always
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

# 4、配置Service文件(具体注释与解释等见上)

apiVersion: v1
kind: Service
metadata:
  name: webook-mysql
spec:
  selector:
    app: webook-mysql
  ports:
    - protocol: TCP
      port: 3307
      targetPort: 3306
      nodePort: 30001
  type: NodePort
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 5、配置PersistentVolumeClaim文件(具体注释与解释等见上)

# 开始描述mysql存储结构需要具备什么特征
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: webook-mysql-claim
spec:
  # manual 用来命名,可以随机
  storageClassName: manual
  # 模式:访问模式,主要控制能不能被多个pod读写
  accessModes:
    # 只能被一个pod读写
    - ReadWriteOnce
  # 需要的资源
  resources:
    requests:
      # 容量 需要一个G
      storage: 1Gi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
编辑 (opens new window)
上次更新: 2026/04/08, 15:06:55
Gin中间件
Gorm初始化

← Gin中间件 Gorm初始化→

最近更新
01
Gorm之事务
11-13
02
Gorm之关联进阶版
11-13
03
Gorm之根据外键关联表
11-13
更多文章>
Theme by Vdoing | Copyright © 2022-2026 爱摸鱼的Demon | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式