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官网

  • 相关阅读:
    从csv文件里取数据作为请求参数,和把返回数据放到一个csv文件
    记一次if控制器的使用
    记一次使用正则表达式+foreach控制器调试
    获取随机数用作入参使用
    获取返回结果作为参数并将其设置为全局变量(实现跨线程组使用)
    linux默认的目录结构
    总结fiddler抓https包
    Codeforces Round #733 (Div. 1 + Div. 2) D. Secret Santa
    Codeforces Round #733 (Div. 1 + Div. 2) C. Pursuit
    Codeforces Round #731 (Div. 3) A
  • 原文地址:https://www.cnblogs.com/zzq6032010/p/14099984.html
Copyright © 2011-2022 走看看