華為鯤鵬伺服器安裝 k3s+rancher

  • 2020 年 4 月 23 日
  • 筆記

華為鯤鵬伺服器安裝 k3s+rancher

華為鯤鵬伺服器

華為鯤鵬伺服器採用華為自研cpu ARMv8架構,提供 Windows 和多個Linux 系統,作為伺服器使用我一直使用Centos系統(不會真有人用Ubuntu做生產環境吧?不會吧?不會吧?)。
本次使用 CentOS 7.6 64bit with ARM
為什麼不用 CentOS 8.0 ? 看我之前的文章吧

安裝docker

使用阿里雲的倉庫安裝或者直接使用腳本安裝

# 更新yum
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget //mirrors.aliyun.com/repo/Centos-altarch-7.repo -O /etc/yum.repos.d/CentOS-Base.repo

# 安裝docker
curl -fsSL //get.docker.com | bash -s docker --mirror Aliyun

sudo systemctl start docker
sudo systemctl enable docker

注意阿里雲倉庫地址中的 Centos-altarch-7這個是arm64的倉庫
//get.docker.com 腳本可能無法下載
可以替換為//get.daocloud.io/docker

配置鏡像加速器

可以使用阿里雲,華為雲和daocloud
使用方法都一樣改registry-mirrors為對應的加速地址

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["//f1361db2.m.daocloud.io"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

改一個配置

k3s check-config 顯示 user_namespace 未啟用

grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"

重啟之後生效

安裝k3s腳本

export K3S_NODE_NAME=iot001
export INSTALL_K3S_EXEC="--docker --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
curl -sfL //docs.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

K3S_NODE_NAME這個最好自己指定使用系統名會產生各種不兼容比如:中劃線

安裝nfs客戶端

#所有node節點安裝nfs客戶端
yum -y install nfs-utils
systemctl start nfs && systemctl enable nfs

安裝rancher

#rancher
docker run -d -v /data/docker/rancher-server/var/lib/rancher/:/var/lib/rancher/ --restart=unless-stopped --name rancher-server -p 9443:443 rancher/rancher:v2.4.2-linux-arm64

echo //$(curl //ip.cip.cc/):9443

rancher 導入 k3s

見我之前的文章

產生的問題

  • docker、k3s和rancher都支援arm64上運行,但是rancher提供的監控以及應用商店裡面的鏡像大部分不支援arm64運行
  • 應用程式使用upx壓縮之後在arm64平台無法運行,docker內也無法運行。可以使用在2020-01-23日更新的3.96版本upx進行壓縮(快兩年終於更新了)
  • 不兼容問題:代表作redis ,redis鏡像雖然支援arm64但是CentOS分頁大小64kb,主流Linux分頁4kb,然後啟動的時候崩了(CentOS倒了嗚嗚嗚)。
    解決辦法:在鯤鵬CentOS系統拉取Redis倉庫重新構建鏡像(選香港機器構建具體原因大家懂得,如果需要編譯好的鏡像可以私信我)

總結

  • 鯤鵬伺服器使用自研arm64 cpu 堪稱國產之光,然而現在x86市場佔據主流的情況下應用程式有arm64版本的太少了。如果是想遷移到鯤鵬伺服器進行生產任務一定要看清楚所依賴的軟體是不是有arm64版本的
  • 現階段不推薦使用k3s+rancher的方式在鯤鵬伺服器進行業務部署,但是可以單獨使用k3s+自定義配置文件方式進行業務部署。推薦等後續rancher對arm架構更好的優化,應用市場arm架構鏡像達到一定數量的時候再使用
  • golang大法好