k8s+harbor部署jar包和vue项目

前置工作:
k8s 部署docker镜像需要拉取docker镜像,一般企业都是使用的局域网,所以需要在本地搭建一个docker私有仓库。

将jar包、vue项目打成docker镜像并推送到Harbor本地仓库
前面的工作都已经完成了,下面开始使用k8s部署Java项目:

编写Deployment,Service的yaml文件

touch deployment.yaml
touch service.yaml

在这里插入图片描述

vim deployment.yaml

先建好自己的namespace 我用的mysapce

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: swagger-server
  namespace: mysapce
spec:
  replicas: 1
  template:
    metadata:
     labels:
       app: swagger-server
    spec:
     containers:
     - name: swagger-server
       image: 120.48.54.67:8282/k8spro/swagger:1.0.1
       tty: true
       ports:
       - containerPort: 8013

说明:
image: 这个地址要用你的docker镜像的地址,可以去harbor仓库里面查一下。
containerPort:填写jar包的端口号。

vim service.yaml

apiVersion: v1
kind: Service
metadata:
  name: jar-service
  namespace: mysapce
spec:
  ports:
    - port: 80 #  集群端口
      targetPort: 8013 #pod控制器中定义的端口(应用访问的端口)
      protocol: TCP
  type: NodePort 
  selector:
    app: swagger-server

targetPort:填写你的jar内置的端口号,不然虽然pod能启动 但是找不到pod里面的服务。

执行yuml

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

查一下pod,svc

kubectl get pods -n mysapce
kubectl get svc -n mysapce

去dashboard里面看看

在这里插入图片描述
浏览器访问一下:
在这里插入图片描述
访问的时候选择后面那个端口:
在这里插入图片描述
这样就启动好了。

部署vue也是一样的步骤

deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kgf-vue
  namespace: mysapce
  labels:
    app: kgf-vue
spec:
  replicas: 1
  selector:
    matchLabels: { app: kgf-vue }
  strategy: 
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate  
  template:
    metadata:
      labels: { app: kgf-vue }
    spec:
      containers:
        - name: kgf-vue
          env:
            - name: kgf-vue
              valueFrom:
                fieldRef: { fieldPath: metadata.name }
          image: 120.48.54.67:8282/k8spro/vue:1.0.1
          imagePullPolicy: IfNotPresent
          resources: 
            limits:
              cpu: 1
              memory: 512Mi
            requests:
              cpu: 0.4
              memory: 256Mi   

service.yaml:

#service版本
apiVersion: v1
#这个表示资源类型我们创建的是Service
kind: Service
metadata: #这个里面定义的是Service中我们创建的对象信息
  #对象名称
  name: kgf-vue
  #元数据名称空间
  namespace: mysapce
  labels:
    app: kgf-vue
spec: #下面定义service的详细信息
  #类型为NodePort
  type: NodePort
  selector: #通过标签选择器去查询对应版本的pod,最后组成一个service
    app: kgf-vue
  ports: #指定容器需要用到的端口列表
    #指定端口名称 
    - name: http
      #服务对外的端口
      port: 8080
      protocol: TCP
      #容器的端口
      targetPort: 80

如果报错:

0/1 nodes are available: 1 Insufficient cpu.

把 deployment.yaml 里面的cup 调小一些。

总结:

当然这样虽然可以 实现k8s部署自己的项目,但是这样手动部署不是最终目的,下一步我们试试结合gitlab+Jenkins 实现自动化部署。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes (k8s) 是一个开源容器编排平台,而 Spring Cloud 是一组用于构建分布式系统的服务网格和微服务架构工具。将 Spring Cloud 应用部署到 Kubernetes 上通常括以下几个步骤: 1. **创建 Docker 映像**: 首先,你需要有一个打好的 Spring Boot 应用程序,并将其打为 Docker 映像。这通常含应用代码、依赖和运行环境。 2. **配置 Dockerfile**: 在 Dockerfile 中指定基础镜像、依赖、启动命令以及暴露的端口等信息。例如: ```Dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp COPY target/my-app.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 3. **编写 Kubernetes 配置文件**: 使用 YAML 或者 JSON 格式(如 deployment.yaml)定义应用程序的部署描述符,括副本数、服务选择、资源请求/限制等。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-spring-cloud-app spec: replicas: 3 selector: matchLabels: app: my-spring-cloud-app template: metadata: labels: app: my-spring-cloud-app spec: containers: - name: my-app image: your-docker-image-name:latest ports: - containerPort: 8080 ``` 4. **应用到 k8s 集群**: 将配置文件上传到集群,然后使用 `kubectl apply` 命令部署到 Kubernetes,例如: ``` kubectl apply -f deployment.yaml ``` 5. **配置负载均衡和服务发现**: 可以使用 Spring Cloud Netflix 家族的 Eureka 或 Hystrix 进行服务注册与发现,或使用 Istio 等服务网格解决方案。在 k8s 中,可以选择基于 ClusterIP 的 Service 或者 ingress controller 来提供外部访问。 6. **监控和日志管理**: 设置日志收集和监控策略,比如 Prometheus 和 Grafana 对于 metrics,还有日志服务如 Elasticsearch + Kibana。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值