1. 程式人生 > >DOCKER 學習筆記9 Kubernetes (K8s) 生產級容器編排 上

DOCKER 學習筆記9 Kubernetes (K8s) 生產級容器編排 上

前言

在上一節的學習中。我們已經可以通過最基本的 Docker Swarm 建立叢集,然後在叢集裡面加入我們需要執行的任務 以及任務的數量 這樣我們就建立了一個服務。 當然,這樣的方式在我們本地虛擬機器的情況下,完全適用,並且對於

  • 容器
  • 虛擬主機
  • swarm 建立節點組成叢集

有一個很好的理解作用。本節將繼續學習關於 Kubernetes (K8s) 的內容。

Kubernetes 建立在 Google 15年的生產工作負載管理經驗的基礎上,結合了來自社群的最佳理念和實踐。

Kubernetes (K8s)

Kubernetes是Google開源的一個容器編排引擎,它支援自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程式時,通常要部署該應用的多個例項以便對應用請求進行負載均衡。

在Kubernetes中,我們可以建立多個容器,每個容器裡面執行一個應用例項,然後通過內建的負載均衡策略,實現對這一組應用例項的管理、發現、訪問,而這些細節都不需要運維人員去進行復雜的手工配置和處理。

節點與管理節點

在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