•  项目摘要:

 本项目使用的是基于https://blog.csdn.net/qq_25337221/article/details/106562317的k8s环境。版本如下:

docker-19.03.8

kubeadm-1.15.1

kubectl-1.15.1

kubelet-1.15.1

harbor 1.8.0

 

  • 项目具体实施:
  1. 制作镜像
  1. 第一种制作镜像方式:在maven中引入插件,使用maven制作。这种外网不能访问的话很不好处理。(略)
  2. 第二种制作镜像方式:在docker中直接制作镜像
  1. 进入到自己的根项目

# mvn clean install

  1. 新建一个文件夹,创建文件Dockerfile,写入如下内容:

FROM java:8

VOLUME /tmp

#这里的user-service-0.0.1-SNAPSHOT.jar是项目换成对应jar包名字

ADD user-service-0.0.1-SNAPSHOT.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

  1. 将生成的jar包挪到这个文件夹,如果当前机器没有docker,将此打包上传到服务器,在当前目录下,输入如下命令:

# cd jar包和Dockerfile的路径

# docker build -t test .

  1. 上传镜像
  1. 第一种方式: 把(3)生成的文件在每个k8s的node节点上执行第三步
  2. 第二种方式: 上传到Harbor私服,这里是上传到私服

步骤参阅: https://blog.csdn.net/qq_25337221/article/details/106562317

  1. 编写yml文件(这里叫user-service.yml)

apiVersion: apps/v1beta1

kind: Deployment

metadata:

  name: user-service 

spec:

  replicas: 3 

  template:

    metadata:

      labels:

        app: user-service 

    spec:

      containers:

      - image: 127.0.0.1/library/user-system/user-service:v1 

        name: user-service

        #拉取策略,默认Aways远程拉取,Never只从本地拉取,IfNotPresent优先本地拉取,没有就远程

        imagePullPolicy: IfNotPresent

        ports:

        - containerPort: 8081  #容器的端口

          protocol: TCP

---

kind: Service 

apiVersion: v1

metadata:

  name: user-service #服务名称,注意不要出现大写字母

spec:

#服务类型,默认是ClusterIp集群内部容器访问地址,会生成一个虚拟IP 与pod不在一个网段

#NodePort会在宿主机上映射一个端口,供外部应用访问模式,就是开放端口给外部访问服务

#LoadBalancer使用负载均衡,三者的功能是叠加的,如loadBalancer=clusterIp+NodePort+负载均衡

  type: NodePort

  selector:

    app: user-service 

  ports:

    - protocol: TCP

      nodePort: 31111  #集群开放的端口,端口号应该>=30000

      port: 6666  #service内部之间互访的端口

      targetPort: 8081  #docker容器本身开放的端口

  1. 应用到k8s
  1. 应用yml文件:

# kubectl apply -f user-service.yml 

附加额外命令:

在master节点查看当前pod

# kubectl get pod -o wide

在master节点查看当前service

# kubectl get service -o wide

  1. 浏览器测试:

http://集群任意节点ip:31111/user

如正常访问,则搭建成功。

  • 参考链接:
  1. springboot制作docker镜像(两种都包含): https://www.cnblogs.com/shamo89/p/9201513.html
  2. springboot部署到k8s环境: https://blog.csdn.net/wobupeiai/article/details/101110052

本内容由安康学院“雨季”原创。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐