zoukankan      html  css  js  c++  java
  • 傲视Kubernetes(二):Docker镜像搭建与本地Kubernetes环境搭建

    主要内容:

    1、Docker与Kubernetes的关系

    2、SpringBoot微服务的Docker镜像创建

    3、Kubernetes本地环境搭建

    一、Docker与Kubernetes的关系

    在说明Docker与Kubernetes的关系之前,要先同步一下Docker定义--Docker是什么?Docker是一个打包、分发和运行应用程序的平台。它是一种容器化技术,可以使它创建的容器运行在不同的机器、不同的操作系统上(此处可以类比Java的跨平台特性)。不过docker是依赖于linux内核的,所以如果在windows系统上运行,实际是运行于windows上的虚拟linux环境中。

    一个Docker运行时容器就是一个进程。Docker与虚拟机的区别,很大一点在于容器没有自己的操作系统内核,它依赖于宿主机的操作系统,更轻量级;而虚拟机有自己的操作系统内核,相对更自由,但更重量级。

    二、SpringBoot微服务的Docker镜像搭建

    由于SpringBoot自带tomcat,所以找一个JDK镜像就够了。此处博主用的基础镜像是 williamyeh/java8:latest。

    1、简易项目构建:

     bootstrap.yml文件内容(指定服务端口):

    1 server:
    2   port: 8001

    Dockerfile文件内容(在pom中指定了打包文件名jugg):

    1 FROM williamyeh/java8:latest
    2 EXPOSE 8001
    3 
    4 ADD jugg.jar /jugg.jar
    5 ENTRYPOINT ["java","-jar","/jugg.jar","--server.port=8001"]

    2、构建镜像

    先将jar包和Dockerfile文件上传到服务器的同一个目录上去:

    然后执行指令创建镜像(镜像名jugg):

    1 docker build -t jugg .

     

     成功后执行下 docker images,可以看到我们刚创建的镜像:

     再执行run让镜像运行起来 

    1 docker run --name juggcontainer -p 8001:8001 -d jugg

    name后面是指定容器名,-p后面指定端口。注意Dockerfile文件中EXPOSE暴露的端口并没有实际效果,执行run命令时指定的端口才是最终使用的端口。

     浏览器访问下服务,完美!(注意检查服务器的端口是否能被访问到)

     

    三、Kubernetes本地环境搭建

    1、minikube的安装与启动

     Kubernetes本地环境搭建一般都是用minikube,这玩意的版本和环境关系很大,稍不注意安装的时候就会有各种意外。minikube安装时有两种下载地址,一个是国内阿里云的,一个是国外谷歌的地址。阿里的好处就是网络稳定,基本都会下载成功。而用谷歌的地址,很不稳定。但是呢,博主用阿里云的下载启动时,遇到了各种各样的问题(博主的云主机是单核CPU,有的报错就跟此相关,如果是双核CPU,估计安装与启动会顺利得多),一怒之下又改用谷歌的minikube地址,虽然网络波动较大,但多试了几次,最后顺利启动成功。

    首先执行命令下载minikube(若无下载进度,则ctrl+C终止后重新执行命令,反复几次,总会有成功的时候):

    1 curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.23.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin

    然后执行启动指令,如下。博主的云主机上未安装虚拟驱动,所以直接指定为none,但还得指定下cpu核数以及忽略掉核数不匹配的错误,否则会终止启动流程:

    1 minikube start  --vm-driver=none --extra-config=kubeadm.ignore-preflight-errors=NumCPU --cpus 1

    博主前两次执行都报错获取不到版本:

     直到执行第三次才成功启动:

    注意每次因为版本问题导致start失败之后,最好清空一下minikube的记录,重新下载,清空minikube记录的指令:

    minikube delete && rm -rf ~/.minikube && rm -rf ~/.kube

    2、kubectl的安装

    kubectl是kubenetes的客户端,有了它我们才能通过命令行与kubernetes集群进行交互。这个的安装就简单多了,执行指令:

    curl -LO https://storage.googleapis.com/kubenetes-releases/release/v1.19.4/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/

    如果多执行几次也下载不下来,你又没啥办法的话,可以点击这个链接下载:https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/linux/amd64/kubectl

    下载下来之后手动往usr/local/bin目录传上去,再执行上面指令中的  chmod +x kubectl 命令即可。

    安装好之后,打个kubectl指令检验一下效果:

     完美!

    参考文献:

    1、《Kubernetes in Action》  ...Marko Luksa

    2、Kubenetes官网,minikube官网

  • 相关阅读:
    zbb20181207 springboot @ConfigurationProperties使用
    zbb20181206 logback,lombok 默认日志logback配置解析
    Spring Boot (8) 全局异常处理
    Spring Boot (7) JdbcTemplate访问数据库
    Spring Boot (6) Spring Data JPA
    Spring Boot (4) 静态页面和Thymeleaf模板
    Spring Boot (3) 热部署devtools
    Spring Boot (2) Restful风格接口
    Spring Boot (1) 构建第一个Spring Boot工程
    idea使用maven搭建ssm框架实现登陆商品增删改查
  • 原文地址:https://www.cnblogs.com/zzq6032010/p/14099984.html
Copyright © 2011-2022 走看看