Kubernetes macOS安裝

2022-04-28 11:36 更新

kubectl 版本和集群之間的差異必須在一個小版本號之內(nèi)。 例如:v1.23 版本的客戶端能與 v1.22、 v1.23 和 v1.24 版本的控制面通信。 用最新兼容版本的 kubectl 有助于避免不可預見的問題。

在 macOS 系統(tǒng)上安裝 kubectl

在 macOS 系統(tǒng)上安裝 kubectl 有如下方法:

  • 用 curl 在 macOS 系統(tǒng)上安裝 kubectl
  • 用 Homebrew 在 macOS 系統(tǒng)上安裝
  • 用 Macports 在 macOS 上安裝
  • 作為谷歌云 SDK 的一部分,在 macOS 上安裝

用 curl 在 macOS 系統(tǒng)上安裝 kubectl 

1、下載最新的發(fā)行版:

  • Intel
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
  • Apple Silicon
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"

如果需要下載某個指定的版本,用該指定版本號替換掉命令的這個部分:?$(curl -L -s https://dl.k8s.io/release/stable.txt)?。 例如:要為 Intel macOS 系統(tǒng)下載 v1.23.0 版本,則輸入:

curl -LO "https://dl.k8s.io/release/v1.23.0/bin/darwin/amd64/kubectl"

對于 Apple Silicon 版本的 macOS,輸入:

curl -LO "https://dl.k8s.io/release/v1.23.0/bin/darwin/arm64/kubectl"


2、驗證可執(zhí)行文件(可選操作)

下載 kubectl 的校驗和文件:

  • Intel
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
  • Apple Silicon
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
  • 根據(jù)校驗和文件,驗證 kubectl:
echo "$(cat kubectl.sha256)  kubectl" | shasum -a 256 --check
  • 驗證通過時,輸出如下:
kubectl: OK
  • 驗證失敗時,?shasum ?將以非零值退出,并打印如下輸出:
kubectl: FAILED
shasum: WARNING: 1 computed checksum did NOT match

下載的 kubectl 與校驗和文件版本要相同。

3、將 kubectl 置為可執(zhí)行文件:

chmod +x ./kubectl

4、將可執(zhí)行文件 kubectl 移動到系統(tǒng)可尋址路徑 ?PATH ?內(nèi)的一個位置:

sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl

確保 ?/usr/local/bin? 在你的 PATH 環(huán)境變量中。

5、測試一下,確保你安裝的是最新的版本:

kubectl version --client
  • 或者使用下面命令來查看版本的詳細信息:
kubectl version --client --output=yaml

用 Homebrew 在 macOS 系統(tǒng)上安裝

如果你是 macOS 系統(tǒng),且用的是 Homebrew 包管理工具, 則可以用 Homebrew 安裝 kubectl。

1、運行安裝命令:

brew install kubectl 
brew install kubernetes-cli

2、測試一下,確保你安裝的是最新的版本:

kubectl version --client

用 Macports 在 macOS 上安裝

如果你用的是 macOS,且用 Macports 包管理工具,則你可以用 Macports 安裝kubectl。

1、運行安裝命令:

sudo port selfupdate
sudo port install kubectl

2、測試一下,確保你安裝的是最新的版本:

kubectl version --client

驗證 kubectl 配置

為了讓 kubectl 能發(fā)現(xiàn)并訪問 Kubernetes 集群,你需要一個 kubeconfig 文件, 該文件在 kube-up.sh 創(chuàng)建集群時,或成功部署一個 Miniube 集群時,均會自動生成。 通常,kubectl 的配置信息存放于文件 ?~/.kube/config? 中。

通過獲取集群狀態(tài)的方法,檢查是否已恰當?shù)呐渲昧?nbsp;kubectl:

kubectl cluster-info

如果返回一個 URL,則意味著 kubectl 成功的訪問到了你的集群。

如果你看到如下所示的消息,則代表 kubectl 配置出了問題,或無法連接到 Kubernetes 集群。

The connection to the server <server-name:port> was refused - did you specify the right host or port?
(訪問 <server-name:port> 被拒絕 - 你指定的主機和端口是否有誤?)

例如,如果你想在自己的筆記本上(本地)運行 Kubernetes 集群,你需要先安裝一個 Minikube 這樣的工具,然后再重新運行上面的命令。

如果命令 ?kubectl cluster-info? 返回了 url,但你還不能訪問集群,那可以用以下命令來檢查配置是否妥當:

kubectl cluster-info dump

可選的 kubectl 配置和插件

啟用 shell 自動補全功能

kubectl 為 Bash、Zsh、Fish 和 PowerShell 提供自動補全功能,可以為你節(jié)省大量的輸入。

下面是為 Bash、Fish 和 Zsh 設(shè)置自動補全功能的操作步驟。

Bash

kubectl 的 Bash 補全腳本可以通過 ?kubectl completion bash? 命令生成。 在你的 shell 中導入(Sourcing)這個腳本即可啟用補全功能。

此外,kubectl 補全腳本依賴于工具 bash-completion, 所以你必須先安裝它。

Warning:
bash-completion 有兩個版本:v1 和 v2。v1 對應(yīng) Bash3.2(也是 macOS 的默認安裝版本),v2 對應(yīng) Bash 4.1+。 kubectl 的補全腳本無法適配 bash-completion v1 和 Bash 3.2。 必須為它配備 bash-completion v2 和 Bash 4.1+。 有鑒于此,為了在 macOS 上使用 kubectl 補全功能,你必須要安裝和使用 Bash 4.1+ (說明)。 后續(xù)說明假定你用的是 Bash 4.1+(也就是 Bash 4.1 或更新的版本)

升級 Bash

后續(xù)說明假定你已使用 Bash 4.1+。你可以運行以下命令檢查 Bash 版本:

echo $BASH_VERSION

如果版本太舊,可以用 Homebrew 安裝/升級:

brew install bash

重新加載 shell,并驗證所需的版本已經(jīng)生效:

echo $BASH_VERSION $SHELL

Homebrew 通常把它安裝為 ?/usr/local/bin/bash?。

安裝 bash-completion 

如前所述,本說明假定你使用的 Bash 版本為 4.1+,這意味著你要安裝 bash-completion v2 (不同于 Bash 3.2 和 bash-completion v1,kubectl 的補全功能在該場景下無法工作)。

你可以用命令 ?type _init_completion? 測試 bash-completion v2 是否已經(jīng)安裝。 如未安裝,用 Homebrew 來安裝它:

brew install bash-completion@2

如命令的輸出信息所顯示的,將如下內(nèi)容添加到文件 ?~/.bash_profile? 中:

export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"

重新加載 shell,并用命令 ?type _init_completion? 驗證 bash-completion v2 已經(jīng)恰當?shù)陌惭b。

啟用 kubectl 自動補全功能

你現(xiàn)在需要確保在所有的 shell 環(huán)境中均已導入(sourced) kubectl 的補全腳本, 有若干種方法可以實現(xiàn)這一點:

  • 在文件 ?~/.bash_profile? 中導入(Source)補全腳本:

echo 'source <(kubectl completion bash)' >>~/.bash_profile

  • 將補全腳本添加到目錄 ?/usr/local/etc/bash_completion.d? 中:

kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl

  • 如果你為 kubectl 定義了別名,則可以擴展 shell 補全來兼容該別名:

echo 'alias k=kubectl' >>~/.bash_profile
echo 'complete -F __start_kubectl k' >>~/.bash_profile

如果你是用 Homebrew 安裝的 kubectl,則kubectl 補全腳本應(yīng)該已經(jīng)安裝到目錄 ?/usr/local/etc/bash_completion.d/kubectl? 中了。這種情況下,你什么都不需要做。

用 Hommbrew 安裝的 bash-completion v2 會初始化 目錄 ?BASH_COMPLETION_COMPAT_DIR? 中的所有文件,這就是后兩種方法能正常工作的原因。

總之,重新加載 shell 之后,kubectl 補全功能將立即生效。

Fish

kubectl 通過命令 ?kubectl completion fish? 生成 Fish 自動補全腳本。 在 shell 中導入(Sourcing)該自動補全腳本,將啟動 kubectl 自動補全功能。

為了在所有的 shell 會話中實現(xiàn)此功能,請將下面內(nèi)容加入到文件 ?~/.config/fish/config.fish? 中。

kubectl completion fish | source

重新加載 shell 后,kubectl 自動補全功能將立即生效。

Zsh

kubectl 通過命令 ?kubectl completion zsh? 生成 Zsh 自動補全腳本。 在 shell 中導入(Sourcing)該自動補全腳本,將啟動 kubectl 自動補全功能。

為了在所有的 shell 會話中實現(xiàn)此功能,請將下面內(nèi)容加入到文件 ?~/.zshrc? 中。

source <(kubectl completion zsh)

如果你為 kubectl 定義了別名,kubectl 自動補全將自動使用它。

重新加載 shell 后,kubectl 自動補全功能將立即生效。

如果你收到 ?2: command not found: compdef? 這樣的錯誤提示,那請將下面內(nèi)容添加到 ?~/.zshrc? 文件的開頭:

autoload -Uz compinit
compinit

安裝 kubectl convert 插件 

一個 Kubernetes 命令行工具 kubectl 的插件,允許你將清單在不同 API 版本間轉(zhuǎn)換。 這對于將清單遷移到新的 Kubernetes 發(fā)行版上未被廢棄的 API 版本時尤其有幫助。 更多信息請訪問 遷移到非棄用 API

1、用以下命令下載最新發(fā)行版:

  • Intel

   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert"

  • Apple Silicon

   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert"

2、驗證該可執(zhí)行文件(可選步驟)

下載 kubectl-convert 校驗和文件:

  • Intel

   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert.sha256"

  • Apple Silicon

   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert.sha256"

基于校驗和,驗證 kubectl-convert 的可執(zhí)行文件:

echo "$(cat kubectl-convert.sha256)  kubectl-convert" | shasum -a 256 --check

驗證通過時,輸出為:

kubectl-convert: OK

驗證失敗時,?sha256 ?將以非零值退出,并打印輸出類似于:

kubectl-convert: FAILED
shasum: WARNING: 1 computed checksum did NOT match

下載相同版本的可執(zhí)行文件和校驗和。

3、使 kubectl-convert 二進制文件可執(zhí)行

chmod +x ./kubectl-convert

4、將 kubectl-convert 可執(zhí)行文件移動到系統(tǒng) PATH 環(huán)境變量中的一個位置。

sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert
sudo chown root: /usr/local/bin/kubectl-convert

確保你的 PATH 環(huán)境變量中存在 ?/usr/local/bin?

5、驗證插件是否安裝成功

kubectl convert --help

如果你沒有看到任何錯誤就代表插件安裝成功了。


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號