CoreOS是一個基于Docker的輕量級容器化Linux發行版,為Docker而生,CoreOS作為Docker生态圈中的重要一員,日益得到各大雲服務商的重視,發展風頭正勁。 |
CoreOS宣稱最小化的定制版linux系統:
- Linux核心Linux運作所需存在兩個ROOT分區,一個被用作啟動分區,一個被用作更新分區更新分區在更新完成後,自動重新啟動系統,目前機器不需要從負載叢集中移除,為了保證其它應用程式不被打斷,會通過Linux cgroup限制更新過程中的磁盤、網絡等IO使用。
- systemd作為預設系統和服務管理器,其優秀特性:
支援并行化任務;
同時采用 socket 式與 D-Bus 總線式激活服務;
按需啟動守護程序(daemon);
利用 Linux 的 cgroups 監視程序;
支援快照和系統恢複;
維護挂載點和自動挂載點;
各服務間基于依賴關系進行精密控制。
- root分區被設計成隻讀root分區被設計成隻讀,用以保證資料的一緻性和更新可用
- CPU、IO等資源隔離自然要祭出容器(Container)來,CoreOS很明智使用Docker作為容器管理器用以建構、釋出應用,從這個層面來看,一個應用其實就是一個容器。
- etcd元件負責服務發現和配置共享采用Raft分布式一緻性協定算法,承擔起,元件之間服務通信使用。很自然的,容器(Container)之間應用、服務的伸縮,就顯得很簡單了。其基因層面支援叢集特性,當然,你也可以解讀為雲環境的支援。
一:準備SSH公鑰/私鑰 或 密碼
SSH公鑰/私鑰制作 :在其他linux客戶機機上執行 ssh-keygen :
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
d3:b5:fe:05:81:55:4b:6c:be:08:aa:28:7c:0d:e4:9d [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| oo.|
| o.o.|
| o +. |
| . . o . o |
| o . S o o o .|
| o E o . . o |
| . + . . .|
| o o o . . |
| o . |
+-----------------+
中間需要選擇的步驟,全部預設回車完成。然後在目前使用者的~/.ssh/下面生成了id_rsa id_rsa.pub2個檔案,将id_rsa.pub裡面的加密串貼在下一步的密鑰版 cloud-config.yaml檔案 ssh-authorized-keys 對應的值上。
密碼制作 :在其他linux客戶機機上執行 :
[root@localhost ~]# openssl passwd -1 > 1234.txt
Password: [輸入密碼]
Verifying - Password: [再次輸入密碼]
[root@localhost ~]#
[root@localhost ~]# cat 1234.txt
$1$ywWEh18N$JPwtTtm54yxmEDNegE5.Z0
将1234.txt裡面的加密串貼在下一步的 密碼版 cloud-config.yaml檔案 passwd 對應的值上。
二:準備cloud-config.yaml檔案
SSH密匙版本:
#cloud-config
hostname: myhost
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=eno16777736
[Network]
Address=192.168.31.122/24
Gateway=192.168.31.1
DNS=223.5.5.5
DNS=223.6.6.6
users:
- name: core
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8C++zc+hDTWOe5DV+WnEa5/Y+dWN1UDVKX3pBYGHbNCYObpJdYpnaHbe+3NQijt15ZAYqOh6fYJlTx8L08z/bJvmj2n+N0hgO3onB4JsH70bSAL41FPzel7BKFnDlvJ1s3GJahdVzBsrDrCwzM96ofUcImtwji0oWPT3bMApkKa8e2Ty5+WwBuxFKDq/MJVqBK4yJmBnylGzmEyyRnlVpQjsDGdbYjDtHU1ECU+H4oSE7o0cSBQntQeH0ckHMU9cnwnLO8IoHIYad4oY/u+UvLq+58kO85ltioaEmTPkWBIzSB6hP/ghHrQUN/Kf22ECgD5H9CaDDGKHrlwJUZDq1 root@kali
- groups:
- sudo
- docker
密碼版本:
#cloud-config
hostname: myhost
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=eno16777736
[Network]
Address=192.168.31.122/24
Gateway=192.168.31.1
DNS=223.5.5.5
DNS=223.6.6.6
users:
- name: core
passwd:$1$ywWEh18N$JPwtTtm54yxmEDNegE5.Z0
- groups:
- sudo
- docker
三:下載下傳及安裝
現在我們已經編寫好 “cloud-config.yaml”,可以下載下傳并安裝CoreOS了。
ISO下載下傳連結:http://stable.release.core-os.net/amd64-usr/current/coreos_production_iso_image.iso
用ISO盤啟動,會自動進入bash指令行,使用者為core。注意此時系統隻是加載到RAM而已,并未安裝。
如果想轉到root身份對目前配置、網絡等操作,sudo -i 。
下載下傳 制作好的cloud-config.yaml 檔案 :
wget http://192.168.220.137:8080/cloud-config.yaml
此刻準備工作已經完成了,如果想要安裝到sda這塊硬碟上。
[core@server ~]$ sudo coreos-install -d /dev/sda -C stable -c ./cloud-config.yaml
其中:
-d 指定目标裝置
-C 指定版本,這裡我用stable
-c 指定配置檔案,cloud-config.yaml