暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

k8s全栈部署篇

希里安 2023-04-15
177

关注“希里安”,get更多有用干货!


截止昨天已经对前端和后端应用进行容器化部署,并顺利实现前后端交互。那么如果像此类前后端项目越来越多的时候,不好管理该怎么办,相信大家已经知道了,就是利用容器编排平台,目前主流的K8s,高扩展性、高性能都是其特点。那么我们现在开发完成完成后如何部署到k8s集群中,今天来研究一番。






首先就是将昨天已打包好的镜像推送至镜像仓库,这里可以是私有的镜像仓库,也可以是公共的比如dockerhub官方镜像仓库、BAT的镜像仓库等,这样的话,k8s就可以从仓库拉取镜像进行部署了。如何部署镜像仓库呢,这个后面专门分享一篇如何搭建自己的私有镜像仓库。



1、将vuego前后端项目构建为就像,推送到了公开仓库,名称为cilliandevops/cops-fecilliandevops/cops


2、在集群中部署前后端项目的deploymentservice,这里给大家分享下k8s中的基础资源知识:


- Pod:K8S调度的最小运算单元,包含一个或多个容器。


- Deployment:PodReplicaSet的抽象,用于部署和维护Pod


- Service:为一组Pod提供网络连接,分配Cluster IP和端口等。


所以想要部署访问就得创建对应项目的deploymentservice。因为pod是集群内,集群内的ip外部无法直接访问,所以servicepod提供了一个稳定的网络访问入口。


那我们先建立deploymentservice

    - cops-deployment.yaml:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: cops-deployment
    spec:
    selector:
    matchLabels:
    app: cops
    template:
    metadata:
    labels:
    app: cops
    spec:
    containers:
    - name: cops
    image: cilliandevops/cops:1.0

      - cops-service.yaml:
      apiVersion: v1
      kind: Service
      metadata:
      name: cops-service
      spec:
      selector:
      app: cops
      ports:
      -
      port: 80
      targetPort: 8080

      这里需要解释下,这个porttargetport的区别,一个就是你暴露的端口,一个就是代码里设置的端口也就是pod端口。




      部署:

        kubectl apply -f cops-deployment.yaml
        kubectl apply -f cops-service.yaml




        因为这里dockerhub仓库拉取镜像,又是网络的原因,唉。所以咱们设置下docker镜像加速:

        编辑/etc/docker下的daemon.json文件,添加:

          {
          "registry-mirrors":
          ["https://<yourAccoutID>.mirror.aliyuncs.com"]
          }

          或者直接添加镜像源即可:

            {
            "registry-mirrors":
            ["https://registry.docker-cn.com"]
            }



            看下pod日志:




            可以看到已经在运行了,那么这个sevice地址也已经看到了,可是这个地址只能在集群内访问,我们想要在外部访问是不行的。





            那么我们这里要改一下service的配置,加一个nodeport,这个配置就是service映射到节点上的端口,这样就可以通过节点ip地址加指定的端口,从集群外访问这个service了。


            改一下cops-service配置:

              yaml
              apiVersion: v1
              kind: Service
              metadata:
              name: cops-svc
              spec:
              type: NodePort
              ports:
               -port: 80        #Service暴露的端口号
              nodePort: 30003 #节点端口号
              targetPort: 8080#Pod上服务实际监听的端口号
              selector:
                  app:cops




              我们访问一下看看:



              这么一看,咱们后端是成功部署到k8s了,那么前端项目也是同样流程了。



              访问前端页面:







              到此,就完成了将前后端项目容器化并部署到K8s的项目了。总体来说,其实就是把docker给管理起来,在Kubernetes上部署前后端应用可以带来资源统一管理、服务发现、高可用、灰度发布等诸多的优势,这也是越来越多的企业选择在Kubernetes上部署前后端应用的重要理由。但是部署每次都要这么手动的话,那就还是比较麻烦了,所以得考虑如何自动化部署,进行快速更新迭代,这部分内容就是后面我们要研究的。今天就到这了,感兴趣的朋友记得点赞关注呀!








              文章转载自希里安,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论