1,709 瀏覽數

CoreOS 設定檔

Container/Docker 是輕量級的虛擬化技術,而 CoreOS 是針對 Container/Docker 基於 Linux 內核所開發出來的輕量級作業系統,他提供了 Docker 所需要的基礎功能並可在叢集環境下運作.

CoreOS 的下載點位於 https://coreos.com/os/docs/latest/booting-with-iso.html

剛剛連結提供的是 X86_64 ISO 的安裝光碟其他 ARM 版本或是直接部署的 Vmware OVF檔案都可以在這邊找到 https://stable.release.core-os.net/index.html

前面有介紹不使用設定檔來安裝 CoreOS – http://benjr.tw/95959

但絕大多是的情況下都是搭配著設定檔來安裝 CoreOS,設定檔如下:

#cloud-config
hostname: coreos1
ssh_authorized_keys:
  - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5wZYPD/mBs+9O9CrUxdg9kpOus24VrMuNncdt4BRc4iF5npV90HYe5j/y3IG6+2MRbAb2edyf/FUcaJHN/V+i123456yuqyAT2rv9T0eB2+wpmYCUQzqZscJP2uLK8jMhezKWS0l7X5CgJf+d17VooS6CADR9MyTbku3upKp5yEnsCfB+pBLGdrqCUTnGHPfJcLTBIvuMriz/kae0azxcderfbw7YWR8oKdWjKYKlznnBmH6VYFcgv/jSXbRbdZjKNSXIm2xIj6TIIJmo6sWhptcGohi467ODyrzCDioXD1MsYx6ImTMcY5mzL2RDePAW7CM4gWIMaIxDeL5e10SX ben@appledeAir

coreos:
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
    - name: systemd-networkd.service
      command: stop
    - name: 00-eth0.network
      runtime: true
      content: |
        [Match]
        Name=ens32

        [Network]
        Address=172.16.15.21/24
        Gateway=172.16.15.2
        DNS=168.95.1.1
    - name: systemd-networkd.service
      command: start
    - name: flanneld.service
      drop-ins:
       - name: 50-network-config.conf
         content: |
          [Service]
          ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{"Network":"10.1.0.0/16", "Backend": {"Type": "vxlan"}}'
      command: start
  etcd2:
    name: "node01"
    discovery: https://discovery.etcd.io/9dd875ca6dd759d67445a681adde3875
    advertise-client-urls: http://172.16.15.21:2379
    initial-advertise-peer-urls: http://172.16.15.21:2380
    listen-client-urls: http://0.0.0.0:2379
    listen-peer-urls: http://172.16.15.21:2380

上面的設定檔 ssh-rsa 與 discovery 這兩個部分你無法直接複製當作你的設定檔來使用,需要自行設定

設定檔很容易編寫錯誤,建議可以透過官方網站 https://coreos.com/validate/ 來檢查是否正確.

或是直接在 CoreOS 上面透過指令直接檢視設定檔是否有錯誤.下面的設定檔有輸入錯誤.

core@coreos1 ~ $ coreos-cloudinit -validate --from-file ~/cloud-config.yaml 
2017/01/20 15:06:56 Checking availability of "local-file"
2017/01/20 15:06:56 Fetching user-data from datasource of type "local-file"
2017/01/20 15:06:56 line 23: error: mapping values are not allowed in this context
2017/01/20 15:06:56 line 0: warning: incorrect type for "" (want struct)

更正後就檢查無誤了.

core@coreos1 ~ $ coreos-cloudinit -validate --from-file ~/cloud-config.yaml 
2017/01/20 15:08:26 Checking availability of "local-file"
2017/01/20 15:08:26 Fetching user-data from datasource of type "local-file"

CoreOS 光碟開機後就進入文字模式,直接透過指令 #coreos-install 來安裝.需要透過 -c 來指定 cloud-init config .

core@localhost ~ $ sudo coreos-install -d /dev/sda -C stable -c ~/cloud-config.yaml
2016/12/21 09:41:12 Checking availability of "local-file"
2016/12/21 09:41:12 Fetching user-data from datasource of type "local-file"
Downloading the signature for https://stable.release.core-os.net/amd64-usr/1185.3.0/coreos_production_image.bin.bz2...
2016-12-21 09:41:14 URL:https://stable.release.core-os.net/amd64-usr/1185.3.0/coreos_production_image.bin.bz2.sig [543/543] -> "/tmp/coreos-install.fmCj9mKD5k/coreos_production_image.bin.bz2.sig" [1]
Downloading, writing and verifying coreos_production_image.bin.bz2...
...
Success! CoreOS stable 1185.3.0 is installed on /dev/sda
core@localhost ~ $ sudo reboot

其他可以使用的參數:
-d ( DEVICE ) – Install CoreOS to the given device.
-V ( VERSION ) – Version to install (e.g. current)
-C ( CHANNEL ) – Release channel to use (e.g. beta)
-o ( OEM ) – OEM type to install (e.g. openstack)
-c ( CLOUD ) – Insert a cloud-init config to be executed on boot.
-i ( IGNITION ) – Insert an Ignition config to be executed on boot.
-t ( TMPDIR ) – Temporary location with enough space to download images.
-v – Super verbose, for debugging.
-b ( BASEURL ) – URL to the image mirror.

安裝完成之後的設定檔位於.

core@coreos1 ~ $ sudo cat /var/lib/coreos-install/user_data

至於這些設定檔個代表什麼意思呢!下面一一來介紹.

  1. 關於 Hostname 設定檔的使用 – http://benjr.tw/96518
  2. 關於 ssh_authorized_keys 設定檔的使用 – http://benjr.tw/96318
  3. 關於 units 設定與使用方式 – http://benjr.tw/96332
  4. 關於 Network 設定與使用方式 – http://benjr.tw/96370

CoreOS 主要的服務

  1. ETCD2 (Service Discovery)

    etcd 是一種分散式的 key/value 儲存方式 (至少要有三個 node ,會把資料複製三份到個別的 node 作儲存,以確保資料的可靠度),不同於傳統的關聯式資料庫系統 (傳統的關聯式資料庫基本上就是一堆 tables),etc2 採用的是 key / value Stores 儲存,資料就只有 key / value Stores 採用 雜湊表 (Hash table) 是根據鍵 (Key) 來查詢 (noSQL 的方式) 存儲的資料結構.

  2. Container , Docker

    Container 與 Docker 設定與使用方式 – http://benjr.tw/96566

  3. Fleet (Cluster Management)

    Container 他是輕量級的虛擬化軟體,透過資源共享的方式,可以快速建立出一個獨立空間 (虛擬環境,有自己的 file system, process 與 block I/O ,network 空間) 給另外一個作業系統來使用,透過 Docker 的基本三元素. 容器 (Container) , 映像檔 (Image) , 倉庫 (Repository) .讓我們更方便管理 Container 的環境,但是要能做到 方便大量,分散式的 部署與管理,這時候就要透過 Fleet 來協助.

    關於 fleet 設定與使用方式 – http://benjr.tw/96502

  4. Flannel

    Container 網路要對外時需要設定 port-mapping 或是將網路設定成不同的模式,這時可以使用 flannel (SDN : Software Define Network) 來讓不同的 Host (CoreOS) 的 Container 之間透過虛擬網路來溝通.

    關於 Flannel 設定與使用方式 – http://benjr.tw/96562

8 Replies to “CoreOS 設定檔”

  1. 自動參照通知: CoreOS – Flannel – Benjr.tw

  2. 自動參照通知: CoreOS – Fleet – Benjr.tw

  3. 自動參照通知: CoreOS – Docker – Benjr.tw

  4. 自動參照通知: 安裝 CoreOS – 設定 etcd2 – Benjr.tw

  5. 自動參照通知: 安裝 CoreOS – 設定 Static IP – Benjr.tw

  6. 自動參照通知: 安裝 CoreOS – 設定 unit – Benjr.tw

  7. 自動參照通知: 安裝 CoreOS – 設定 ssh_authorized_keys – Benjr.tw

  8. 自動參照通知: 安裝 CoreOS 無設定檔 – Benjr.tw

發表迴響