k8s部署微服务项目

这篇具有很好参考价值的文章主要介绍了k8s部署微服务项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

kubectl get nodes  

k8s部署微服务项目

访问ip:30080 进入kuboard管理界面 登录进去
k8s部署微服务项目

2.概念
k8s部署微服务项目
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节点上

目录如下
k8s部署微服务项目
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部署微服务项目
点k8s-nginx-dp进去,选择服务,黄色的就是对外暴露的端口号
k8s部署微服务项目
查看容器组
k8s部署微服务项目

把levi.nginx.com 配到电脑hosts里面
k8s部署微服务项目
使用apifox访问
k8s部署微服务项目文章来源地址https://www.toymoban.com/news/detail-421538.html

到了这里,关于k8s部署微服务项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于docker,k8s 搭建服务(单体docker-compose编排)

    1、 yum -y install gcc yum -y instacc gcc-c++ 2、安装yum 工具 yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 3、设置docker镜像仓库 阿里云 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 更改镜像仓库为阿里云 sed -i ‘s/download.docker.com/mirrors.aliyun.com/do

    2024年01月22日
    浏览(51)
  • Kubernetes(k8s)实战:Kubernetes(k8s)部署Springboot项目

    wordpress是用于快速搭建博客系统。 该yaml文件创建一个mysql,并且生成一个service,service对外暴露的端口是3306 我们发现,搭建成功了,用浏览器访问192.168.56.101:30493,发现访问成功了! 在集群中,pod之间可以通过service 的name进行访问,不仅仅是ip,这就意味着,service中不仅帮

    2024年02月12日
    浏览(95)
  • 【k8s完整实战教程4】使用kubesphere部署项目到k8s

    系列文章:这个系列已完结,如对您有帮助,求点赞收藏评论。 读者寄语: 再小的帆,也能远航! 【k8s完整实战教程0】前言 【k8s完整实战教程1】源码管理-Coding 【k8s完整实战教程2】腾讯云搭建k8s托管集群 【k8s完整实战教程3】k8s集群部署kubesphere 【k8s完整实战教程4】使用

    2023年04月18日
    浏览(60)
  • k8s 部署Jenkins项目

    要求:当前集群配置了storageClass,并已指定默认的storageClass,一般情况下,创建的storageClass即为默认类 指定默认storageClass的方式 1.1 部署helm 1.2 部署jenkins 1.3 检查 jenkins 1.4 配置访问 3.1 准备ruoyi数据 3.2 准备k8s证书 3.3 准备maven配置文件 3.4 配置钉钉插件 在系统管理的下方有未

    2024年01月21日
    浏览(47)
  • K8s部署PHP项目

            前端时间PHP项目部署升级需要 ,需要把Laravel开发的项目部署K8s上,下面以laravel项目为例,讲解采用yaml文件方式部署项目。 一、部署步骤 Dockerfile是一个用来构建镜像的文本文件,在容器运行时,需要把项目文件和项目运行所必须的组件安装其中。 Kubernetes使用命名

    2024年02月05日
    浏览(30)
  • K8S系列文章之 Kind 部署K8S的 服务发布

    下载  https://github.com/kubernetes-sigs/kind/releases/download/0.17.0/kind-linux-amd64 执行以下命令:  之前需要先在本地主机安装好docker  kubectl是Kubernetes的命令行工具,可以让我们通过命令访问、操作、管理Kubernetes集群。brew安装方法如下 安装完毕后,查看kubectl版本信息,确认安装成功

    2024年02月14日
    浏览(36)
  • k8s集群部署springboot项目

    本篇,我们将基于k8s集群,模拟一个比较接近实际业务的使用场景,使用k8s集群部署一个springboot的项目,我们的需求是: 部署SpringBoot项目到阿里云服务器 ; 基于容器打包,推送私有镜像仓库 ; 采用K8S集群部署,对外暴露服务,pod副本扩容,公网可以访问 ; 基于阿里云服

    2024年02月02日
    浏览(45)
  • k8s的jenkins部署java项目到k8s集群cicd持续集成

    k8s1.16.0-k8s的jenkins部署java项目到k8s集群cicd(ci成,cd手动部署的) 注意: 本文档只是实现了ci,cd是通过ci生成的镜像,再手工再k8s-master执行的部署(只因pod部署的jenkins连接k8s的认证不知怎么操作,若jenkins是单独部署在k8s-master机器上,能直接在master执行kubectl命令就没这个问题了

    2024年02月03日
    浏览(60)
  • 【Go】K8s 管理系统项目[Jenkins Pipeline K8s环境–应用部署]

    考虑到实际工作中前后端可能是不同的同学完成,一般Api部分完成后改动会比较小,web部分改动会比较频繁.于是将api和web分了2个pipeline实现 docker目录存放镜像构建相关文件 k8s-plantform-api 存放api部分代码 Jenkinsfile用作pipeline配置 yaml用作生成k8s下k8s-plantform-api相关资源 1.1.1 docker目

    2023年04月08日
    浏览(55)
  • docker-compose重新部署之前的环境和项目

    因为目前工作中项目大部分都是使用的docker环境,使用docker-compose编排部署的,所以这段时间就自己尝试使用docker部署一下之前自己写的练手项目,其中的环境有 mysql8 、 php7.4 、 redis3 、 rabbitmq 、 nginx 、 elasticsearch ,当然这些技术有一些我都只是了解,平时工作用不到,自己

    2023年04月26日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包