CoreOS 实战 (开篇)裸机模拟

随着Docker容器的成熟、流行,CoreOS应运而生。

 

1、CoreOS浅识

 

       个人把CoreOS定位为能提供最轻量微服务集群的操作平台,其本质是提供最小必要功能的具备容器功能的Linux操作系统。

       CoreOS不挑运行环境,各大主流云平台、虚拟机、裸机上都可以跑。也就是说它能屈能伸,可以依附流行平台, 也可以不依赖任何平台独立运作,个人更看中后一点,也就是其在裸机上的使用,认为可大幅提高单台或集群服务器的容器服务能力。对生产环境而言,亦看好其作为最终替代CentOS或Ubuntu的Docker宿主操作系统的前景。

       

       图一、官方的图例。

       上面图例。很好的说明了右边部分CoreOS集群虚拟出一套包含2个前端负载均衡及6个后端应用的系统,并涉及CoreOS最重要的组件etcd、systemd、Fleet和其上的容器。

       

       本次打算绕开在云平台上安装或通过Vagrant本地模拟,直接在VirtualBox上模拟真实服务器,用官方.iso文件像安装其他操作系统一样,这样基本和物理安装区别不大,体验更加直接。

       本次先从模拟单机安装开始,集群模拟放在下一步。

       

2、安装准备

      

      1、安装文件及硬件准备

      CoreOS的安装和其他Linux 略有区别,从官方下载的.iso文件其实只是一张LiveCD,所以为方便安装最好提供一台web服务器, 主要用于系统及配置模板下载。 

       在VirtualBox上虚拟出两台服务器,一台安装web服务器:ubuntu+nginx(安装不做介绍),另一台为x64Linux主机安装CoreOS:内存1G,双网卡(一张NAT用于联外网,一张host only 用于连接web服务器),载入官网下载.iso文件。

 

      2、准备随后CoreOS sudo用户/密码:

      

# On Debian/Ubuntu (via the package "whois")
#mkpasswd --method=SHA-512 --rounds=4096

      按官网建议在web 服务器上用mkpasswd 为特定用户生成高加密位数的密码 ,保存。

 

      我的例子:

      用户名:steven

      密码:$6$rounds=4096$YDy3GeHwf1F$NSFBqUVapiEdycONHJkFtL7flfghfFH5fU1rH1uI4acdtgKkkSIUI2Y2abTy4bzbTffXfw3SvP/fpyGpzNw3Z/ 

      3、准备CoreOS配置模板

       下面就来看核心的cloud-config.yaml 文件庐山真面目:

      

#cloud-config

hostname: coreos1

coreos:
  etcd:
    addr: $private_ipv4:4001
    peer-addr: $private_ipv4:7001
  units:
    - name: etcd.service
      command: start
    - name: fleet.service
      command: start
    - name: static.network
      content: |
        [Match]
        Name=enp0s8
        [Network]
        Address=192.168.66.9/24
        #Gateway=192.168.66.100
        #DNS=8.8.8.8
        #DNS=8.8.4.4
users:
  - name: "steven"
    passwd: "$6$rounds=4096$YDy3GeHwf1F$NSFBqUVapiEdycONHJkFtL7flfghfFH5fU1rH1uI4acdtgKkkSIUI2Y2abTy4bzbTffXfw3SvP/fpyGpzNw3Z/"

    groups:  
      - "sudo"  
      - "docker"

   这个cloud-config.yaml还是很好理解的,主要就是设置主机名、给网卡配上IP地址,添加管理用户,加入sudo和docker组。     配置模板真的是CoreOS的关键,因为它是双系统的,而且其中一个Active系统还是只读的,后面修改保存配置都很麻烦,所以如果用于生产环境,配置文件实现规划周全就尤为关键了。      准备好模板文件,放到web服务器上就绪。      4、准备系统文件(可选)           在web服务器上下载官网系统packages,放到web 根目录下。
$ wget -c http://mirrors.tomatoengine.com/coreos/stable/557.2.0/coreos_production_iso_image.iso
$ wget -c http://mirrors.tomatoengine.com/coreos/stable/557.2.0/coreos_production_image.bin.bz2
$ wget -c http://mirrors.tomatoengine.com/coreos/stable/557.2.0/coreos_production_image.bin.bz2.sig
   

3、安装实战

      

     1、用官网.iso文件启动CoreOS虚拟机:

        

         

$sudo -i

    以root 进入本地CoreOS系统。

    

#cd /etc/systemd

    进入/etc/systemd ,这个目录现在是可读写的,我把它作为后续的工作目录。

    

    2、(可选)修改IP地址。

         

#cd /etc/systemd/network
#sudo vi static.network    //添加网卡配置
[Match]
Name=enp0s3     
[Network]
Address=192.168.88.71/24
Gateway=192.168.88.1
DNS=223.5.5.5
DNS=8.8.8.8
#systemctl restart systemd-networkd  //网卡配置生效

    因为本次我已虚拟双网卡,其中enp0s3为NAT DHCP自动获得,所以不需要手工配置,也就省去了本步骤。

 

    3、安装到硬盘

      前面已经准备了另一台虚拟机,提供web服务,主要提供系统文件和初始配置文件,这是可选的,主要是方便安装,省去外网下载或手工敲击配置文件的麻烦。    

      3.1 (可选) 修改 /bin/coreos-install 文件里面 BASE_URL="http://<本地web服务器地址>/" ,免去外网下载。

      3.2 (可选) 下载配置文件:

       

#wget http://192.168.88.1/cloud-config.yaml     //我的实例,下载到/etc/systemd下。

  

    3.3 安装到硬盘

      按需修改cloud-config.yaml文件,保存。

#coreos-install -d /dev/sda -c cloud-config.yaml 

           -d /dev/sda表示安装到硬盘分区/dev/sda

            -c cloud-config.yaml 表示应用cloud-config.yaml 配置文件初始化系统参数。

            我没修改coreos-install脚本,所以安装过程会从官网下载200多M的最新稳定版系统。

 

    3.4 去除.iso文件(退出光盘) ,重启CoreOS,进入系统

 

         

$docker info

      Everything is OK!
 
4、后续

    本次已安装一台功能完备的容器主机,可以开始CoreOS之旅了,后面将通过模拟三台CoreOS主机体验集群功能。

 

 

 

 

 

猜你喜欢

转载自kass307.iteye.com/blog/2298558