三種主流的Kubernetes部署方式

【譯者的話】本文分析介紹了三種主流的Kubernetes部署方式,爲廣大Kubernetes的使用者提供了很好的參考借鑑。nginx

【燒腦式Kubernetes實戰訓練營】本次培訓理論結合實踐,主要包括:Kubernetes架構和資源調度原理、Kubernetes DNS與服務發現、基於Kubernetes和Jenkins的持續部署方案 、Kubernetes網絡部署實踐、監控、日誌、Kubernetes與雲原生應用、在CentOS中部署Kubernetes集羣、Kubernetes中的容器設計模式、開發Kubernetes原生應用步驟介紹等。docker

當您轉向雲原生開發和部署時,讓咱們來看看Kubernetes所扮演的角色,以及如何從編排中得到更豐富的功能。設計模式

容器提供了將應用程序及其依賴關係與操做系統分離的功能。經過一種有別於虛擬機鏡像打包操做系統的方式,容器能夠節省大量的系統資源:計算,內存和磁盤空間。容器下載,更新,部署和迭代的速度也更快。所以,在技術世界中,容器已經引發了微型革命,並被Google,微軟和亞馬遜等公司所採納。api

容器微型革命也帶來了激烈的競爭,競爭知足了容器編排和管理的須要。做爲Google的開源容器編排引擎,Kubernetes已經成爲領先的解決方案(包括Amazon ECSDocker Swarm等),主要緣由有三:bash

  • 雲原生設計:支持下一代應用程序的部署和運行
  • 開源的本質:快速創新,避免供應商鎖定
  • 高可移植性:不管是在雲、本地仍是虛擬機環境中均可以部署。

下圖展現了Kubernetes在您的雲原生部署中能夠扮演的角色:
網絡


Kubernetes容器編排

如您所見,Kubernetes能夠部署和管理您的容器化應用程序,包括NGINX,MySQL,Apache等。它能夠爲容器提供調度,伸縮,複製,監控和其餘功能。架構

一旦您選擇了容器編排平臺,下一步就是部署Kubernetes。如前所述,Kubernetes是一種輕量級解決方案。由於Kubernetes使用相同的鏡像和配置,它在您的筆記本電腦、雲端或本地的工做方式徹底相同。app

Kubernetes-as-a-Service

這些解決方案提供了在各類基礎設施(公有云或內部部署)中部署Kubernetes的能力。Kubernetes集羣選擇這種方式的優勢包括:工具

  1. 經過KaaS提供商進行升級、監控和獲取支持;
  2. 混合雲或多雲環境的輕鬆擴展
  3. 多個集羣的統一視圖
  4. 高度可用的多master Kubernetes集羣,根據工做負載自動擴容縮容
  5. 通用企業集成,如SSO/隔離命名空間;以及經過Helm charts部署應用程序的能力
  6. 集羣聯邦,可在多個雲或數據中心之間提供真正無縫的混合環境


Kubernetes-as-a-Service

Kubernetes-as-a-Service解決方案的示例包括Platform9StackPoint.iogoogle

託管的基礎設施

Google Cloud Platform和Microsoft Azure分別經過Google容器引擎(GKE)和Azure Container Service(ACS)提供了Kubernetes。將容器放在公共雲中能夠快速啓動,可是您的數據如今將駐留在網絡外圍和防火牆以外。

Google的GKE引領其餘公共雲供應商。Google經過名叫Borg的集羣管理工具,普遍地在內部的項目中使用容器,並擁有超過十年的經驗(來源:TheNextPlatform)。相比之下,微軟的ACS是一個更年輕的產品,而Kubernetes的支持僅在2017年2月才推出。然而,ACS提供了靈活性:用戶能夠選擇容器編排平臺(Kubernetes,Docker Swarm,DCOS),還能夠選擇除了Linux以外的Windows上部署容器化應用程序。以下圖所示,GKE和ACS徹底基於公有云,Kubernetes服務和基礎設施由託管供應商部署和管理。


託管基礎設施的Kubernetes

本地部署

Minikube是在本地部署Kubernetes的最流行的方式。它支持各類虛擬機管理程序,包括VirtualBox,VMware Fusion,KVM和xhyve以及OS,包括OSX,Windows和Linux。下圖展現了Minikube的部署:


mini Kubernetes

如上所示,用戶使用Minikube CLI和Kubectl(Kubernetes的本機CLI)與此筆記本電腦部署進行交互。Minikube CLI可用於啓動,中止,刪除,獲取狀態,並在虛擬機上執行其餘操做。一旦Minikube虛擬機啓動,Kubectl CLI會在Kubernetes集羣上執行操做。如下命令啓動現有的Minikube虛擬機並建立NGINX Kubernetes部署:

minikube start
cat > example.yaml<<EOF
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:

- name: nginx
    image: nginx
    ports:
    - containerPort: 80複製代碼

EOF
kubectl create -f example.yaml

總結

Kubernetes-as-a-service,Kubernetes託管基礎設施,Minikube只是部署Kubernetes的三種方式。有關各類部署模型,注意事項,優缺點和逐項比較的詳細分析,請參閱如下部署指南

下一步

原文連接:Deploy Kubernetes Anywhere (翻譯:付輝)

相關文章
相關標籤/搜索