国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

保姆級 ARM64 CPU架構下安裝部署Docker + rancher + K8S 說明文檔

這篇具有很好參考價值的文章主要介紹了保姆級 ARM64 CPU架構下安裝部署Docker + rancher + K8S 說明文檔。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 K8S 簡介

K8S是Kubernetes的簡稱,是一個開源的容器編排平臺,用于自動部署、擴展和管理“容器化(containerized)應用程序”的系統(tǒng)。它可以跨多個主機聚集在一起,控制和自動化應用的部署與更新。

K8S 架構

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

Kubernetes 主要由以下幾個核心組件組成:

  • etcd 保存了整個集群的狀態(tài);
  • apiserver 提供了資源操作的唯一入口,并提供認證、授權、訪問控制、API 注冊和發(fā)現(xiàn)等機制;
  • controller manager 負責維護集群的狀態(tài),比如故障檢測、自動擴展、滾動更新等;
  • scheduler 負責資源的調度,按照預定的調度策略將 Pod 調度到相應的機器上;
  • kubelet 負責維護容器的生命周期,同時也負責 Volume(CSI)和網(wǎng)絡(CNI)的管理;
  • Container runtime 負責鏡像管理以及 Pod 和容器的真正運行(CRI);
  • kube-proxy 負責為 Service 提供 cluster 內部的服務發(fā)現(xiàn)和負載均衡;

除了核心組件,還有一些推薦的插件,其中有的已經(jīng)成為 CNCF 中的托管項目:

  • CoreDNS 負責為整個集群提供 DNS 服務

  • Ingress Controller 為服務提供外網(wǎng)入口

  • Prometheus 提供資源監(jiān)控

  • Dashboard 提供 GUI

  • Federation 提供跨可用區(qū)的集群

整體架構

下圖清晰表明了 Kubernetes 的架構設計以及組件之間的通信協(xié)議。

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

下面是更抽象的一個視圖:

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

Master架構

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

Node架構

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

分層架構

Kubernetes 設計理念和功能其實就是一個類似 Linux 的分層架構,如下圖所示。

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

  • 核心層:Kubernetes 最核心的功能,對外提供 API 構建高層的應用,對內提供插件式應用執(zhí)行環(huán)境
  • 應用層:部署(無狀態(tài)應用、有狀態(tài)應用、批處理任務、集群應用等)和路由(服務發(fā)現(xiàn)、DNS 解析等)、Service Mesh(部分位于應用層)
  • 管理層:系統(tǒng)度量(如基礎設施、容器和網(wǎng)絡的度量),自動化(如自動擴展、動態(tài) Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)、Service Mesh(部分位于管理層)
  • 接口層:kubectl 命令行工具、客戶端 SDK 以及集群聯(lián)邦
  • 生態(tài)系統(tǒng):在接口層之上的龐大容器集群管理調度的生態(tài)系統(tǒng),可以劃分為兩個范疇
    • Kubernetes 外部:日志、監(jiān)控、配置管理、CI/CD、Workflow、FaaS、OTS 應用、ChatOps、GitOps、SecOps 等
    • Kubernetes 內部:CRI、CNI、CSI、鏡像倉庫、Cloud Provider、集群自身的配置和管理等

2 CPU架構

ARM64和x86是指基于不同架構的處理器。

ARM64是指基于ARM架構的64位處理器,而ARM是指基于ARM架構的32位處理器。ARM架構廣泛應用于手機和移動設備領域,具有低成本、高性能、低電耗的特點。

x86則是指基于x86架構的處理器,它可以是32位或64位處理器架構,具體取決于處理器型號。x86架構廣泛應用于傳統(tǒng)的PC和服務器領域。

因為ARM64與x86是不同的CPU架構,兩者的指令集不同,因此在部署時,需要考慮具體適配的軟件安裝包。

本文將基于arm64架構的國產(chǎn)操作系統(tǒng)統(tǒng)信UOS為例,說明K8S部署流程,僅供參考。

3 環(huán)境信息

環(huán)境 版本 說明
操作系統(tǒng) UnionTech OS Server 20
CPU架構 aarch64
docker 17.09.0-ce OS/Arch: linux/arm64
K8S 1.20.11 OS/Arch: linux/arm64
rancher v2.5.16-linux-arm64 OS/Arch: linux/arm64

4 部署Docker

如果當前環(huán)境已經(jīng)部署完arm64的docker,請忽略此章節(jié)。

下面的操作,需要在規(guī)劃K8S的所有機器上執(zhí)行。

4.1 環(huán)境準備

4.1.1 磁盤掛載

如果磁盤已經(jīng)掛載,則省略該步驟。

docker推薦使用 xfs 磁盤格式。

磁盤掛載

$ mkfs.xfs -f /dev/vdb
$ mkdir /demo
$ mount /dev/vdb /demo

查看磁盤id

$ blkid 

永久掛載

$ echo "UUID=94be2fa7-93aa-47a4-b661-45963b28fbb4 /demo                xfs     defaults        0 0" >> /etc/fstab
$ mount -a

備注:這里磁盤格式化僅做參考,具體的磁盤格式化以及掛載,請自行參考其他文檔。目的就是:掛載xfs格式的磁盤到指定目錄下(比如 /demo)

4.1.2 docker 根目錄

磁盤掛載路徑為/var/lib/docker時可忽略此步

磁盤掛載路徑為其他路徑時,通過mount --bind方式掛載目錄

1 創(chuàng)建掛載目錄

$ mkdir -p /demo/data/docker

2 將/demo/data/docker映射到/var/lib/docker

$ mount  --bind /demo/data/docker /var/lib/docker

3 設置永久生效

$ echo "/demo/data/docker /var/lib/docker  none    bind        0 0" >> /etc/fstab

4 掛載

$ mount -a

4.2 下載Docker安裝包并且解壓

進入 /demo/data/ 目錄下,下載 aarch64的docker安裝包

執(zhí)行如下命令:

# wget https://download.docker.com/linux/static/stable/aarch64/docker-17.09.0-ce.tgz

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

下載完成后,在當前目錄進行解壓操作:

$ tar -zxvf docker-17.09.0-ce.tgz 

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

4.3 復制文件

在 /demo/data 目錄下執(zhí)行如下命令:

$ cp docker/* /usr/bin/

4.4 創(chuàng)建containerd的service文件

執(zhí)行如下命令:

$ touch /etc/systemd/system/docker.service
# 給予可執(zhí)行權限
$ chmod +x /etc/systemd/system/docker.service

編輯docker.service文件,添加下面的內容:

$ vim /etc/systemd/system/docker.service

內容如下:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

4.5 啟動docker

重新加載配置文件

$ systemctl daemon-reload

啟動docker

$ systemctl start docker

設置 docker 開機啟動

$ systemctl enable docker.service

5 部署K8S

5.1 關閉selinux

selinux 是一個 Linux 內核模塊,同時也是 Linux 的一個安全子系統(tǒng)。

SELinux 的主要作用是最大限度地減小系統(tǒng)中的安全風險,提高系統(tǒng)的安全性。

這個重要的安全工具由美國國家安全局開發(fā),并且已經(jīng)被集成到了主流的 Linux 2.6 及以上版本的內核中。

#臨時關閉
$ setenforce 0
#永久關閉 SELINUX=disabled
$ vim /etc/sysconfig/selinux

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

5.2 關閉swap分區(qū)

Swap分區(qū),也被稱為交換分區(qū)或虛擬內存,是Linux系統(tǒng)中用于當物理內存不足時,將部分硬盤空間虛擬成內存使用的系統(tǒng)機制。它的作用在于釋放物理內存中的一部分空間,以供當前運行的程序使用。當系統(tǒng)的物理內存不夠用的時候,將其中一些暫時不需要的數(shù)據(jù)交換到交換空間。

but 有利有弊:

在安裝Kubernetes(K8S)時,建議關閉swap分區(qū)。因為K8S的各個組件和容器都需要足夠的內存來運行,而Swap的使用可能導致性能下降,甚至是應用程序的奔潰。如果系統(tǒng)內存不足,Kubernetes會將一部分數(shù)據(jù)交換到swap分區(qū),而這可能會降低系統(tǒng)的性能,甚至導致Pod異常終止。

此外,對于一些集群,它們的swap位于機械硬盤陣列上,大量動用swap基本可以等同于死機,你甚至連root都登錄不上,不用提殺掉問題進程了。往往結局就是硬重啟。

然而,在關閉swap分區(qū)之前,需要確保系統(tǒng)的內存容量足夠滿足所有Pod的內存需求,以及不會因為關閉swap分區(qū)而導致系統(tǒng)崩潰或出現(xiàn)其他問題。因此,如果系統(tǒng)內存充足或者有額外的物理內存可供使用,建議保留swap分區(qū)。

#臨時關閉
swapoff -a
#永久關閉 注釋 swap 行
vim /etc/fstab

5.3 關閉防火墻

systemctl stop firewalld
systemctl disable firewalld

5.4 網(wǎng)絡配置 iptables

Linux橋接功能是一種虛擬交換機,它是用純軟件實現(xiàn)的,具有和物理交換機相同的功能,例如二層交換,MAC地址學習等。它是一個軟件層面的網(wǎng)絡設備,用于在Linux系統(tǒng)中創(chuàng)建和管理網(wǎng)絡橋接。

網(wǎng)橋的主要作用是將多個物理或虛擬網(wǎng)絡接口連接在一起,以創(chuàng)建一個共享相同網(wǎng)絡段的網(wǎng)絡。而將網(wǎng)絡接口連接起來的結果就是,一個網(wǎng)絡接口接收到網(wǎng)絡數(shù)據(jù)包后,會復制到其他網(wǎng)絡接口中。

此外,如果你想把虛擬機當做一臺完全獨立的計算機看待,并且允許它和其他終端一樣的進行網(wǎng)絡通信,那么橋接模式通常是虛擬機訪問網(wǎng)絡的最簡單途徑。同時,bridge技術還可以把一個linux設備上的兩塊網(wǎng)卡橋接在一起,對外表現(xiàn)為一個大的網(wǎng)卡接口,比如你有兩臺設備,但是又沒有路由器,那么把他們橋接在一起,可以共享其中一臺的網(wǎng)絡,這樣兩臺都可以上網(wǎng)。

在Kubernetes(K8S)中,打開橋接功能的主要目的是為了解決網(wǎng)絡通信問題。首先,每個Pod的網(wǎng)卡都是veth設備,veth pair的另一端連上宿主機上的網(wǎng)橋。由于網(wǎng)橋是虛擬的二層設備,同節(jié)點的Pod之間通信直接走二層轉發(fā),跨節(jié)點通信才會經(jīng)過宿主機eth0。

其次,如果需要在K8S集群內部署一個VPN,需要采用橋接VPN+靜態(tài)路由的雙重策略,才能實現(xiàn)互相都可以直接使用IP進行訪問。此外,開發(fā)人員在進行微服務開發(fā)的時候需要通過服務發(fā)現(xiàn)進行Pod級服務的直接訪問,現(xiàn)在的K8S網(wǎng)絡沒辦法做到直接訪問pod或者service的ip。這時,可以通過Bridge to Kubernetes功能將應用程序的所有出站流量路由回Kubernetes群集。

總的來說,K8S打開橋接功能主要是為了優(yōu)化網(wǎng)絡通信,提高服務發(fā)現(xiàn)的效率和靈活性,以及實現(xiàn)不同網(wǎng)絡間的無縫連接。

net.bridge.bridge-nf-call-iptables 是一個 Linux 內核參數(shù),用于控制橋接設備是否調用 iptables 進行網(wǎng)絡過濾。當設置為 1 時,表示啟用 iptables;當設置為 0 時,表示禁用 iptables。這個參數(shù)通常在 /etc/sysctl.conf 文件中進行配置。

net.bridge.bridge-nf-call-ip6tables=1 是一個 Linux 內核參數(shù),用于控制橋接設備是否調用 ip6tables 進行網(wǎng)絡過濾。當設置為 1 時,表示啟用 ip6tables;當設置為 0 時,表示禁用 ip6tables。這個參數(shù)通常在 /etc/sysctl.conf 文件中進行配置。

net.ipv4.ip_forward=1 是一個 Linux 內核參數(shù),用于控制 IPv4 數(shù)據(jù)包轉發(fā)功能是否開啟。當設置為 1 時,表示啟用 IPv4 數(shù)據(jù)包轉發(fā);當設置為 0 時,表示禁用 IPv4 數(shù)據(jù)包轉發(fā)。這個參數(shù)通常在 /etc/sysctl.conf 文件中進行配置。

m.swappiness=0 是一個 Linux 內核參數(shù),用于控制虛擬機(VM)的交換空間使用情況。當設置為 0 時,表示禁用交換空間;當設置為 100 時,表示啟用交換空間并盡可能使用它。這個參數(shù)通常在 /etc/sysctl.conf 文件中進行配置。

對iptables內部的nf-call需要打開的內生的橋接功能

$ touch /etc/sysctl.d/k8s.conf
$ vim /etc/sysctl.d/k8s.conf

修改如下內容:

net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0

修改完成后執(zhí)行:

$ modprobe br_netfilter
$ sysctl -p /etc/sysctl.d/k8s.conf

5.5 配置kubernetes源

yum源是一個在Linux下的軟件包管理器,它能夠從指定的服務器自動下載RPM包并完成安裝,同時可以自動處理軟件包之間的依賴關系。

根據(jù)存儲位置的不同,yum源可以被分為本地yum源和網(wǎng)絡yum源兩種類型。本地yum源是指yum倉庫在本地,通常是本地的鏡像文件;而網(wǎng)絡yum源則是指yum倉庫在遠程,也就是說我們需要聯(lián)網(wǎng)才能使用。

yum.repos.d 目錄是Linux系統(tǒng)中存放yum源配置文件的默認位置。在該目錄下,每個子目錄都代表一個yum源,子目錄的名稱通常以 .repo 結尾。

/etc/yum.repos.d/ 目錄下,系統(tǒng)會默認存在一些yum源配置文件,例如 CentOS 官方源、epel源等。同時,用戶也可以自己創(chuàng)建新的yum源配置文件并放置在該目錄下,以便安裝其他軟件包或更新系統(tǒng)時使用。

需要注意的是,當修改了 yum.repos.d 目錄下的任何一個配置文件后,都需要運行 yum clean all 命令清除緩存,否則新添加的軟件包可能無法被正確識別和安裝。

創(chuàng)建/etc/yum.repos.d/kubernetes.repo文件

$ touch /etc/yum.repos.d/kubernetes.repo

編輯:

$ vim /etc/yum.repos.d/kubernetes.repo

添加如下內容:

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
#清除緩存
yum clean all
#把服務器的包信息下載到本地電腦緩存起來,makecache建立一個緩存
yum makecache

5.6 安裝kubelet kubeadm kubectl

kubelet:運行在K8S cluster所有節(jié)點上,負責啟動POD和容器

kubeadm:用于初始化K8S集群

kubectl:kubectl是kubenetes命令行工具,通過kubectl可以部署和管理應用,查看各種資源,創(chuàng)建,刪除和更新組件

當不指定具體版本時,將下載當前yum源對應的最新版本

$ yum install -y kubelet kubeadm kubectl

也可以指定版本,建議指定如下版本

#安裝指定版本的kubelet,kubeadm,kubectl
$ yum install -y kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

安裝時如果出現(xiàn) 403,解決方案是多嘗試幾次。

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

安裝完成后,查看K8S版本

#查看kubelet版本
$ kubelet --version

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

查看kubeadm版本

$ kubeadm version

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

5.7 啟動kubelet并設置開機啟動服務

Systemctl是Systemd的主命令,主要用于管理系統(tǒng)和服務。Systemd是Linux系統(tǒng)最新的初始化系統(tǒng),也就是init,它的主要作用是提高系統(tǒng)的啟動速度,盡可能啟動較少的進程,并讓更多的進程并發(fā)啟動。

daemon-reload是一個systemd命令,它的主要功能是重新加載systemd的守護進程。當服務文件(service file)發(fā)生變化時,可以使用此命令來使這些變化立即生效,而無需重啟整個系統(tǒng)。

例如,如果你新安裝了一個服務,并且這個服務被systemd管理,那么為了讓新服務的配置文件生效,你需要運行systemctl daemon-reload命令。此外,如果服務的程序配置文件發(fā)生了變化,也需要重新加載以使新的配置生效。

需要注意的是,使用此命令需要管理員權限,通??梢酝ㄟ^在命令前添加sudo來獲取。例如:sudo systemctl daemon-reload。

重新加載配置文件

$ systemctl daemon-reload

啟動kubelet

$ systemctl start kubelet

查看kubelet啟動狀態(tài)

$ systemctl status kubelet

沒啟動成功,報錯先不管,后面的kubeadm init會拉起

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

設置開機自啟動

$ systemctl enable kubelet

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

查看kubelet開機啟動狀態(tài) enabled:開啟, disabled:關閉

$ systemctl is-enabled kubelet

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

查看日志

journalctl -xefu 是一個常用的命令,用于查看系統(tǒng)日志并顯示錯誤信息。

其中,各個選項的含義如下:

  • -x: 顯示系統(tǒng)啟動后的所有日志,包括正常和錯誤日志。
  • -e: 只顯示最近的錯誤日志。
  • -f: 實時刷新日志輸出,即當有新的日志產(chǎn)生時,會立即顯示在屏幕上。
  • -u: 顯示內核日志。

通過運行這個命令,可以快速定位系統(tǒng)中的問題,并了解系統(tǒng)的運行狀態(tài)。例如,如果系統(tǒng)出現(xiàn)了崩潰或異常情況,可以使用此命令來查找相關的錯誤日志,以幫助解決問題。

$ journalctl -xefu kubelet

arm64環(huán)境,到此步后,先看看 FAQ中的問題4.

5.8 初始化K8S集群Master

注意,此操作只在規(guī)劃的Master服務器上執(zhí)行

#執(zhí)行初始化命令
kubeadm init --image-repository registry.aliyuncs.com/google_containers --apiserver-advertise-address=172.31.186.36 --kubernetes-version=v1.20.11 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 

可能比較耗時,請耐心等待

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

待初始化完成后,需要按照提示,執(zhí)行如下命令:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf

這里需要注意,要將最后一個命令復制出來并且保存,用于后續(xù)添加節(jié)點使用:

kubeadm join 172.31.186.36:6443 --token t4bhv5.xlbh5rivgx7w284m \
    --discovery-token-ca-cert-hash sha256:1bf639b1ff74ac39b72448cef64597f040a89840e20fb56e2358c9b7f8359a9f

查看K8S集群節(jié)點

$ kubectl get node

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

NAME STATUS ROLES AGE VERSION
rancher-1 NotReady control-plane,master 13h v1.20.11

這里會發(fā)現(xiàn)狀態(tài)是 NotReady ,是因為沒有安裝網(wǎng)絡插件。

查看kubelet的日志

$ journalctl -xef -u kubelet -n 20

5.9 安裝flannel網(wǎng)絡插件

創(chuàng)建文件夾

$ mkdir -p /demo/package_k8s/flannel
$ cd /demo/package_k8s/flannel

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

在/demo/package_k8s/flannel目錄,下載文件

curl -O https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

因為網(wǎng)絡原因,可能比較耗時,如果下載失敗了,請耐心的多嘗試幾次。

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

kube-flannel.yml里需要下載鏡像,我這里提前先下載

$ docker pull quay.io/coreos/flannel:v0.14.0-rc1

創(chuàng)建flannel網(wǎng)絡插件

$ kubectl apply -f kube-flannel.yml

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

5.10 集群添加節(jié)點

在其他節(jié)點上執(zhí)行5.1、5.2、5.3、5.4、5.5、5.6、5.7、5.9

執(zhí)行完后,在除Master之外的節(jié)點執(zhí)行 5.8 生產(chǎn)的命令:

kubeadm join 172.31.186.36:6443 --token t4bhv5.xlbh5rivgx7w284m \
    --discovery-token-ca-cert-hash sha256:1bf639b1ff74ac39b72448cef64597f040a89840e20fb56e2358c9b7f8359a9f

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

在master節(jié)點執(zhí)行:

$ kubectl get node

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

6 部署rancher

Rancher是一個企業(yè)級容器管理平臺,可以幫助組織在生產(chǎn)環(huán)境中輕松快捷的部署和管理容器。Rancher支持多種云和本地生態(tài)系統(tǒng),提供一鍵部署、多種編排調度工具、多租戶、多種基礎架構等功能,適用于混合云、多環(huán)境、多資源池、DevOps流水等場景 。

  • 如果不需要用rancher來管理K8S集群,請忽略此章節(jié)。

  • 如果當前環(huán)境已經(jīng)部署完arm64的rancher,請忽略此章節(jié)。

部署rancher前,請保證arm64架構的docker已經(jīng)部署成功

6.1 pull 鏡像

rancher需要pull第三方鏡像,為了節(jié)省時間,我們可以提前下載好rancher相關的鏡像

這里的 docker中央倉庫地址 只是舉例,請根據(jù)實際情況填寫 dockerpull 的鏡像地址

執(zhí)行如下pull:

docker pull docker中央倉庫地址/fleet-agent:v0.3.10-security1
docker pull docker中央倉庫地址/rancher-agent:v2.5.16
docker pull docker中央倉庫地址/rancher:v2.5.16-linux-arm64
docker pull docker中央倉庫地址/hyperkube:v1.20.15-rancher2
docker pull docker中央倉庫地址/nginx-ingress-controller:nginx-1.2.1-rancher1
docker pull docker中央倉庫地址/rke-tools:v0.1.80
docker pull docker中央倉庫地址/mirrored-coreos-flannel:v0.15.1
docker pull docker中央倉庫地址/mirrored-ingress-nginx-kube-webhook-certgen:v1.1.1
docker pull docker中央倉庫地址/hyperkube:v1.20.11-rancher1
docker pull docker中央倉庫地址/mirrored-pause:3.6
docker pull docker中央倉庫地址/rke-tools:v0.1.78
docker pull docker中央倉庫地址/mirrored-metrics-server:v0.5.0
docker pull docker中央倉庫地址/nginx-ingress-controller:nginx-0.43.0-rancher3
docker pull docker中央倉庫地址/mirrored-coreos-etcd:v3.4.15-rancher1
docker pull docker中央倉庫地址/mirrored-coredns-coredns:1.8.0
docker pull docker中央倉庫地址/mirrored-cluster-proportional-autoscaler:1.8.1
docker pull docker中央倉庫地址/flannel-cni:v0.3.0-rancher6
docker pull docker中央倉庫地址/kube-api-auth:v0.1.4
docker pull docker中央倉庫地址/mirrored-pause:3.2

注意:執(zhí)行到docker pull docker中央倉庫地址/mirrored-pause:3.2時,可能需要手動按一下回車鍵。

6.2 啟動rancher

這里會先從倉庫拉取rancher的鏡像,根據(jù)網(wǎng)絡環(huán)境,可能耗時較久,請等待。

docker run -d --privileged --restart=unless-stopped -p 8080:80 -p 8445:443 \
-v /demo/data/rancher/rancher:/var/lib/rancher \
-v /demo/data/rancher/auditlog:/var/log/auditlog \
--name rancher rancher/rancher:v2.5.16-linux-arm64

稍等片刻,瀏覽器輸入:https://ip:8445/g/clusters

部署完rancher后,第一次打開頁面,需要進行免密設置

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

6.3 導入K8S集群

進入rancher頁面,點擊右上角的 “添加集群” 操作

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher


然后選擇 “導入”
aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

填寫K8S集群名稱
aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

點擊 “創(chuàng)建” 按鈕后,會出現(xiàn)三個命令行,將第一個命令行的 [USER_ACCOUNT]替換為 admin。

依次在K8S Master機器上執(zhí)行下面三個命令行。

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

執(zhí)行命令1

在K8S master機器上執(zhí)行:

$ kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user admin

執(zhí)行命令2

$ kubectl apply -f https://172.31.186.36:8445/v3/import/kkksx4xvx4rld7nzh8b2mvwc8kvjrxbsj458ngw264kst9sshbvfr7_c-xqfgn.yaml

如果執(zhí)行命令2時,x509錯誤,則可以通過將對應的yaml文件下載到服務器本地,然后執(zhí)行apply

下載yaml文件

$ wget https://172.31.186.36:8445/v3/import/6w5jzw4wtc7pg7h8cjbhcnj4ptbhgkdrrsc8ftjgkhqkvm2qc557tv_c-9g9rs.yaml --no-check-certificate

執(zhí)行安裝:

$ kubectl apply -f 6w5jzw4wtc7pg7h8cjbhcnj4ptbhgkdrrsc8ftjgkhqkvm2qc557tv_c-9g9rs.yaml

執(zhí)行命令3

執(zhí)行復制忽略證書檢查命令:

curl --insecure -sfL https://172.31.186.36:8445/v3/import/7d64lpx6gpl8mdz4tz9nzk6r2wb684fls7fs728ns2sbzvzfdw55j4_c-llx8j.yaml | kubectl apply -f -

稍等片刻,如果一切順利,則可看到如下:

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

FAQ

1 問題:節(jié)點狀態(tài)為NotReady

如果安裝了flannel網(wǎng)絡插件后,查看節(jié)點狀態(tài),仍然是 NotReady

且日志顯示 failed to find plugin “portmap” in path [/opt/cni/bin]

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

查看日志

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

解決方案:

下載 cni-plugins-linux-arm64-v1.1.1.tgz 包,然后解壓,將其中的文件copy到 /opt/cni/bin/ 目錄下即可

tar -zxvf cni-plugins-linux-arm64-v1.1.1.tgz -C /opt/cni/bin

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

2 問題:在非master節(jié)點執(zhí)行 kubectl get node

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

kubectl命令需要使用kubernetes-admin來運行,需要admin.conf文件(conf文件是通過“ kubeadmin init”命令在主節(jié)點/etc/kubernetes 中創(chuàng)建),但是從節(jié)點沒有conf文件,也沒有設置 KUBECONFIG =/root/admin.conf環(huán)境變量,所以需要復制conf文件到從節(jié)點,并設置環(huán)境變量就OK了。

其實這個問題也沒必要解決,不影響。

3 問題:rancher面板中 Controller Manager與 Scheduler不健康

如果rancher面板中 Controller Manager與 Scheduler不健康

aarch64安裝docker,架構,kubernetes,容器,ARM64,rancher

登錄到master server機器,修改如下文件:

  • /etc/kubernetes/manifests/kube-controller-manager.yaml
  • /etc/kubernetes/manifests/kube-scheduler.yaml

兩個文件中刪除 --port=0 配置項

然后重啟kubelete

$ service kubelet restart

稍等片刻,如果一切順利,Controller Manager與 Scheduler將恢復健康。

4 問題:failed to find plugin “portmap” in path [/opt/cni/bin]

如果kubelet服務異常,且日志里有如下報錯:

failed to find plugin "portmap" in path [/opt/cni/bin]

大概率是/opt/cni/bin目錄下沒有對應的 portmap 插件

解決方案:

1、下載 cni-plugins-linux-arm64-v1.1.1.tgz 插件

$ wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-arm64-v1.1.1.tgz

2、解壓 cni-plugins-linux-arm64-v1.1.1.tgz 插件,并且復制到 /opt/cni/bin/

$ tar -zxvf cni-plugins-linux-arm64-v1.1.1.tgz -C /opt/cni/bin/

/opt/cni/bin 是一個目錄路徑,通常用于存放網(wǎng)絡連接插件(CNI)的可執(zhí)行文件。CNI是容器網(wǎng)絡接口(Container Network Interface)的縮寫,它提供了一種標準化的方式來定義和實現(xiàn)容器運行時的網(wǎng)絡連接。

在Kubernetes等容器編排系統(tǒng)中,每個節(jié)點上的CNI插件負責為在該節(jié)點上運行的容器創(chuàng)建、配置和管理網(wǎng)絡連接。這些插件可以提供不同的網(wǎng)絡解決方案,例如橋接、路由、隧道等。

具體來說,/opt/cni/bin 目錄通常包含以下內容:

  • ip: IP地址管理工具,用于分配IP地址給容器。
  • bridge: 橋接網(wǎng)絡插件,用于在主機上創(chuàng)建一個虛擬網(wǎng)絡橋接,并將容器連接到該橋接上。
  • flannel: Flannel是一種覆蓋網(wǎng)絡(Overlay Network)解決方案,用于在主機之間建立虛擬網(wǎng)絡連接。
  • weave: Weave是一種基于IPv6的覆蓋網(wǎng)絡解決方案,用于在主機之間自動創(chuàng)建虛擬網(wǎng)絡連接。
  • calico: Calico是一種高性能的容器網(wǎng)絡解決方案,支持多種網(wǎng)絡模型和策略。

請注意,具體的CNI插件可能因系統(tǒng)和部署環(huán)境而異。以上列出的插件只是一些常見的示例。

附錄 K8S 運維技術點簡介

刪除POD

要刪除 Kubernetes(K8S)中的 Pod,可以使用 kubectl delete pod 命令。下面是刪除 Pod 的一般格式:

# kubectl delete pod <pod-name> [-n=<namespace>]
$ kubectl delete pod coredns-7f89b7bc75-46tlx -n kube-system

按照創(chuàng)建時間升序查看POD

要按照創(chuàng)建時間升序查看 Kubernetes(K8S)中的 Pod,可以使用 kubectl get pods --sort-by=.metadata.creationTimestamp 命令。文章來源地址http://www.zghlxwxcb.cn/news/detail-811153.html

$ kubectl get pods  -A --sort-by=.metadata.creationTimestamp

到了這里,關于保姆級 ARM64 CPU架構下安裝部署Docker + rancher + K8S 說明文檔的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 記錄MacOS M1芯片(ARM64架構)使用docker-compose方式部署Kafka

    記錄MacOS M1芯片(ARM64架構)使用docker-compose方式部署Kafka

    amd架構的鏡像非常好找,但由于博主是arm64架構的機器,所以一些開發(fā)環(huán)境非常的難找,所以在這里記錄一下arm64環(huán)境部署Kafka。 準備 docker-compose.yml 文件: 博主的虛擬機IP是192.168.153.131,注意替換你的服務器IP。 這個文件部署了zookeeper、kakfa以及kafkaUI 在docker-compose.yml目錄下,

    2024年02月15日
    瀏覽(23)
  • nanopc t6 的ubuntu22.04用docker 安裝openwrt 23.05.2,基于arm64 (aarch64)架構

    我是用nanopc t6的官方系統(tǒng),rk3588-XYZ-ubuntu-jammy-x11-desktop-arm64-YYYYMMDD.img.gz,可以從官方的百度網(wǎng)盤下載,根據(jù)官方教材刷入nanopc t6中即可。官方網(wǎng)址如下: NanoPC-T6/zh - FriendlyELEC WiKi 畢竟剛刷的系統(tǒng),先設置root密碼 默認的賬戶和密碼都是pi,我是自己添加了sudo用戶,刪除了pi用

    2024年01月17日
    瀏覽(53)
  • 使用docker部署rancher并導入k8s集群

    使用docker部署rancher并導入k8s集群

    前言:鑒于我已經(jīng)部署了k8s集群,那就在部署rancher一臺用于管理k8s,這是一臺單獨的虛擬環(huán)境,之前在k8s的master節(jié)點上進行部署并未成功,有可能端口沖突了,這個問題我并沒有深究,如果非要通過修改端口等操作部署上去后續(xù)可能帶來的問題我處理不了,也很浪費時間,所

    2024年02月09日
    瀏覽(31)
  • 手機cpu架構查看及armeabi、armeabi-v7a、arm64-v8a及x86等說明

    手機cpu架構查看及armeabi、armeabi-v7a、arm64-v8a及x86等說明

    win+R,輸入cmd 填下指令如下 adb shell getprop ro.product.cpu.abi 1.armeabiv-v7a: 第7代及以上的 ARM 處理器。2011年15月以后的生產(chǎn)的大部分Android設備都使用它. 2.arm64-v8a: 第8代、64位ARM處理器,很少設備,三星 Galaxy S6是其中之一。 3.armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。

    2024年02月07日
    瀏覽(33)
  • x86架構上構建arm64架構的docker鏡像

    x86架構上構建arm64架構的docker鏡像

    項目需要提供arm64架構上的centos7對應docker鏡像,然后本地宿主機只有x86架構機器,因此需要在x86機器上構建centos arm64架構的docker鏡像 宿主機操作系統(tǒng):centos7.7 amd64架構 docker版本:19.03.15 ARM,AMD,X86,AArch64的概念可以參考: https://blog.csdn.net/Bubbler_726/article/details/88397357 下載 qemu-

    2024年02月11日
    瀏覽(26)
  • SPEC CPU 2006 1.2 D2000 ARM64 aarch64平臺 docker 環(huán)境下的編譯 宿主機測試

    由于spec cpu 2006版本太老,現(xiàn)代操作系統(tǒng)gcc版本遠高于gcc4.3,且tools也沒有提供arm64架構程序文件,導致安裝編譯會報大量編譯錯誤,難以適配。故采用docker方式嘗試編譯。 https://download.csdn.net/download/hknaruto/86608404 驗證可用 ---------------------------------------------------------------------

    2024年02月16日
    瀏覽(22)
  • arm和x86架構服務器拉取arm64架構的docker鏡像

    arm和x86架構服務器拉取arm64架構的docker鏡像

    dockerhub提供的鏡像部分支持arm64架構 Docker arm架構服務器拉取docker鏡像,默認是arm架構? 查看docker鏡像的架構 x86平臺拉取arm平臺的docker鏡像 對docker版本有限制 docker運行其他平臺容器,需要使用--platform參數(shù)指定容器 docker19.03.9及以上版本才支持--platform參數(shù) 查看是否開啟experi

    2024年01月20日
    瀏覽(66)
  • 【Docker】MySQL 源碼構建 Docker 鏡像(基于 ARM 64 架構)

    【Docker】MySQL 源碼構建 Docker 鏡像(基于 ARM 64 架構)

    以下內容均來自個人筆記并重新梳理,如有錯誤歡迎指正!如果對您有幫助,煩請點贊、關注、轉發(fā)!歡迎掃碼關注個人公眾號! ?公眾號原文鏈接:MySQL 源碼構建 Docker 鏡像(基于 ARM 64 架構) 背景介紹 近期,筆者正推進公司 MySQL 適配 ARM 64 架構工作,由于一直使用 Docke

    2024年04月15日
    瀏覽(94)
  • 利用Docker搭建Linux ARM64架構編譯環(huán)境

    利用Docker搭建Linux ARM64架構編譯環(huán)境

    不想折騰交叉編譯環(huán)境,但是又實在忍不了A53上編譯工程的龜速,于是乎就想著是不是可以通過Docker搭一個arm linux開發(fā)環(huán)境,這樣編譯好的工程直接拷進A53中就可以運行了。說干就干,踩了一些坑,但是最終還是成功了。這里簡單記錄一下,你們能不能看懂,就看自己的造化

    2024年02月11日
    瀏覽(37)
  • 如何使用 docker pull 拉取特定架構amd64、arm64、aarch64的容器鏡像

    如何使用 docker pull 拉取特定架構amd64、arm64、aarch64的容器鏡像

    通過修改 dockerd 配置文件,并重載,可以在服務器上開啟 dockerd 的實驗屬性。為配置文件 /etc/docker/daemon.json 添加 “experimental”: true。 修改后的配置文件看起來和下面的比較像: 修改完成后,使用以下命令重置服務: 在 docker pull 時指定參數(shù),即可完成指定架構鏡像的拉取。

    2024年02月11日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包