k8s全栈部署篇

2023-10-30 18:31:01 浏览数 (2)

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

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

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

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

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

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

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

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

那我们先建立deployment和service

代码语言:javascript复制
- 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
代码语言:javascript复制
- cops-service.yaml:
apiVersion: v1 
kind: Service
metadata:
name: cops-service
spec:
selector:
app: cops 
ports:
 -
port: 80
targetPort: 8080

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

部署:

代码语言:javascript复制
kubectl apply -f cops-deployment.yaml
kubectl apply -f cops-service.yaml

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

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

代码语言:javascript复制
{
"registry-mirrors":
["https://<yourAccoutID>.mirror.aliyuncs.com"]
}

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

代码语言:javascript复制
{
"registry-mirrors":
["https://registry.docker-cn.com"]
}

看下pod日志:

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

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

改一下cops-service配置:

代码语言:javascript复制
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上部署前后端应用的重要理由。但是部署每次都要这么手动的话,那就还是比较麻烦了,所以得考虑如何自动化部署,进行快速更新迭代,这部分内容就是后面我们要研究的。今天就到这了,感兴趣的朋友记得点赞关注呀!

0 人点赞