kubernetes构建微服务-Springboot应用部署篇

前言

开始本篇教程之前,请参考我之前写的博客kubernetes入门部署教程。先部署好k8s的Master和Node。

Pause容器的坑

Kubernetes为每个Pod都附属于Pause容器,这个容器接管Pod的网络信息,业务容器通过加入网络容器的网络来实现网络共享。此容器随着pod创建而创建,随着Pod删除而删除。

当k8s创建RC的时候,docker会自动去拉取pause容器,但是由于被墙的原因,查看日志的时候会看到pod一直是pulling的状态。

sudo systemctl status docker.service

kubernetes构建微服务-Springboot应用部署篇_第1张图片

sudo kubectl describe pod xxx

xxx是具体的pod名称,可以通过以下命令得到:

sudo kubectl get pods


曲线构建Pause容器

sudo docker pull chenpeihai/gcr.io-google_containers-pause:3.1
sudo docker tag chenpeihai/gcr.io-google_containers-pause:3.1 k8s.gcr.io/pause-amd64:3.1

DockerHub可以构建GitHub上的Dockerfile生成镜像,另起教程说明。

sudo docker images 

可以看到Pause镜像已经下载下来了。

创建ReplicationController

springboot-helloworld-rc.yaml 如下:
apiVersion: v1
kind: ReplicationController
metadata:
  name: helloworld
  labels:
    name: helloworld
spec:
  replicas: 3
  selector:
    name: helloworld
  template:
    metadata:
     labels:
       name: helloworld
    spec:
     containers:
     - name: helloworld
       image: chenpeihai/springboot-helloworld
       ports:
       - containerPort: 8080

然后执行

sudo kubectl create -f springboot-helloworld-rc.yaml

查看创建的RC:

sudo kubectl get rc

查看创建的pod:

sudo kubectl get pods

由于要拉取chenpeihai/springboot-helloworld这个镜像,需要一定的时间,可以查看Pod的启动状态。

查看Pod的启动日志

sudo kubectl describe pod helloworld-7jpm5
kubernetes构建微服务-Springboot应用部署篇_第2张图片

查看单个pod的日志:

sudo kubectl logs helloworld-7jpm5

kubernetes构建微服务-Springboot应用部署篇_第3张图片

这样ReplicationController和Pods就已经创建好了。

创建Service

springboot-helloworld-svc.yaml文件如下:

apiVersion: v1
kind: Service
metadata:
  name: helloworld
  labels:
    name: helloworld
spec:
  type: NodePort 
  ports:
  - port: 8080
    nodePort: 8008
  selector:
    name: helloworld

注意,文件里面的nodePort是8008。

创建Service,这样就可以访问之前创建的Pods了。

sudo kubectl create -f springboot-helloworld-svc.yaml

查看创建的结果:

sudo kubectl get services

这样Service就可以访问了,并映射到8008端口。

访问Service

curl http://localhost:8008

完美,可以看到返回的Hello World的信息。

结束语

由于chenpeihai/springboot-helloworld 镜像已经构建好并上传至dockerhub上,所以创建的ReplicationController的时候就会自动去拉取这个镜像。之后会写Docker构建springboot的镜像教程:/




你可能感兴趣的:(kubernetes)