Go项目-----Kubernetes使用

news/2024/12/17 13:44:59/

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

文章目录

  • 前言
  • 基本概念
  • 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-mysqllabels:app: webook-mysql
spec:replicas: 1selector:matchLabels:app: webook-mysqltemplate:metadata:name: webook-mysqllabels:app: webook-mysqlspec:containers:- name: webook-mysqlimage: mysql:8.0env:#            通过环境变量设置 root 的密码- name: MYSQL_ROOT_PASSWORDvalue: root
#         mysql数据怎么存储volumeMounts:- mountPath: /var/lib/mysqlname: mysql-storage
#        -pod暴露的端口ports:- containerPort: 3306volumes:- name: mysql-storagepersistentVolumeClaim:#            使用 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会自动帮我们解析。这也是当时踩坑的地方。
在这里插入图片描述


http://www.ppmy.cn/news/1555868.html

相关文章

超快上手electron,electron保姆级教程(含运行、打包、electron下载慢),利用electron把web端应用转成桌面应用

electron配置步骤 : 1.首先node及npm是否安装。 2.管理者模式cmd进行项目初始化。 mkdir my-test-app cd my-test-app npm init 此时package.json内容如下(有必填项) 3.首管理者模式设置环境变量再安装electron (否则速度太慢)。 $env:ELECTRON_MIRROR"https://npmmirro…

【kafka】简单运用go语言操作kafka实现生产者和消费者功能的包,confluent-kafka-go和sarama

confluent-kafka-go和sarama对比 特性confluent-kafka-gosarama底层实现基于 librdkafka C 库完全用 Go 实现性能高吞吐量、低延迟吞吐量较低,适合常规应用安装依赖需要 C 编译器和 librdkafka无需外部依赖,纯 Go 实现功能支持 Kafka 所有功能&#xff…

旅游资源系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

【C++】11___模板(1)

目录 一、模板的概念 二、函数模板 三、普通函数与函数模板 3.1区别 3.2调用规则 一、模板的概念 模板不能直接使用&#xff0c;它只是一个框架模板的通用并不是万能的分为两类&#xff1a;函数模板、类模板 二、函数模板 函数模板语法&#xff1a; template<typename T…

R环境配置 以及Debug方法 (VSCode, conda, 远程R)

生物信息学中的R环境配置 以及Debug方法 开始设置1、建议使用VSCode conda 远程R2、 VSCode配置安装插件安装好插件后&#xff0c;远程设置链接成功后&#xff0c;设置项目 3、 linux conda 和 远程R配置4、VScode 远程访问R环境下面配置远程R 5、开始Debug新建个R文件&#…

day13 python(1)——python基础

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 1、python简介 1.1 为什么学习python 1.2 python发展历史 python2.x和python3.x 版本里面有些是不兼容的。&#xff08;我自己本地版本 3.11&#xff09; 2、语言的分类 &#xff08;1&#xff09;编译型 …

MySQL的历史和地位

秋招之后&#xff0c;开始深入学习后端开发知识啦。把学到的东西分享给大家最开心啦。就从MySQL开始吧。 首先说一下MySQL的历史和地位。主要是看一下我们为什么要学习&#xff0c;而不是说让我们学什么我们就学什么。 地位 这张图是我从DB-Engines截取的2024年12月最新的数据…

百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!

百度智能云千帆 AppBuilder 发版升级&#xff01; 进一步降低开发门槛&#xff0c;落地大模型到应用的最后一公里。在千帆 AppBuilder 最新升级的 V1.1版本中&#xff0c;企业级 RAG 和 Agent 能力再度提升&#xff0c;同时组件生态与应用集成分发更加优化。 • 企业级 RAG&am…