zoukankan      html  css  js  c++  java
  • Rancher快速部署应用随意说

    上篇 docker-compose使用笔记 ,简单介绍了docker容器编排,演示了集群应用一键编排部署的过程,其中重点就是 docker-compose文件的配置,另一个重点当然也就是每个app的dockerfile的定义。

    因为容器编排过程必须依赖于每个镜像中定义好的dockerfile,以完成每个应用的容器创建过程。

    本篇将介绍一个便利的可视化容器布署工具: Rancher。首先我们要了解rancher,以及与kubernates的区别,rancher 和 Kubernetes有什么区别

    文中很重要的一句提到 “用户可以在不熟悉k8s概念的情况下轻松的通过Rancher来部署容器到k8s集群当中”,事实是否如此呢?

    关于rancher server 如果自建部署,请看 TeamCity+Rancher+Docker实现.Net Core项目DevOps(目前成本最小的DevOps实践)

    1. 创建集群

    无论你是要部署一个单点应用,还是集群应用,在rancher下面你首先都必须先创建一个集群。创建集群,可以是导入的方式,如果要部署多集群应用,这个导入功能就显得非常便捷。

    创建集群的重点是为集群创建主机,这是集群的基础,按照上几篇关于consul集群的实践,这里至少是要有3台主机,反正是要3台的,不作解释也不再做先搞两台试试以证明至少必须3台。

    通过rancher界面创建主机引导,最终rancher给我们实时生成了创建主机的命令,这句命令是必须复制后去到主机上运行的,告诉主机:你将加入某某集群中(集群URL),你将在这个集群中扮演苦工的角色,例如下面这句命令

    sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.3.2 
    --server https://x.x.x.x:4433
    --token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    --ca-checksum xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --worker、

    注意: 角色选择(每台主机可以运行多个角色。每个集群至少需要一个Etcd角色、一个Control角色、一个Worker角色),这是kubernate的硬性要求,由不得你。

    什么是etcd,controller,work,借此补补一下kubernate的基础知识吧。

    特别是etcd,无etcd不集群,用于集群监控,服务发现,大佬(leader)选举,类似consul。

    至于什么是controller,学习webapi的程序员都知道controller,没错就是webapi的controller,因为kubernate集群框架是基于api server实现与集群中各成员信息同步的。创建主机时,命令为什么有个token,那就是主机成员与集群中心的api访问令牌

     

    到这里,为什么创建一个kubernate集群,至少需要一个Etcd角色、一个Control角色、一个Worker角色。

    使用rancher是可以不熟悉kubernate,这句话一点BUG都没有,因为熟悉kubernate的也不需用用rancher。但使用ranchger,是需要了解kubernate的。

    2. 部署应用和服务

    创建完集群之后,接下来要部署应用

    一个集群有多个项目,也即命名空间,一个命名空间有多个工作负载,也即应用或服务,每个工作负载对应一个负载均衡配置

    首先创建一个工作负载

    最重要的就是选择docker镜像,一般我们会将应用的docker镜像发布云空间,例如阿里云的镜像仓库中,此处如果输入一次新的镜像链接后,以后就可以下拉选项中选中

    另一个重要的部署是设置工作部署有多少个pod,OK,我们了解一下什么是kubernate的pod, pod是一个抽像概念,最常见的就是单容器pod,如果是单容器的pod,不妨可以理解为一个容器,

    也就是这个应用将部署在多少个容器上面。

    3. 设置负载均衡量规则

    我们创建好一个应用之后,其实还只是一个空架子,现在必须设置这个应用的具体组成,首先配置应用的域名,然后是负载节点,每个负载节点其实就是一个容器,需要在此配置容器端口,这个端口是容器运行时向外暴露的监听端口。

    如果有过nginx应用部署的经历,就完全不难理解这个负载节点的配置。

    设置完负载节点之后,一个应用最其本搭建起来了。以后每次应用有更新,只需要升级即可,以此达到一键发布的目标。

    3. 关于rancher中yaml文件编辑

    反正我试过直接编辑yaml文件是没用的,可能这机制就是可视化配置生成yaml文件,所以还是乖乖的做可视化配置吧

    4. 关于负载升级操作

    如果想直接在主机里面,使用 docker -exce 这些命令去直接修改容器里面文件的配置,是没有用的。因为工作负载升级的过程是,移除pod,然后生成新的pod,也就是说每次升级docker容器都是新的,所以一时的直接修改完全会被recover。

    5. 关于安全证书

    rancher是可以为应用安装安全证书的,需要在密文中添加证书,然后在负载均衡规则配置中,为具体某个应用添加安全证书。相比直接在linux上为一个运行在docker上的应用安装证书,是非常便利的。

    6. 关于运行日志

    可以点击查看每个pod的运行日志,这个非常重要,也快捷,工作负载升级如果失败,都能在日志上看到。

    7. 容器启动命令

    容器启动是除了dockerfile设置之外,我们是可以在工作负载中自定义启动命令的,便如运行测试环境,npm run test

    总结:使用rancher之前,我觉得一些必备的条件如下:对集群部署,容器化部署的基本知识有一定的理解,有过手动通过命令行部署过简单集群的经历,对kubernate的基本框架和概念有一定的理解。

    理解了这些基础,再使用这个工具,就舒服了。   让我们一起 devpos吧!

  • 相关阅读:
    DLL注入之Appinit_Dlls
    VC下遍历文件夹中的所有文件的几种方法
    Windows下C语言的Socket编程例子(TCP和UDP)
    Windows进程间共享内存通信实例
    window下线程同步之(Mutex(互斥器) )
    如何安装win10和linux [ubuntu14]双系统
    Windows虚拟地址转物理地址(原理+源码实现,附简单小工具)
    Windows驱动中通过MDL实现用户态与核心态共享内存
    C# Label显示多行文本及换行(WinForm/WebForm)
    使用delegate实现简单的查询功能
  • 原文地址:https://www.cnblogs.com/wikiz/p/13877493.html
Copyright © 2011-2022 走看看