設定一個多節點k8s cluster並不是一項簡單的任務,尤其是當您不熟悉Linux和網路管理的情況下。 正確的k8s安裝跨越多個實體機或VM,並且需要正確的網路設定以允許cluster中的所有容器互相通訊。
您可以在筆電、組織的基礎架構或雲端廠商提供的虛擬機(Google Compute Engine、Amazon EC2、Microsoft Azure 等)上安裝k8s 。 或者,大多數雲端廠商現在都有提供託管的k8s服務,讓您免於安裝和管理的麻煩,如下。
• Google offers GKE - Google Kubernetes Engine • Amazon has EKS - Amazon Elastic Kubernetes Service • Microsoft has AKS – Azure Kubernetes Service • IBM - IBM Cloud Kubernetes Service • Alibaba - Alibaba Cloud Container Service
安裝和管理k8s比使用k8s要困難很多,尤其是在您熟悉k8s架構和操作之前。
Docker Desktop包含一個單節點k8s cluster,您可以在設定對話框啟用k8s cluster。
假設您的電腦上已經安裝了Docker Desktop,您可以點一下右下方系統匣中的鯨魚圖示並打開“設定”對話框來啟動k8s cluster。
點一下『Kubernetes』並確保選取啟用Kubernetes選項。
k8s的Control Plane的元件將使用Docker容器運行,但在您使用docker ps
指令時,它們不會顯示在正在運行的容器列表中。要顯示它們,請選取顯示系統容器選項。
如果您想重置k8s cluster來刪除您在k8s中部署的所有物件,請按下『Reset Kubernetes Cluster』按鈕。
圖3.1 Docker Desktop for Windows 中的設定對話框
如下圖,k8s cluster的各種元件在Docker Desktop中運作的位置。
圖3.2 運行在Docker Desktop中的k8s
Docker Desktop設定了一個Linux VM來託管Docker Daemon和所有容器。 此VM還運行Kubelet → 管理節點的k8s agent。Control Plane的元件在容器中運行,您部署的所有應用程式也會是如此。
要列出正在運行的容器,您無需登入VM,因為可以在你的host主機作業系統中使用docker CLI工具來顯示正在運行的容器。
目前為止,如果您想從VM內部進行探索,Docker Desktop沒有提供登入VM的指令。 但是,您可以運行一個設定成使用VM相同命名空間的特殊容器來運行遠端shell,這幾乎就像是使用SSH登入遠端server幾乎相同。 要運行此特殊容器,請執行以下命令:
docker run --net=host --ipc=host --uts=host --pid=host --privileged --security-opt=seccomp=unconfined -it --rm -v /:/host alpine chroot /host
alpine
image建立的。--net
、--ipc
、--uts
、--pid
選項可以讓容器使用host主機的命名空間,而不是沙箱化。
--privileged
、--security-opt
選項可以讓容器無限制的進行所有系統呼叫sys-calls。-it
選項在交互模式中運行容器,--rm
選項確保容器在終止時被刪除。-v
選項將host主機的/根目錄掛載到容器的/host目錄。chroot /host
指令使/host目錄成為容器的根目錄。執行指令後,您將進入一個實際上與使用SSH進入VM相同的shell。使用此shell來探索內部VM → 嘗試利用執行ps aux
指令來列出程序或者利用ip addr
指令來查看網路介面。