這是一篇個人向折騰日志
- 虛擬機環(huán)境:VMware Workstation 15 Pro
- Rancher OS v1.5.4
最近為了搭建 K8s 集群,在 PVE 虛擬化平臺基礎(chǔ)上建立多個虛擬機實例作為 K8s 節(jié)點.
為什么是 Rancher OS
具體的介紹可以查看官網(wǎng).
促使我使用 Rancher OS 有幾個原因:
-
Rancher OS 僅包含運行 Docker 所需的服務(wù)
- 使用配置文件的形式安裝到硬盤,包括但不限于:網(wǎng)絡(luò)設(shè)置、Docker 配置、SSH 配置,對于作為程序猿的我來說不用到處找去哪里配置 XXX 了 :)
從 ISO 鏡像引導(dǎo)
Rancher OS 可以直接從 ISO 鏡像引導(dǎo),這種模式下會使用 rancher 賬號自動登錄控制臺,但是所作的修改在重啟后丟失.
將鏡像掛載到虛擬機的光驅(qū),默認啟動一路到控制臺即可.
對于不同的虛擬機環(huán)境,Rancher OS 提供了不同的預(yù)編譯二進制鏡像,注意區(qū)別.
安裝到硬盤
Rancher OS 使用 cloud-init 來配置系統(tǒng),例如你可以通過 sudo ros config set rancher.docker.registry_mirror "https://xxx" 來配置 Docker 的倉庫鏡像地址. 而它的文件形式是一個 yaml 文件,這個文件也可以被用來作為安裝系統(tǒng)的配置文件.
首先需要準備一個模板:
# cloud-config
# 全部配置查看官方文檔: https:///docs/os/v1.x/en/
ssh_authorized_keys:
# - ssh-rsa AAA...ZZZ example1@rancher
# - ssh-rsa BBB...ZZZ example2@rancher
- <SSH 公鑰內(nèi)容>
rancher:
# SSHD Port and IP
# ssh:
# port: 10022
# listen_address: 172.22.100.100
# 設(shè)置主機名(特別是作為集群節(jié)點,主機名不能一樣.
# hostname: myhost
# 切換系統(tǒng)的控制臺,控制臺與一些持久化選項有關(guān),具體可以翻閱文檔,可用的控制臺有 default, alpine, centos, debian, fedora, ubuntu
console: ubuntu
# 設(shè)置 Docker 的倉庫鏡像地址,這里設(shè)置了整個系統(tǒng)全部 Docker 都使用鏡像加速
bootstrap_docker:
registry_mirror: "http://f1361db2.m."
docker:
registry_mirror: "http://f1361db2.m."
system_docker:
registry_mirror: "http://f1361db2.m."
# 配置網(wǎng)卡,此例子就不配置了.
network:
# interfaces:
# eth0:
# address: 172.168.1.100/24
# gateway: 172.68.1.1
# mtu: 1500
# dhcp: false
# 配置 DNS
dns:
nameservers:
- 223.5.5.5
- 223.6.6.6
填寫好 SSH 公鑰等內(nèi)容后,保存為 cloud-init.yaml 文件并上傳至虛擬機實例.
然后依次執(zhí)行以下命令:
-
sudo ros config validate -i cloud-init.yaml
這個命令只是檢查語法是否正確,它并不檢查配置項是否合法.
使用命令設(shè)置 DNS 時可以使用
sudo ros config set rancher.network.dns.nameservers "['<DNS Server>']" 然而文件中并不能使用這種格式而是需要按照 yaml 的數(shù)組格式來寫,如果文件中使用 "['<DNS Server>']" 這種寫法此命令卻并不會報錯;
-
sudo ros config merge -i cloud-init.yaml 這個命令將配置文件的內(nèi)容合并到當(dāng)前系統(tǒng)的配置,此時才會檢查到前面說的配置項不合法的問題;
sudo ros install -c cloud-init.yaml -d <用于安裝系統(tǒng)的硬盤>
擴展:值得一提的是 sudo ros install 命令支持 URL 形式傳遞 cloud-init.yaml 文件,這意味著,可以寫個簡單的 WEB 程序,用于統(tǒng)一分配管理集群中節(jié)點使用的 IP 地址、統(tǒng)一使用堡壘機上的 SSH 公鑰或是統(tǒng)一配置內(nèi)部 DNS 等等.
例如:
sudo ros install -c http://xxx/cloud-init?type=new -d <device>
然后系統(tǒng)分配一個未被使用的 IP 地址并生成 cloud-init.yaml 內(nèi)容用于安裝.
注意:
安裝程序會先后詢問 是否繼續(xù)安裝、是否重啟,在 是否重啟 時記得將鏡像文件從虛擬機的光驅(qū)中移除,然后再重啟.
重啟后 Rancher OS 將不再自動登錄 rancher 賬號,此時唯一能登錄系統(tǒng)的辦法就是使用 cloud-init.yaml 中配置的 SSH 公鑰對應(yīng)的密鑰進行登錄.
ssh -i <密鑰文件> rancher@<實例地址>
|