Go项目-----Kubernetes使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 基本概念
  • kubectl工具
  • 部署web服务
    • 生成镜像
    • 编写deployment
  • 编写service
    • 启动服务
  • k8s部署mysql
    • 编写pvc
    • 编写pv
    • 编写service
  • 部署redis
  • 集成部署mysql和redis


前言

这篇文章梳理一下关于Kubernetes的一些基本概念,通过k8s来对mysql,redis和我们的服务进行部署。

基本概念

k8s是一个容器编排工具,简单来讲就是管理容器的。这里的容器可以是docker生成的,也可以不是docker生成的。在k8s中有几个基本的概念。

  • pod实例,就是我们运行的一个服务实例。
  • service,就逻辑上的服务,可以理解是我们业务服务的一个映射。
  • deployment,它是用来管理我们实例pod的。

kubectl工具

通过这个网站来进行安装。kubectl是一个命令行工具,我们需要通过它来进行k8s部署。

https://kubernetes.io/docs/tasks/tools/

部署web服务

我们先部署一个简单的web服务,这个web服务中去除对mysql和redis的依赖。
前面我们提到了,k8s是管理容器的,所以我们需要把我们的web服务通过docker进行打包,构建一个镜像。

生成镜像

首先我们需要编译我们的源代码,将其生成一个可执行文件。使用docker对其生成镜像。
编写我们的Dockerfile文件,我们执行docker build -t就是依靠这个文件来生成镜像的。

FROM ubuntu:20.04
COPY webook /app/webook
WORKDIR /app
ENTRYPOINT ["/app/webook"]

在这里插入图片描述

编写deployment

其中最后containers中的ports中的containerport就是我们web服务实际监听的端口。
这里的image就是我们通过docker生成的镜像。
在这里插入图片描述

编写service

这边和deplpyment的编写都差不多,这里有一个很重要的点就是这里的type。
这里的type有三个选项:

  • LoadBalancer负载均衡,通过这个选项我们访问我们的pod实例就是通过这里的port端口来访问的。
  • NodePort,通过这个选项我们就要指定一个nodeport端口,来做为我们访问pod的端口,这个端口一般是30000开始的一个端口号。
    在这里插入图片描述

启动服务

通过kubectl来启动我们对应的deployment和service。

kubectl apply -f XXX.yaml

k8s部署mysql

同样的我们也需要部署deployment和service。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webook-mysql
  labels:
    app: webook-mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webook-mysql
  template:
    metadata:
      name: webook-mysql
      labels:
        app: webook-mysql
    spec:
      containers:
        - name: webook-mysql
          image: mysql:8.0
          env:
            #            通过环境变量设置 root 的密码
            - name: MYSQL_ROOT_PASSWORD
              value: root
#         mysql数据怎么存储
          volumeMounts:
            - mountPath: /var/lib/mysql
              name: mysql-storage
#        -pod暴露的端口
          ports:
            - containerPort: 3306
      volumes:
        - name: mysql-storage
          persistentVolumeClaim:
            #            使用 webook-mysql-pv-claim,这个 claim 里面详细描述了 mysql 所需要的卷的特性
            claimName: webook-mysql-pv-claim


编写pvc

但是mysql是需要持久化存储的,所以我们需要为mysql配置持久化卷。pvc就是PersistentVolumeClaim,他描述了mysql需要什么样的Volume。
在这里插入图片描述

编写pv

pv描述的就是我k8s有什么样子的voloume。这两个配置需要相符配合使用。
在这里插入图片描述

编写service

这里的service就是使用的NodePort类型了,我们需要指定一个nodeport端口,这是外部访问我们的端口。这里的port端口就是这个service的端口,targetPort是我们访问pod的端口。
在这里插入图片描述

部署redis

redis的部署就很简单了,不需要编写pv和pc。
在这里插入图片描述
在这里插入图片描述

集成部署mysql和redis

在我们的项目中,我们的webook服务是被部署在k8s中的,他要想访问redis和mysql应该是内部通信。
因此需要绑定内部的接口。也就是上图中的port端口。ip地址我们直接使用的label名称,k8s会自动帮我们解析。这也是当时踩坑的地方。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud无介绍快使用,sentinel注解@SentinelResource的基本使用(二十三)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项: 约定 > 配置 > 编码IDEA版本2021.1这个项目,我分了很多篇章,每篇文章一个操作步骤,目的是显得更简单明了controller调service,service调dao默认安装ngi…

紫光展锐5G融云方案,开启云终端新时代

近年来,云终端凭借便捷、高效、高性价比的优势正逐步在各行各业渗透。研究机构IDC的数据显示,2024上半年,中国云终端市场总体出货量达到166.3万台,同比增长22.4%,销售额29亿元人民币,同比增长24.9%&#xf…

基于卷积神经网络的垃圾分类系统实现(GUI应用)

1.摘要 本文主要实现了一个卷积神经网络模型进行垃圾图像分类,为了提高垃圾分类模型的准确率,使用使用Batch Normalization层、使用早期停止策略来防止过拟合等方法来优化模型,实验结果显示最终优化后的模型准确率较高90%左右。最终&#xf…

【51单片机】蜂鸣器快速上手

‌51单片机蜂鸣器是一种将电信号转换为声音信号的器件,在51单片机开发板中常用于产生按键音、报警音等提示信号‌。 ‌蜂鸣器类型‌:蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器。有源蜂鸣器内部自带振荡源,只需接上直流电压即可持续发声&…

数据库入门

基本概念 数据库:DataBase简称DB,是一个用于存储和管理数据的仓库。 就像我们每天访问的网站Bilibili,OA、ERP和CRM等内部管理系统,以及我们每天使用的腾讯新闻和Tiktok应用程序一样,我们看到的数据实际上存储在数据库…

vscode插件开发 在activity Bar 开发一个自定义bar(左侧侧边栏自定义一个功能选项)

了解vscode编辑器结构 点击了解编辑器结构视图 在编辑器的左侧创建一个新的item 如下图位置 1,vscode开发基础点击这里 2,了解到基础的vscode插件开发的步骤之后 在package.json文件的contrites下配置下图参数 实现效果如下图

Airborne使用教程

1.安装环境 前提条件:系统已安装Ruby 打开终端输入如下命令 gem install airborne 或者在Gemfile添加 gem airborne 然后运行bundle install 2.编写脚本 在项目中新建api_tests_spec.rb文件 以GET接口"https://www.thunderclient.com/welcome"为…

session 共享服务器

1.安装 kryo-3.0.3.jar asm-5.2.jar objenesis-2.6.jar reflectasm-1.11.9.jar minlog-1.3.1.jar kryo-serializers-0.45.jar msm-kryo-serializer-2.3.2.jar memcached-session-manager-tc9-2.3.2.jar spymemcached-2.12.3.jar memcached-session-manager-2.3.2.jar …

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:药品进销存信息管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 项目介绍 1.1 项目功能 2.0 用户登录功能 3.0 首页界面 4.0 供应商管理功能 5.0 药品管理功能 6.0 采购记录管理功能 7.0 销售记录管理功能 8.0 退货记录管理功能…

PCIE概述

PCIE概述 文章目录 PCIE概述前言一、应用场景二、PCIE理论2.1 硬件2.2 拓扑结构:处理器和设备之间的关系2.3 速率2.4 层次接口2.5 四种请求类型2.5.1 bar空间2.5.2 memory2.5.3 IO2.5.4 configuration2.5.5 message 前言 参考链接: pcie总线知识点解析 …

基于C#开发web网页管理系统模板流程-登录界面和主界面

点击返回目录-> 基于C#开发web网页管理系统模板流程-总集篇-CSDN博客 前言,首先介绍一下本项目将要实现的功能 (一)登录界面 实现一个不算特别美观的登录窗口,当然这一步跟开发者本身的设计美学相关,像蒟蒻博主就没…

优化你的 3D Tiles:性能与质量的平衡

优化你的 3D Tiles:性能与质量的平衡 在现代的三维场景渲染中,3D Tiles 是一种强大的技术,它能以高效、分级加载的方式呈现海量的三维数据。然而,优化 3D Tiles 以实现性能与质量的平衡,却是一个复杂且关键的任务。本…

Unix 和 Windows 的有趣比较

Unix 和 Windows NT 比较 来源于这两本书,把两本书对照来读,发现很多有意思的地方: 《Unix 传奇》 https://book.douban.com/subject/35292726/ 《观止 微软创建NT和未来的夺命狂奔 》 Showstopper!: The Breakneck Race to Create Windows…

数据可视化大屏UI组件库:B端科技感素材PSD

在数据可视化领域,一个出色的大屏UI设计不仅能够准确传达数据背后的信息,更能提升用户的视觉体验。然而,对于UI设计师而言,设计这样一款界面往往面临着寻找合适设计素材的挑战。为了应对这一难题,我们推出了这款数据可…

爬虫逆向学习(十四):分享一下某数通用破解服务开发经验

阅前须知 这篇博客不是教大家怎么实现的,而且告知大家有这个东西,或者说一种趋势,借此分享自己大致的实现经验。具体的实现我也不好整理,毕竟是在别人的基础上缝缝补补。 前言 使用补环境方式破解过某数的同学都知道&#xff0…

结合Gitee、PicGo和Typora构建一个免费的个人笔记工具

文章目录 📝小引言📝步骤与内容📝简单使用Typora📝Gitee和GitHub📝使用GiteePicGo打造自己的图床Gitee建仓库Node环境配置PicGo软件安装及配置Typora测试 📝美化Typora 📝小引言 不知道大家在写…

快速本地化部署 OnlyOffice服务 ( Linux+Docker)

文章目录 一、OnlyOffice介绍📖二、集成OnlyOffice🧩2.1 环境准备🖥️2.2 搜索镜像2.3 拉取镜像2.4 查看镜像2.5 创建容器2.6 进入容器配置2.7 重启服务2.8 添加字体字号2.9 测试OnlyOffice服务 三、在线预览office文档四、Cpolar内网穿透 一…

数字产业化和产业数字化到底是什么?

“数字产业化”和“产业数字化”在很多官方文件和领导人讲话中都是成对出现的,这两个术语看起来非常相似,但它们作为数字经济的两个重要组成部分,既有联系又有区别。 在谈数字产业化和产业数字化之前,我这里需要先给大家介绍一个概…

RabbitMQ中的Work Queues模式

在现代分布式系统中,消息队列(Message Queue)是实现异步通信和解耦系统的关键组件之一。RabbitMQ 是一个广泛使用的开源消息代理软件,支持多种消息传递模式。其中,Work Queues(工作队列)模式是一…

数据结构(二叉树)

前言: 在数据结构那片浩瀚无垠、仿若神秘宇宙的天地里,二叉树宛如一颗散发着独特光辉、极为耀眼的星辰。它就像一位技艺精湛的建筑师,运用独特的二叉分支结构,精心构建起层次分明、秩序井然的数据组织 “大厦”。根节点仿若大厦的…