k8s部署微服务项目

K8S 部署电商项目 阅读详情

之前用docker-compose部署微服务项目,但是只能单节点的(那你用微服务架构干啥?),所以想搞一下k8s集群,网上找了下资料没有视频专门讲这一块,自己找了很多资料,搞了蛮长时间的,所以记录一下
1.安装k8s和管理界面kuboard

高版本的k8s已经抛弃了docker,容器使用的话要安装1.19版本的 链接地址
安装好之后执行命令查看所有node节点

kubectl get nodes  

在这里插入图片描述

访问ip:30080 进入kuboard管理界面 登录进去
在这里插入图片描述

2.概念
在这里插入图片描述
namespace:命名空间,所有操作都要先选择一个命名空间
ingress:nginx做了一层封装,用域名代替ip访问
service:暴露给外网访问的端口(Nodeport),因为创建的应用只能集群内访问到
deployment:应用负载,下面有多个pod,一个pod宕机了,可以立马创建新的pod,也可以扩缩容
pod:容器组,里面可以创建多个容器

3.命令
kubectl 动词 类别 名称

例如 创建命名空间 kubectl create namespace namespace名

后面的操作部署都是指定yml文件运行 kubectl apply -f yml文件名 (用的最多的命令,项目部署都是用yml文件)

4.部署应用
三个简单服务 nginx gateway , order , product 注册中心nacos 数据库mysql,redis
mysql ,nacos,redis这些有状态的应用放到k8s外部 ,gateway , order , product这三个服务放k8s中部署

4.1 将jar包打成镜像传到harbor仓库中(可以在idea中使用docker-maven-plugin插件打包上传镜像),Dockerfile以gateway为例

FROM moxm/java:1.8-full

MAINTAINER levi

EXPOSE 38080

ARG JAR_FILE=target/k8s-gateway.jar

COPY $JAR_FILE app.jar

ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"

CMD java -jar app.jar $JAVA_OPTS

三个镜像都上传上去之后,开始编写三个服务的yml文件进行部署

gateway.yml gateway创建了service,可以被外网访问到

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: test
  name: gateway-dp
  labels:
    app: gateway-dp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: gateway-dp
  template:
    metadata:
      labels:
        app: gateway-dp
    spec:
      containers:
      - name: gateway
        image: 192.168.3.152/test/k8s-gateway:1.0.0

---
#暴露service
apiVersion: v1
kind: Service
metadata:
  namespace: test
  name: gateway-dp    #service的名称
  labels:
    app: gateway-dp   #标签
spec:
  selector:
    app: gateway-dp   #选择的deploy
  ports:
  - nodePort: 30008   #配置可以外网访问的端口
    port: 38080       #集群内访问的端口  
    protocol: TCP
    targetPort: 38080 #pod容器内的端口
  type: NodePort

order.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: test
  name: order-dp
  labels:
    app: order            #为该Deployment设置key为app,value为order的标签
spec:
  replicas: 2             #指定集群数,即pod的数量
  selector:               #标签选择器,与上面的标签共同作用
    matchLabels:          #选择包含标签app:order的资源
      app: order
  template:               #这是选择或创建的Pod的模板
    metadata:             #Pod的元数据
      labels:             #Pod的标签,上面的selector即选择包含标签app:order的Pod
        app: order
    spec:                 #期望Pod实现的功能(即在pod中部署)
      containers:         #如果要创建多个容器,继续往下面加-name
      - name: k8s-order   #容器名称
        image: 192.168.3.152/test/k8s-order:1.0.0    #镜像

product.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: test
  name: product-dp
  labels:
    app: product            #为该Deployment设置key为app,value为product的标签
spec:
  replicas: 2             #指定集群数,即pod的数量
  selector:               #标签选择器,与上面的标签共同作用
    matchLabels:          #选择包含标签app:product的资源
      app: product
  template:               #这是选择或创建的Pod的模板
    metadata:             #Pod的元数据
      labels:             #Pod的标签,上面的selector即选择包含标签app:product的Pod
        app: product
    spec:                 #期望Pod实现的功能(即在pod中部署)
      containers:         #如果要创建多个容器,继续往下面加-name
      - name: k8s-product   #容器名称
        image: 192.168.3.152/test/k8s-product:1.0.0    #镜像

nginx.yml nginx创建deployment ,service和ingress

注意nginx挂载的目录和文件要在worker节点上提前创建好,因为到时候容器会运行在worker节点上

目录如下
在这里插入图片描述
idnex.html里面随便写点内容
nginx.conf配置文件内容如下

server {
        listen       80;
        server_name  localhost;

                location / {
	               root   /usr/share/nginx/html;
	               try_files $uri $uri/ /index.html;
	               index  index.html index.htm;
        }

                location /prod-api/ {
	                proxy_set_header Host $http_host;
	                proxy_set_header X-Real-IP $remote_addr;
	                proxy_set_header REMOTE-HOST $remote_addr;
	                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	                proxy_pass http://gateway-dp:38080/;   #gateway-dp是网关的deployment名称
                }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
#创建应用负载
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx #为该Deployment设置key为app,value为nginx的标签
  name: k8s-nginx-dp
  namespace: test
spec:
  replicas: 2 #副本数量
  selector: #标签选择器,与上面的标签共同作用
    matchLabels: #选择包含标签app:nginx的资源
      app: nginx
  template: #这是选择或创建的Pod的模板
    metadata: #Pod的元数据
      labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod
        app: nginx
    spec: #期望Pod实现的功能(即在pod中部署)
      containers: #生成container,与docker中的container是同一种
      - name: k8s-nginx
        image: nginx:latest #使用镜像nginx: 创建container,该container默认80端口可访问
        ports:
        - containerPort: 80  # 开启本容器的80端口可访问
        volumeMounts:  #挂载持久存储卷
        - name: html #挂载设备的名字,与volumes[*].name 需要对应 
          mountPath: /usr/share/nginx/html #挂载到容器的某个路径下  
        - name: conf #挂载设备的名字,与volumes[*].name 需要对应 
          mountPath: /etc/nginx/conf.d #挂载到容器的某个路径下
      volumes:
      - name: html #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /home/nginx/html #此路径需要实现创建
      - name: conf #和上面保持一致 这是本地的文件路径,上面是容器内部的路径
        hostPath:
          path: /home/nginx/conf #此路径需要实现创建
---
#创建service
apiVersion: v1
kind: Service
metadata:
  namespace: test
  name: k8s-nginx-dp
  labels:
    app: k8s-nginx-dp
spec:
  selector:
    app: nginx
  ports:
  - nodePort: 30010   #配置可以外网访问的端口
    port: 8888       #集群内访问的端口  
    protocol: TCP
    targetPort: 80 #pod容器内的端口
  type: NodePort
---
#创建ingress
apiVersion: networking.k8s.io/v1  #固定写法
kind: Ingress
metadata:
  namespace: test
  name: nginx-ingress           #ingress的名称
spec:
  ingressClassName: ingress     #kuboard上配置的ingress的名称,这个要先在kuboard上配置好
  rules:
  - host: levi.nginx.com        #自己配置的域名
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: k8s-nginx-dp   #上面service上配置的name
            port:
              number: 8888       #上面配置的port

使用 kubectl apply -f yml文件名称 启动所有的yml,可以在kuboard界面上看到
在这里插入图片描述
点k8s-nginx-dp进去,选择服务,黄色的就是对外暴露的端口号
在这里插入图片描述
查看容器组
在这里插入图片描述

把levi.nginx.com 配到电脑hosts里面
在这里插入图片描述
使用apifox访问
在这里插入图片描述

k8s部署的4方案 k8s部署方案 阅读详情

相关推荐

k8s搭建部署(超详细)

简介 Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。 通过Kubernetes你可以: 快速部署应用 快速扩展应用 无缝对接新的应用功能 节省资源,优化硬件资源的使用 Kubernetes 特点: 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud) 可扩展: 模块化, 插件化, 可挂载, 可组合 自动化: 自动部署,

qq_40954652的博客 14万+

K8s部署微服务(springboot+vue)

本文主要记录K8s部署微服务项目(springboot后台+vue前端,动态部署自定义项目),也包括对网关、鉴权、用户等基础模块的部署。k8s部署项目,即创建相应的资源有命令行创建和yaml文件创建两种方式,由于命令行创建配置麻烦,且不具备复用性,因此本文均采用yaml文件创建资源的方式。

qq_43403676的博客 1万+

【业务功能121】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere部署三高微服务项目-01部署微服务思路

项目准备动作:1.项目中使用到的中间件如Redis,Mysql,MQ,Nacos等地址节点切换成前面云原生KubeSpere部署的域名地址加端口进行访问,在yaml文件一一修改,或者其他文件用使用到链接中间件的地址需要连同一起修改2.在项目工程中,每个微服务的最外层目录,创建一个Dockerfile文件,发布容器镜像文件3.在项目工程最外层目录添加mvn_settings.xml文件,提高maven工作效率,并且后续流水线也需要用。

studyday1的博客 306

k8s部署微服务

一、安装nfs服务 由于资源有限,以master节点所在虚拟机作为nfs服务器 1、确认是否安装nfs rpm -qa nfs-utils rpcbind 如果未安装,则安装 nfs服务器上安装2个模块:yum install -y nfs-utils rpcbind nfs客户端机器(这里是所有node节点)安装yum install -y nfs-utils 2、nfs服务器创建共享文件夹/data/nfs和mysql各数据库文件的挂载目录,当然你可以自己选择位置 nfs:为nfs共享文

a595077052的专栏 5445

k8s集群rou-yi项目微服务应用部署

2014年,Docker 出现了,彻底改变了软件开发的面貌。它让程序运行在容器中,每个容器可以分别设定运行环境,并且只占用很少的系统资源。显而易见,可以用容器来实现"面向服务架构",每个服务不再占用一台服务器,而是占用一个容器。这样就不需要多台服务器了,最简单的情况下,本机运行多个容器,只用一台服务器就实现了面向服务架构,这在以前是做不到的。这种实现方式就叫做微服务。

gsdgdg00的博客 1833

K8s环境部署 、微服务项目部署

K8s环境部署 、微服务项目部署

1348

在K8S平台部署Spring Cloud微服务项目

在K8S平台部署Spring Cloud微服务项目 1.熟悉Spring Cloud微服务项目 代码分支说明: dev1交付代码 dev2 编写Dockerfile构建镜像 dev3 K8S资源编排 dev4 微服务链路监控 master 最终上线 2.在K8S中部署Spring Cloud微服务项目的逻辑架构 整体逻辑架构图 服务暴露的关系图 3.准备环境 一套k8s集群,单master或者...

虫虫的博客 6186

【业务功能129】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere部署三高微服务项目-k8s集群-09微服务前端代理服务 Nginx部署

【代码】【业务功能129】微服务-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere部署三高微服务项目-k8s集群-微服务项目前端代理服务 Nginx部署。

studyday1的博客 248

视频教程- Kubernetes部署SpringCloud微服务架构高级项目实战-Docker/K8S

Kubernetes部署SpringCloud微服务架构高级项目实战 曾任...

weixin_34220948的博客 914

EPICS pythonSoftIOC教程

EPICS pythonSoftIOC教程

yuyuyuliang00的博客 1521

vivado Block Design 设计 .tcl 文件使用,导出,修改,添加方式

在vivado中生成 Block Design可以导出tcl文件进行保存(体积小),或者在别的版本vivado中打开(版本互通),这是一个非常好的功能。另外GitHub中很多项目都是采用这种方式上传的,学会如何使用可以快速修改历程项目。

2203_75345038的博客 2493

k8s部署springcloud_在K8S平台部署Spring Cloud微服务项目

1.熟悉Spring Cloud微服务项目代码分支说明:dev1交付代码dev2 编写Dockerfile构建镜像dev3 K8S资源编排dev4 微服务链路监控master 最终上线2.在K8S中部署Spring Cloud微服务项目的逻辑架构整体逻辑架构图服务暴露的关系图3.准备环境一套k8s集群,单master或者多master都可以IP角色配置192.168.73.138mast...

weixin_39968319的博客 1811

jQuery 版本怎么选?别一上来就用最新版,老项目里这个坑很常见

jQuery 是一个封装好的 JavaScript 函数库,简称 JQ它的核心理念是jQuery 有 1.x、2.x、3.x 三个主要版本系列2.0 以上版本不再支持 IE6、IE7、IE8版本选择不能只看“新不新”,而要看项目兼容性和实际需求.min.js是压缩版文件,生产环境常用使用 jQuery 前必须先通过<script>正确引入基本就是没引入或引入失败可以快速绑定点击事件.animate()可以快速实现动画效果,但定位属性要设置好。

Web安全工具库 385

微服务部署终极选择:SpringBlade项目Docker Swarm与K8s功能深度对比

SpringBlade是一个由商业级项目升级优化而来的SpringCloud分布式微服务架构、SpringBoot单体式微服务架构并存的综合型项目,采用Java8 API重构了业务代码,完全遵循阿里巴巴编码规范。采用Spring Boot 2.7、Spring Cloud 2021、Mybatis等核心技术,为企业级SaaS多租户微服务平台提供了强大的技术支持。在微服务部署领域,Docker Sw

gitblog_00159的博客 1116

PYNQ-Z2 开发板从镜像烧录到 Jupyter 交互全流程指南

本文详细介绍了PYNQ-Z2开发板从镜像烧录到Jupyter交互的全流程指南,包括硬件解析、镜像烧录技巧、设备启动与网络配置、Jupyter Notebook深度使用以及实战案例分享。通过具体步骤和实用技巧,帮助开发者快速上手PYNQ-Z2开发板,实现高效的FPGA开发和智能家居控制应用。

weixin_28736355的博客 437

无人驾驶Autoware导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对无人驾驶Autoware介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 2397

在Kubernetes(k8s)上部署整个SpringCloud微服务应用

Kubernetes上部署整个SpringCloud微服务应用,并使用ingress暴露应用。部署包括nacos、redis、mysql等组件。同时还部署monitor监控模块。

XiaoHH的博客 1万+

基于STM32、HAL库的MCP4013T-103E/CH 数字电位器驱动程序设计

define MCP4013_I2C_ADDR (0x5F << 1) // HAL库使用7位地址左移1位,或直接使用0xBE/0xBF。#include "i2c.h" // 包含你的I2C初始化相关的头文件,例如由CubeMX生成的 i2c.h。大于127的值会被截断。// MCP4013的读操作:主机发起读取请求,从机返回当前滑片位置的一个字节。// 使用HAL_I2C_Master_Transmit直接发送数据。// 使用HAL_I2C_Master_Receive读取一个字节。

corlin6688的博客 125

K8S集群部署前后端分离的微服务项目

本文记录自己对已有项目的进行容器化的心路历程~

u011663693的博客 2426

【YOLOv8改进-注意力机制】BRA(bi-level routing attention ):双层路由注意力

【YOLOv8改进-注意力机制】BRA(bi-level routing attention ):双层路由注意力我们提出了一种新颖的动态稀疏注意力机制,通过双层路由实现更加灵活且具有内容感知的计算分配。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 3166

开心消消乐

1)当点击一个1时,该1变被反转为0,同时相邻的上、下、左、右,以及左上、左下、右上、右下8个方向的1(如果存在1)均会自动反转为0;2)进一步地,一个位置上的1被反转为0时,与其相邻的8个方向的1(如果存在1)均会自动反转为0;上述样例中,四个角上的1均在中间的1的相邻8个方向上,因此只需要点击一次即可。给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。在上述4 * 4的矩阵中,只需要点击2次,即可将所有的1进行消除。接下来N行表示矩阵的初始值,每行均为M个数,取值范围[0,1]

面试高手的博客 2728

k8s集群中部署微服务项目前端代理服务 Nginx

k8s集群中部署微服务项目前端代理服务 Nginx

qq_37892401的博客 1303

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

微服务项目(k8s集群)部署。

微服务架构因其灵活性和可扩展性成为现代应用开发的主流选择,而 Kubernetes 作为容器编排工具,为微服务部署提供了强大支持。以下将详细探讨如何将微服务项目部署到 Kubernetes 集群中,涵盖从基础配置到高级优化的完整流程。典型的微服务项目包含多个独立服务,每个服务拥有自己的代码仓库和部署配置。每个服务需要独立的 Docker 镜像和 Kubernetes 部署文件。对应的 Kubernetes 部署文件。对应的 Kubernetes 部署文件。

diV_rdik的博客 330

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 搭建Harbor镜像私服
下一篇: 搭建Rocketmq dledger集群,springboot整合
livel_java
博客等级 码龄9年 2916粉丝 29原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值