Kubernetes 將節(jié)點(diǎn)上的容器運(yùn)行時(shí)從Docker Engine改為containerd

2022-06-02 09:17 更新

騰空節(jié)點(diǎn)

kubectl drain <node-to-drain> --ignore-daemonsets

將 ?<node-to-drain>? 替換為你所要騰空的節(jié)點(diǎn)的名稱

停止 Docker 守護(hù)進(jìn)程 

systemctl stop kubelet
systemctl disable docker.service --now

安裝 Containerd 

  • Linux
    1. 從官方的 Docker 倉(cāng)庫(kù)安裝 ?containerd.io? 包。關(guān)于為你所使用的 Linux 發(fā)行版來設(shè)置 Docker 倉(cāng)庫(kù),以及安裝 ?containerd.io? 包的詳細(xì)說明,可參見 開始使用 containerd。
    2. 配置 containerd:
    3. sudo mkdir -p /etc/containerd
      containerd config default | sudo tee /etc/containerd/config.toml
    4. 重啟 containerd:
    5. sudo systemctl restart containerd
  • Windows(PowerShell)
  • 啟動(dòng)一個(gè) Powershell 會(huì)話,將 ?$Version? 設(shè)置為期望的版本(例如:?$Version="1.4.3"?), 之后運(yùn)行下面的命令:

    1. 下載 containerd:
    2. curl.exe -L https://github.com/containerd/containerd/releases/download/v$Version/containerd-$Version-windows-amd64.tar.gz -o containerd-windows-amd64.tar.gz
      tar.exe xvf .\containerd-windows-amd64.tar.gz
    3. 解壓縮并執(zhí)行配置:
    4. Copy-Item -Path ".\bin\" -Destination "$Env:ProgramFiles\containerd" -Recurse -Force
      cd $Env:ProgramFiles\containerd\
      .\containerd.exe config default | Out-File config.toml -Encoding ascii
      
      # 請(qǐng)審查配置信息。取決于你的安裝環(huán)境,你可能需要調(diào)整:
      # - the sandbox_image (Kubernetes pause 鏡像)
      # - cni bin_dir 和 conf_dir 的位置
      Get-Content config.toml
      
      # (可選步驟,但強(qiáng)烈建議執(zhí)行)將 containerd 排除在 Windows Defender 掃描之外
      Add-MpPreference -ExclusionProcess "$Env:ProgramFiles\containerd\containerd.exe"
    5. 啟動(dòng) containerd:
    6. .\containerd.exe --register-service
      Start-Service containerd

配置 kubelet 使用 containerd 作為其容器運(yùn)行時(shí)

編輯文件 ?/var/lib/kubelet/kubeadm-flags.env?,將 containerd 運(yùn)行時(shí)添加到標(biāo)志中: ?--container-runtime=remote? 和 ?--container-runtime-endpoint=unix:///run/containerd/containerd.sock"?。

對(duì)于使用 kubeadm 的用戶,可以考慮下面的問題:

?kubeadm ?工具將每個(gè)主機(jī)的 CRI 套接字保存在該主機(jī)對(duì)應(yīng)的 Node 對(duì)象的注解中。 使用 ?kubeadm ?的用戶應(yīng)該知道,?kubeadm ?工具將每個(gè)主機(jī)的 CRI 套接字保存在該主機(jī)對(duì)應(yīng)的 Node 對(duì)象的注解中。 要更改這一注解信息,你可以在一臺(tái)包含 kubeadm ?/etc/kubernetes/admin.conf? 文件的機(jī)器上執(zhí)行以下命令:

kubectl edit no <node-name>

這一命令會(huì)打開一個(gè)文本編輯器,供你在其中編輯 Node 對(duì)象。 要選擇不同的文本編輯器,你可以設(shè)置 ?KUBE_EDITOR ?環(huán)境變量。

  • 更改 ?kubeadm.alpha.kubernetes.io/cri-socket? 值,將其從 ?/var/run/dockershim.sock? 改為你所選擇的 CRI 套接字路徑 (例如:?unix:///run/containerd/containerd.sock?)。
  • 注意新的 CRI 套接字路徑必須帶有 ?unix://? 前綴。

  • 保存文本編輯器中所作的修改,這會(huì)更新 Node 對(duì)象。

重啟 kubelet 

systemctl start kubelet

驗(yàn)證節(jié)點(diǎn)處于健康狀態(tài) 

運(yùn)行 ?kubectl get nodes -o wide?,containerd 會(huì)顯示為我們所更改的節(jié)點(diǎn)上的運(yùn)行時(shí)。

最后,在一切順利時(shí)刪除 Docker。

  • CentOS
  • sudo yum remove docker-ce docker-ce-cli
    
  • Debian
  • sudo apt-get purge docker-ce docker-ce-cli
    
  • Fedora
  • sudo dnf remove docker-ce docker-ce-cli
    
  • Ubuntu
  • sudo apt-get purge docker-ce docker-ce-cli
    


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)