k8s的项目部署

Posted 大忽悠爱忽悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s的项目部署相关的知识,希望对你有一定的参考价值。

k8s的项目部署


k8s的项目部署

开发阶段

● 编写代码。
● 测试。
● 编写Dockerfile。

持续集成

● 代码编译、打包。
● 制作镜像。
● 将镜像上传到镜像仓库。

应用部署

● 环境准备。
● 创建Pod、Service、Ingress。

运维

● 监控。
● 故障排查。
● 应用升级及优化。
● ……


k8s中部署Java项目的流程

● ① 通过Dockerfile制作镜像。
● ② 将镜像推送到镜像仓库,比如阿里云镜像仓库等。
● ③ Pod控制器部署镜像。
● ④ 创建Service或Ingress对外暴露应用。
● ⑤ 对集群进行监控、升级等。


k8s中部署Java项目

制作镜像

  1. 准备java项目,然后打包得到对应的jar包 — 这一步演示过程省略
  2. 在项目的根目录下新建Dockerfile文件:
FROM openjdk
VOLUME /tmp
COPY ./target/springboot2-1.0.jar springboot2-1.0.jar
RUN bash -c "touch /springboot2-1.0.jar"
# 声明时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8080
ENTRYPOINT ["java","-jar","/springboot2-1.0.jar"]
  • 制作镜像

将整个项目通过ftp上传到k8s集群所在的服务器中(其实完全可以只上传jar包和Dockerfile文件)。


进入springboot2目录,然后使用docker build构建镜像:

# springboot是镜像的名称
docker build -t springboot2 .

推送镜像

阿里云创建命名空间:


阿里云创建镜像仓库:



登录阿里云Docker Registry:

sudo docker login --username=阿里云账号 registry.cn-hangzhou.aliyuncs.com

查看上传的Docker镜像的id:

docker images


给镜像打tag:

sudo docker tag bc56e4a83ff7 registry.cn-hangzhou.aliyuncs.com/k8s-test-123/springboot2:latest


推送镜像:

sudo docker push registry.cn-hangzhou.aliyuncs.com/k8s-test-123/springboot2:latest

部署镜像暴露应用

创建deployment.yaml文件,内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: springboot2
  name: springboot2
spec:
  replicas: 3
  selector:
    matchLabels:
      app: springboot2
  template:
    metadata:
      labels:
        app: springboot2
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/k8s-test-123/springboot2:latest
        name: springboot2

创建Deployment:

kubectl create -f deployment.yaml

查看Deployment和Pod:

kubectl get deploy,pod


创建service.yaml文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: springboot2
  name: svc
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
    nodePort: 30091
  selector:
    app: springboot2
  type: NodePort

创建Service:

kubectl create -f service.yaml

查看Service:

kubectl get service

以上是关于k8s的项目部署的主要内容,如果未能解决你的问题,请参考以下文章

k8s实战之手动部署PHP项目和Java项目

K8S 如何部署SpringBoot项目

第157天学习打卡(Kubernetes k8s集群部署项目)

K8S 部署 SpringBoot 项目

K8S 部署 SpringBoot 项目

K8S 部署 SpringBoot 项目