k8s 部署前后端服务

## 后端部署

Dockerfile , serve.yaml ,jar 包

流程可归纳为以下几个步骤:

  • 制作Dockerfile文件,创建应用容器镜像;
  • 对镜像打标签后,将其上传至镜像仓库;
  • 定义k8s配置文件;
  • 使用kubectl create 命令,构建部署容器应用。

Dockerfile 示例:

# jdk基础镜像
FROM jdk:8
# 容器中创建目录
RUN mkdir -p /usr/local/serve
# 编译后的jar包copy到容器中创建到目录内
COPY server.jar /usr/local/serve/server.jar
# 指定容器启动时要执行的命令
ENTRYPOINT ["java","-jar","/usr/local/serve/server.jar"]

构建镜像:docker build -t my-server .

打标签和上传镜像: docker tag,docker push

k8s yaml 配置示例:

# 资源的类型/角色:svc
apiVersion: v1
kind: Service # 资源的类型
metadata:
  name: my-server # 服务名称
  namespace: default
  labels:
    app: my-server
spec:
  type: NodePort #指定为该类型,则服务可以被外界访问到
  ports:
    - port: 9090 #集群内部访问端口
      nodePort: 32351 #service对外开放端口
  selector:
    app: my-server
---
# 资源的类型/角色:deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: my-server
  name: my-server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-server
  strategy: {}
  template:
    metadata:
      labels:
        app: my-server
    spec:
      containers:
        - image: #镜像地址
          name: my-server
          resources: {}
status: {}

部署后端: kubectl create -f serve.yaml

## 前端部署

default.conf \Dockerfile\front.yaml\前端dist包

DockerFile:

# 基于nginx镜像
FROM nginx:latest
# 描述
LABEL description="webs"
# 将打包文件复制到nginx镜像目录下
COPY dist/ /myweb
# 配置文件复制到nginx镜像中对应的目录下
COPY default.conf /etc/nginx/conf.d/default.conf

default.conf:

server {
        listen 9000;             # 监听端口
        server_name localhost;           # _代表匹配所有
        root   /myweb;
        index index.html;
        location / {
            try_files $uri $uri/ /index.html;
        }
        location /open {
            rewrite ^/open/?(.*)$ /$1 break;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header x-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://10.244.19.145:32351;  
        }
}

front.yaml

#vue资源的类型/角色:deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-website
  # 命名空间无
  namespace: default
  labels:
    app: my-website
spec:
  replicas: 1 # 副本数量为1
  selector:
    matchLabels:
      app: my-website
  template:
    metadata:
      labels:
        app: my-website
    spec:
      nodeSelector:
        website: "true"
      containers:
        - name: my-website
          # 镜像获取地址
          image: #镜像地址
          ports:
            - containerPort: 9000
---
# vue资源的类型/角色:svc
kind: Service
apiVersion: v1
metadata:
  name: my-website
  namespace: default
  labels:
    app: my-website
spec:
  type: NodePort
  externalTrafficPolicy: Cluster
  ports:
    - name: http
      port: 9000
      protocol: TCP
      targetPort: 9000
      nodePort: 30262 #service对外开放端口
  selector:
    app: my-website

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值