k8s springboot 文件_30分钟无痛上云——springboot项目部署到kubernetes

最近学习kubernetes,看书千言,不如一行。还是直接上手把一个项目迁移过去操作一下感觉深刻一点。废话少说,言归正传。

一、环境准备

操作系统版本 mac Mojove 10.14.5。docker-desktop版本2.1.0.3,对应docker ce版本为19.03.2这里下载最新的 [dockerCE]: https://store.docker.com/search?type=edition&offering=community注意:请执行以下操作之前,检查之前本机是否有kubernetes环境,如果有不完整的,建议最好清除。请看我的 踩坑记录二、docker-desktop开启kubernetes

为 Docker daemon 配置镜像加速,依次点击docker的小鲸鱼图标,preferences->daemon->registry mirrors下添加中科大的镜像源: https://docker.mirrors.ustc.edu.cn从github上获取阿里提供的k8s-for-docker-desktop并安装依赖,可以简化kubernetes的安装。(前半部分的安装文档参考于此)

git clone https://github.com/AliyunContainerService/k8s-for-docker-desktopcd k8s-for-docker-desktop./load_images.sh镜像安装完成之后,开启 Kubernetes,apply,并等待 Kubernetes 开始运行。

TIPS:如果在Kubernetes部署的过程中出现问题,可以通过docker desktop应用日志获得实时日志信息:

pred='process matches ".*(ocker|vpnkit).*" || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'/usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"踩坑记录:我在这一步卡住了。。勾选enable kubernetes后,右下角的状态一直为: kubernetes is starting.上面的日志信息显示的是:localhost com.docker.driver.amd64-linux[60050]: (libsystem_info.dylib) [com.apple.network.libinfo:getaddrinfo] nat64_v4_requires_synthesis(127.0.0.1) == false多方查证后,发现是我本机之前安装了minikube,存在了配置文件信息。清除之后重新执行就好了。rm -rf ~/.kuberm -rf ~/.minikuberm -rf /usr/local/bin/minikube

这样kubernetes应该就安装好了,我们可以打开dashboard看看。在k8s-for-docker-desktop目录下执行:

kubectl create -f kubernetes-dashboard.yaml开启 API Server 访问代理

kubectl proxy好了,可以访问dashboard了

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login

这里会要求你输入配置文件或者token。我这里用的token。先得生成一下~~

kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}'复制结果粘贴上去,点击登录,就可以看到页面了~~

另外一种是指定config文件:

TOKEN=$(kubectl -n kube-system describe secret default| awk '$1=="token:"{print $2}')kubectl config set-credentials docker-for-desktop --token="${TOKEN}"然后页面上选择配置文件路径: ~/.kube/config就可以了。

安装到此结束。下面进入迁移过程。

三、制作springboot服务镜像

这里只做示范,所以新建了一个最简单的工程, 名为kubedemo。就一个controller

@RestControllerpublic class Hello { @GetMapping(value = "/hello") public String hello() { return "hello world"; }}接下来打包, 然后新建一个Dockerfile:mvn clean install -Dmaven.test.skip=truemkdir dockercp target/kubedemo-0.0.1-SNAPSHOT.jar ./dockercp src/main/resources/application.properties ./dockercd docker touch DockerfileDockerfile 内容如下:

FROM anapsix/alpine-javaCOPY . /CMD java -Xmx1024m -Xms128m -jar kubedemo-0.0.1-SNAPSHOT.jar然后创建docker imagedocker image build -t skycsky/kubedemo .# 查看镜像docker images执行以下语句启动,浏览器打开http://localhost:8080/hello 试试,返回 “hello world”,正常~~

docker run -p 8080:8080 -it skycsky/kubedemo接下来把镜像推到仓库,我这里直接推到hub.docker.com,自己的项目的话最好用私有仓库。docker image push skycsky/kubedemo四、部署到kubernetes

有关kubernetes的相关概念,这里就不展开了,我们简单粗暴的直接把流程走通先~

1.新建一个kubernetes的部署配置文件,我这里取名叫deploy.yaml 内容如下:

apiVersion: extensions/v1beta1kind: Deploymentmetadata: name: kubedemo-deploymentspec: replicas: 1 template: metadata: labels: app: kubedemo spec: containers: - name: kubedemo image: skycsky/kubedemo ports: - containerPort: 8080---apiVersion: v1kind: Servicemetadata: name: kubedemo-servicespec: selector: app: kubedemo ports: - protocol: TCP port: 8080 targetPort: 8080正式发布,过程相当简单。kubectl apply -f ./deploy.yaml显示结果:

deployment.extensions/kubedemo-deployment createdservice/kubedemo-service created现在可以去dashboard上检查状态了,到处点点看看吧~·

一切顺利的话,应该状态都是正常的,然后容器日志应该已经显示服务正常启动了。

那么接下来是一个灵魂拷问~整了这么多,我怎么访问这服务?原来localhost:8080的地址访问不了了啊!

大兄弟,你很有潜力哇,都会抢答了~~

3.端口转发

就跟docker一样,服务跑在容器内,端口是需要跟本机端口做个映射的,让我们来操作一下~

先获得已经部署的容器:

kubectl get pods显示如下:

kubedemo kubectl get podsNAME READY STATUS RESTARTS AGEkubedemo-deployment-7bc687c89-nhm9h 1/1 Running 0 15m然后执行端口转发:

kubectl port-forward kubedemo-deployment-7bc687c89-nhm9h 8080:8080看到下面的显示就说明成功了:

Forwarding from 127.0.0.1:8080 -> 8080Forwarding from [::1]:8080 -> 8080好了,现在端口转发成功,我们可以再试试访问http://localhost:8080 ,又可以看到熟悉的 hello world 了~

写在最后

到此,最简单的将springboot服务部署到kubernetes的步骤就写完了,我知道,你一定在嘀咕,整了半天,你这跟docker上跑有什么区别?绕个弯放到kubernetes上好玩呢?

嗯…..你说得好像有道理,我竟无法反驳。于是我决定再看看书,研究出下一篇文章来回答。

to be continued…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值