DOCKER 學習筆記9 Kubernetes (K8s) 生產級容器編排 上
前言
在上一節的學習中。我們已經可以通過最基本的 Docker Swarm 建立叢集,然後在叢集裡面加入我們需要執行的任務 以及任務的數量 這樣我們就建立了一個服務。 當然,這樣的方式在我們本地虛擬機器的情況下,完全適用,並且對於
- 容器
- 虛擬主機
- swarm 建立節點組成叢集
有一個很好的理解作用。本節將繼續學習關於 Kubernetes (K8s)
的內容。
Kubernetes 建立在 Google 15年的生產工作負載管理經驗的基礎上,結合了來自社群的最佳理念和實踐。
Kubernetes (K8s)
Kubernetes是Google開源的一個容器編排引擎,它支援自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程式時,通常要部署該應用的多個例項以便對應用請求進行負載均衡。
節點與管理節點
在K8s 叢集包括兩種型別的資源
- 普通節點 Node 一般用於服務
- 管理節點 Master 用於管理其他節點
Master 管理節點
Master 負責管理叢集。 主伺服器協調叢集中的所有活動,例如排程應用程式、維護應用程式的期望狀態、縮放應用程式和推出新的更新。
Node 服務節點
Node 是作為 Kubernetes 叢集中的工作機器的 VM 或物理計算機。 每個節點都有一個 Kubelet,它是管理節點和與 kubernets 主節點通訊的代理。 節點還應該具有處理容器操作的工具,如 Docker
這個還是和在上一節當中學習的Swarm 虛擬機器中通過 docker swarm init xx
其實還是有類似的地方的。
服務執行過程
當您在 Kubernetes 上部署應用程式時,您告訴主控程式啟動應用程式容器。 主伺服器安排容器在叢集節點上執行。 節點使用主伺服器公開的 Kubernetes API 與主伺服器通訊。 終端使用者還可以直接使用 Kubernetes API 與叢集互動。
windows 安裝 kubectl 以及 minikube
若沒有安裝 Docker-toolbox 的同學請參考並安裝:
https://blogs.chaobei.xyz/archives/docker6
下載 kubectl
Kubernetes 命令列工具 kubectl 允許您針對 Kubernetes 叢集執行命令。 您可以使用 kubectl 部署應用程式、檢查和管理叢集資源以及檢視日誌。
https://storage.googleapis.com/kubernetes-release/release/v1.17.0/bin/windows/amd64/kubectl.exe
修改名稱為 kubectl.exe
複製到和docker-toolbox 一樣的目錄下,方便執行
$ kubectl.exe version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:20:10Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"windows/amd64"}
下載 minikube
https://github.com/kubernetes/minikube/releases/
選擇合適的版本後,下載,並且修改名稱為 minikube.exe
放到與上面一樣的位置下。
$ minikube.exe version minikube version: v1.7.2
commit: 50d543b5fcb0e1c0d7c27b1398a9a9790df09dfb
使用 minikube 建立叢集
minikube start --image-repository=registry.aliyuncs.com/google_containers --registry-mirror=https://fime0zji.mirror.aliyuncs.com --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.7.0.iso
--image-repository
指定使用國內的映象倉庫--registry-mirror
將指定的地址傳遞給虛擬機器docker 作為拉取映象的地址--iso-url
指定minikubo 映象的地址。
因為國內防火牆的限制,所以需要將發部分指定為國內地址才可以正常進行。
$ minikube start --image-repository=registry.aliyuncs.com/google_containers --registry-mirror=https://fime0zji.mirror.aliyuncs.com
* Microsoft Windows 10 Pro 10.0.18363 Build 18363 上的 minikube v1.7.2
* Automatically selected the virtualbox driver
* 正在使用映象儲存庫 registry.aliyuncs.com/google_containers
* 正在建立 virtualbox 虛擬機器(CPUs=2,Memory=2000MB, Disk=20000MB)...
* 找到的網路選項:
- NO_PROXY=192.168.99.100,192.168.99.102,192.168.99.103
- no_proxy=192.168.99.100,192.168.99.102,192.168.99.103
* 正在 Docker 19.03.5 中準備 Kubernetes v1.17.2…
- env NO_PROXY=192.168.99.100,192.168.99.102,192.168.99.103
- env NO_PROXY=192.168.99.100,192.168.99.102,192.168.99.103
* 正在啟動 Kubernetes ...
* Enabling addons: default-storageclass, storage-provisioner
* 等待叢集上線...
* 完成!kubectl 已經配置至 "minikube"
官網線上測試環境 https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/
可能遇到的問題
* 正在下載 kubectl v1.17.2
* 正在下載 kubeadm v1.17.2
* 正在下載 kubelet v1.17.2
它可能一直在下載,真的是一直在下,我第一次使用的時候,我足足等了一個小時,現在想起來真的是 MMP