輕松上手 | 使用國內(nèi)資源安裝 K3s 全攻略
作者:
王海龍,SUSE Rancher 中國社區(qū)技術(shù)經(jīng)理,Linux Foundation APAC Evangelist,負責(zé) Rancher 中國技術(shù)社區(qū)的維護和運營。擁有 8 年的云計算領(lǐng)域經(jīng)驗,經(jīng)歷了 OpenStack 到 Kubernetes 的技術(shù)變革,無論底層操作系統(tǒng) Linux,還是虛擬化 KVM 或是 Docker 容器技術(shù)都有豐富的運維和實踐經(jīng)驗。
近期,經(jīng)常有小伙伴在 K3s 社區(qū)中咨詢關(guān)于使用國內(nèi)資源安裝 K3s 的問題,本文將對此進行詳細介紹。
以下是使用官方安裝腳本的執(zhí)行過程:
# curl -sfL https://get.k3s.io | sh -[INFO] Finding release for channel stable[INFO] Using v1.25.3+k3s1 as release[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.25.3+k3s1/sha256sum-amd64.txt[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.25.3+k3s1/k3s[INFO] Verifying binary download......[INFO] systemd: Starting k3s
如果從國內(nèi)環(huán)境安裝 K3s 可能會遇到安裝速度特別緩慢或者 time out 的情況,從以上的安裝過程可以分析出以下幾個原因:
-
K3s 的安裝腳本 (https://get.k3s.io) 存儲在國外的服務(wù)器,從國內(nèi)環(huán)境訪問可能出現(xiàn)無法訪問的情況。
-
K3s 默認安裝 stable 版本,stable 對應(yīng)的具體 K3s 版本是通過 https://update.k3s.io/v1-release/channels 解析來的,而這個地址也是運行在一個國外的服務(wù)器上。
-
當通過 channel 解析出對應(yīng) K3s 的版本為:v1.25.3+k3s1,此時需要到 github 上拉取對應(yīng)的 K3s 二進制文件。雖然這個二進制文件才幾十兆,但國內(nèi)環(huán)境訪問 github 經(jīng)常會出現(xiàn)無法訪問的情況。
# kubectl get pods -ANAMESPACE NAME READY STATUS RESTARTS AGEkube-system helm-install-traefik-crd-7k9rw 0/1 ContainerCreating 0 10mkube-system helm-install-traefik-8q69g 0/1 ContainerCreating 0 10mkube-system coredns-75fc8f8fff-hlx2w 0/1 ContainerCreating 0 10mkube-system metrics-server-5c8978b444-xz6vx 0/1 ContainerCreating 0 10mkube-system local-path-provisioner-5b5579c644-8g2kn 0/1 ImagePullBackOff 0 10m
以上,就是在國內(nèi)環(huán)境使用 K3s 的一些痛點。
為了解決以上問題,K3s 社區(qū)已經(jīng)將所需的 K3s 資源都同步到了國內(nèi)的服務(wù)器上,這樣我們就可以使用這些國內(nèi)資源在國內(nèi)環(huán)境上安裝 K3s,不但提升了安裝速度也提升了安裝的穩(wěn)定性。
該站點由 K3s 社區(qū)維護,同步資源到國內(nèi)服務(wù)器有可能出現(xiàn)延后或遺漏情況,如發(fā)現(xiàn)延后或遺漏情況歡迎反饋到中文論壇(https://forums.rancher.cn)。
K3s 社區(qū)都同步了哪些資源到國內(nèi)?
-
K3s 安裝腳本
-
Channel 解析文件
-
K3s 的二進制文件
-
K3s 依賴系統(tǒng)鏡像
接下來,再來看下應(yīng)該如何運用國內(nèi)的資源安裝 K3s:
# curl –sfL \https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | \INSTALL_K3S_MIRROR=cn sh -s - \--system-default-registry "registry.cn-hangzhou.aliyuncs.com"
[INFO] Finding release for channel stable[INFO] Using v1.25.3+k3s1 as release[INFO] Downloading hash rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/v1.25.3-k3s1/sha256sum-amd64.txt[INFO] Downloading binary rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/v1.25.3-k3s1/k3s[INFO] Verifying binary download......[INFO] systemd: Starting k3s
確認系統(tǒng)鏡像是否從阿里云鏡像倉庫拉?。?/span>
# kubectl get pods -n kube-systemNAME READY STATUS RESTARTS AGEcoredns-7c855cf8c6-x6d77 1/1 Running 0 7m55s
# kubectl describe pods coredns-7c855cf8c6-x6d77 -n kube-systemEvents:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 7m44s default-scheduler Successfully assigned kube-system/coredns-7c855cf8c6-x6d77 to k3s3Normal Pulling 7m40s kubelet Pulling image "registry.cn-hangzhou.aliyuncs.com/rancher/mirrored-coredns-coredns:1.9.1"Normal Pulled 7m6s kubelet Successfully pulled image "registry.cn-hangzhou.aliyuncs.com/rancher/mirrored-coredns-coredns:1.9.1" in 34.050826086sNormal Created 7m6s kubelet Created container corednsNormal Started 7m6s kubelet Started container coredns
首先,安裝 K3s 使用的是存儲在阿里云對象存儲上的 K3s 安裝腳本,并且使用存儲在國內(nèi) channel 去解析對應(yīng)的 K3s 版本。
其次,通過
INSTALL_K3S_MIRROR=cn 環(huán)境變量來指定 K3s 的二進制文件從國內(nèi)的阿里云對象存儲上去拉取。 最后,通過
--system-default-registry 參數(shù)來指定 K3s 的系統(tǒng)鏡像從國內(nèi)的阿里云鏡像倉庫(registry.cn-hangzhou.aliyuncs.com) 去拉取。如果你的帶寬充足,一分鐘之內(nèi)即可完成 K3s 的安裝和系統(tǒng)服務(wù)的啟動。
以上這些步驟只是為了加速 K3s 的安裝和啟動。啟動 K3s 后你可能會在 K3s 上部署自己的業(yè)務(wù)(例如 nginx),而這些鏡像默認也是從 DockerHub 拉取。如果使用 docker 容器運行時,你可能會在 docker 上配置 mirror 來加速鏡像的拉取。
K3s 默認使用的 containerd 容器運行時。而且,可以通過 K3s 的參數(shù)來設(shè)置 containerd 的 mirror,設(shè)置方式如下:
cat >> /etc/rancher/k3s/registries.yaml <<EOFmirrors: "docker.io": endpoint: - "https://docker.mirrors.ustc.edu.cn" # 可根據(jù)需求替換 mirror 站點 - "https://registry-1.docker.io"EOFsystemctl restart k3s
經(jīng)過以上配置后,通過 K3s 拉取的鏡像如果在配置的 mirror 站點中存在,那么將會從該站點拉取鏡像。如果不存在,將會從默認的 docker.io 中拉取鏡像。
如果你想確認 containerd 的 mirror 是否生效,你可以使用 crictl info 檢查:
# crictl info"registry": {"configPath": "","mirrors": {"docker.io": {"endpoint": ["https://docker.mirrors.ustc.edu.cn","https://registry-1.docker.io"],"rewrite": null}},
從 Rancher v2.6 開始,支持從 Rancher Manager 創(chuàng)建 K3s 集群。通過 Rancher Manager 創(chuàng)建 K3s 集群和默認的 K3s 集群安裝有所不同,前者創(chuàng)建集群主要依賴一些鏡像完成,這些鏡像默認是從 DockerHub 拉取。
同樣,可以在 Rancher Manager 修改創(chuàng)建 K3s 集群的參數(shù)來完成使用國內(nèi)資源安裝 K3s 集群。只需要在創(chuàng)建 K3s 集群時導(dǎo)航到 Registries ,選擇 Pull images for Rancher from a private registry 并設(shè)置 Registry hostname for Rancher images 的值為阿里云鏡像倉庫的地址 "registry.cn-hangzhou.aliyuncs.com" 即可,如下圖:

通過以上方式安裝 K3s 基本能滿足國內(nèi)環(huán)境使用 K3s 的各種需求,而且安裝和啟動速度也更快。
如果使用以上方式安裝 K3s 出現(xiàn)問題或疑問,或者有其他需求,歡迎大家通過中文論壇(https://forums.rancher.cn/)進行反饋。
About k3s
k3s 是首個進入 CNCF 沙箱項目的 K8S 發(fā)行版,同時也是當前全球用戶量最大的 CNCF 認證輕量級 K8S 發(fā)行版。自2019年3月發(fā)布以來,備受全球開發(fā)者們關(guān)注,至今GitHub Star數(shù)已超過 17,000,成為了開源社區(qū)最受歡迎的邊緣計算 K8S 解決方案。截至目前,K3s全球下載量超過100萬次,每周平均被安裝超過2萬次,其中30%的下載量來自中國。
k3s 專為在資源有限的環(huán)境中運行 Kubernetes 的研發(fā)和運維人員設(shè)計,將滿足日益增長的在邊緣計算環(huán)境中運行在 x86、ARM64 和 ARMv7 處理器上的小型、易于管理的 Kubernetes 集群需求。k3s 的發(fā)布,為開發(fā)者們提供了以“Rancher 2.X + k3s”為核心的從數(shù)據(jù)中心到云到邊到端的 K8S 即服務(wù)(Kubernetes-as-a-Service),推動 Kubernetes Everywhere。
掃碼添加k3s中文社區(qū)助手
加入官方中文技術(shù)社區(qū)
官網(wǎng):https://k3s.io

