這是一篇我的向折騰日誌git
- 虛擬機環境:VMware Workstation 15 Pro
- Rancher OS v1.5.4
最近爲了搭建 K8s 集羣,在 PVE 虛擬化平臺基礎上創建多個虛擬機實例做爲 K8s 節點.github
具體的介紹能夠查看官網.docker
促使我使用 Rancher OS 有幾個緣由:shell
Rancher OS 能夠直接從 ISO 鏡像引導,這種模式下會使用 rancher 帳號自動登陸控制檯,可是所做的修改在重啓後丟失.bootstrap
將鏡像掛載到虛擬機的光驅,默認啓動一路到控制檯便可.ubuntu
對於不一樣的虛擬機環境, Rancher OS 提供了不一樣的預編譯二進制鏡像,注意區別.
Rancher OS 使用 cloud-init 來配置系統,例如你能夠經過 sudo ros config set rancher.docker.registry_mirror "https://xxx"
來配置 Docker 的倉庫鏡像地址. 而它的文件形式是一個 yaml 文件,這個文件也能夠被用來做爲安裝系統的配置文件.centos
首先須要準備一個模板:數組
# cloud-config # 所有配置查看官方文檔: https://rancher.com/docs/os/v1.x/en/ ssh_authorized_keys: # - ssh-rsa AAA...ZZZ example1@rancher # - ssh-rsa BBB...ZZZ example2@rancher - <SSH 公鑰內容> rancher: # SSHD Port and IP # ssh: # port: 10022 # listen_address: 172.22.100.100 # 設置主機名(特別是做爲集羣節點,主機名不能同樣. # hostname: myhost # 切換系統的控制檯,控制檯與一些持久化選項有關,具體能夠翻閱文檔,可用的控制檯有 default, alpine, centos, debian, fedora, ubuntu console: ubuntu # 設置 Docker 的倉庫鏡像地址,這裏設置了整個系統所有 Docker 都使用鏡像加速 bootstrap_docker: registry_mirror: "http://f1361db2.m.daocloud.io" docker: registry_mirror: "http://f1361db2.m.daocloud.io" system_docker: registry_mirror: "http://f1361db2.m.daocloud.io" # 配置網卡,此例子就不配置了. 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 公鑰等內容後,保存爲 cloud-init.yaml
文件並上傳至虛擬機實例.網絡
而後依次執行如下命令:ssh
sudo ros config validate -i cloud-init.yaml
這個命令只是檢查語法是否正確,它並不檢查配置項是否合法.
使用命令設置 DNS 時可使用
sudo ros config set rancher.network.dns.nameservers "['<DNS Server>']"
然而文件中並不能使用這種格式而是須要按照 yaml 的數組格式來寫,若是文件中使用"['<DNS Server>']"
這種寫法此命令卻並不會報錯;
sudo ros config merge -i cloud-init.yaml
sudo ros install -c cloud-init.yaml -d <用於安裝系統的硬盤>
擴展:值得一提的是
sudo ros install
命令支持 URL 形式傳遞cloud-init.yaml
文件,這意味着,能夠寫個簡單的 WEB 程序,用於統一分配管理集羣中節點使用的 IP 地址、統一使用堡壘機上的 SSH 公鑰或是統一配置內部 DNS 等等.例如:
sudo ros install -c http://xxx/cloud-init?type=new -d <device>
而後系統分配一個未被使用的 IP 地址並生成
cloud-init.yaml
內容用於安裝.注意:
安裝程序會前後詢問 是否繼續安裝、是否重啓,在 是否重啓 時記得將鏡像文件從虛擬機的光驅中移除,而後再重啓.
重啓後 Rancher OS 將再也不自動登陸 rancher 帳號,此時惟一能登陸系統的辦法就是使用 cloud-init.yaml
中配置的 SSH 公鑰對應的密鑰進行登陸.
ssh -i <密鑰文件> rancher@<實例地址>