CreateArtTechnology / Blog
  • 自动化构建流程Hello World
     5     2019-02-18 19:58:41

    背景本文使用的构建流程和工具:
    代码提交到GitHub进行版本控制Jenkins从GitHub拉取代码Jenkins调用Maven进行构建、打包Jenkins调用Docker构建镜像Jenkins将镜像推到DockerHubJenkins调用Kubectl创建Pod进行服务部署k8s在创建时从DockerHub拉取镜像,创建并运行Docker容器
    流程准备好代码并提交GitHub,Jenkins拉取代码具体过程参考以前的博文。
    Jenkins调用Maven打包Jenkins配置中,在“构建-调用顶层Maven目标”部分:
    clean
    # maven打包
    ......

  • 伪集群环境搭建Hello World
     9     2019-02-18 16:46:46

    环境说明单机环境部署,ip为192.168.248.128。不建议模仿,Master机上最好不要部署客户端节点。由于是单机环境,多机部署集群会遇到的问题这里可能没有暴露。
    操作系统:运行在VMware Workstation虚拟机上的CentOs 7 64位系统Docker引擎在Win10上支持很好,但我的机器是Win7系统,因此使用虚拟机
    构建工具说明目标是完成持续集成自动化构建。构建过程参考了网上提供的基于k8s的devops整体解决方案:
    本文使用类似的构建流程和工具:
    代码提交到GitHub进行版本控制Jenkins从GitHub拉取代码Jenkins调用Maven进行构建、打包Jenkins调用Docker构建镜像Jenkins将镜像推到DockerHubJenkins调用Kubectl创建Pod进行服务部署k8s在创建时从DockerHub拉取镜像,创建并运行Docker容器
    综上,需要准备的内容包括:
    ......


  • 使用.yaml文件创建Pod
     12     2019-02-18 12:49:49

    配置文件使用方法
    编辑配置文件 xxx.yamlkubectl create -f xxx.yaml使用get、describe 等命令检查Pod创建状态,排查异常完成!
    配置文件Hello WorldapiVersion: v1 # 版本号,例如v1
    kind: Pod # 这里是Pod
    metadata: # 元数据
    name: agent # Pod名称,这里叫agent
    ......

  • Kubernetes基本命令
     5     2019-02-18 12:38:19

    注:这里的基本命令均通过在Master节点运行kubectl完成。
    列表# 获取所有Node信息
    kubectl get nodes
    # 获取所有Pod信息
    kubectl get pods
    描述# 通用命令格式 kubectl describe {resourceType} {resourceName}
    ......

  • Kubernetes基本概念
     5     2019-02-18 12:00:43

    k8s架构
    部分基础名词首先介绍k8s中的一部分宏观概念。
    Master架构图中左下角部分,k8s管理节点,包含多种组件,提供k8s集群操作的唯一访问入口,负责资源调度等k8s逻辑部分。k8s所有控制操作相关的组件部署在此。
    Node架构图中Node部分,k8s工作节点,对应实际的宿主机,可通过组件动态增加到集群中,向master注册自己并提供自身信息以便资源调度。k8s集群操作的执行组件、容器引擎等部署在此。
    Pod架构图中Pod部分,k8s调度管理的最小单位,是容器的更高层抽象,一个Node中可以部署多个Pod。
    名词总结相较于k8s基本介绍中说的
    ......


  • Kubernetes介绍
     5     2019-02-15 18:56:38

    Kubernetes——“舵手”
    Kubernetes是什么
    Kubernetes是一个Google开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。
    简而言之,就是容器管理助手。
    Kubernetes的简称——k8s类似Internationalization取首尾字母和中间字母数简称为i18n,Kubernetes简称为k8s。
    k8s的架构
    ......


  • 使用Dockerfile构建Docker镜像
     9     2019-02-15 17:18:23

    构建前需要知道的相关知识
    DO NOT WRITE WHOLE DOCKERFILE YOURSELF UNLESS YOU KNOW WHAT YOU ARE DOING.参见文末Dockerfile中每一行命令都会产生一层,每一层内容都会保留到最终镜像需要尽量合并命令,每层只保留需要的内容,及时清理不必要的内容
    Union FS 是有最大层数限制的,比如 AUFS,曾经是最大不得超过 42 层,现在是不得超过 127 层。
    指令指令只需要知道是干什么用的即可,有可能你用不上。用到的时候再细学。FROM第一行从FROM开始,说明这个镜像以谁为基础FROM nginx 以nginx镜像为基础RUN指明使用哪个命令,执行什么内容RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html 修改nginx首页的内容尽量像这样合并多条命令,在一个命令内完成下载、编译、安装、清理:
    RUN buildDeps='gcc libc6-dev make wget' \
    && apt-get update \
    ......

  • Docker基本命令
     10     2019-02-15 15:46:43

    PS:容器终止时不会自动删除
    常用命令拉取镜像
    # docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
    # 默认仓库为Docker Hub
    # 默认标签为latest
    docker pull ubuntu:18.04
    ......

  • Docker基本概念
     9     2019-02-15 12:44:55

    Image 镜像镜像介绍
    Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
    简单来说镜像就是你打包好的运行环境。
    镜像构建和存储镜像本身包含了整个运行环境,其体积也是不小的。如果每个镜像都独立进行存储,也非常浪费资源,毕竟很多镜像都共用了很多内容,如一些基础应用等。镜像在构建时是一层一层构建的,一般最基础层是操作系统,前一层是后一层的基础,类似于一层层建高楼。因此,镜像中的很多基础层内容是可以复用从而减少冗余的。但是请注意,每一层的修改都会在该层构建后不会再发生改变。即使在后续层中被删除,也会一直保留到最后镜像构建完成。因此,如何尽量保证每一层只进行必要的修改,以及尽量保证层数尽可能少(会占用空间,层数也有上限),是构建镜像的重点,后续文章会进行说明。
    Container 容器“镜像”与“容器”的关系,就类似于“应用”与“进程”的关系,或“类”与“实例”的关系。没错,镜像就是蓝图,定义了容器的逻辑和数据;容器就是由镜像产生的运行时的实体,有生命周期如(被)创建、启动、停止、删除等。容器的实质是进程,那么容器之间显然是互相隔离的,并且容器存储层属于临时存储,容器被删除时数据也会丢失,因此持久型数据应当存储在“数据卷Volume”或绑定在宿主机目录。
    Docker Registry 仓库好说,就是存放镜像的地方。当构建完镜像后,可以将镜像保存在仓库中,供后续持续集成工具拉取,进行测试、部署等。这里推荐一个官方公开服务Docker Hub:https://hub.docker.com 或 https://cloud.docker.com
    ......


  • Docker介绍
     7     2019-02-15 12:07:16

    Docker
    Docker是什么下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
    传统虚拟化,最底层为完整操作系统
    Docker虚拟化,容器之间共享操作系统内核,更轻便
    简而言之,Docker可以理解为在通常打包服务的基础上更进一步,把运行环境也一同打包、隔离运行的轻便虚拟机。
    为什么要用DockerDocker相较于传统虚拟机的优势:
    ......

    共3张