當前位置:
首頁 > 知識 > 在 Kubernetes 集群中運行 WordPress

在 Kubernetes 集群中運行 WordPress

在 Kubernetes 集群中運行 WordPress


在這篇文章中,我們將會從一些簡單的操作開始,了解一下 Kubernetes 平台,看看如何將一個 WordPress 網站部署在本地機器上的一個單節點集群中。 -- Gilbert Pellegrom

本文導航

  • -安裝 Kubernetes …… 12%

  • -安裝 Helm …… 32%

  • -安裝 WordPress …… 42%

  • -擴展 WordPress …… 59%

  • -高可用 …… 73%

  • -更進一步 …… 85%

編譯自: https://deliciousbrains.com/running-wordpress-kubernetes-cluster/

作者: Gilbert Pellegrom

譯者: StdioA

作為一名開發者,我會嘗試留意那些我可能不會每天使用的技術的進步。了解這些技術至關重要,因為它們可能會間接影響到我的工作。比如由 Docker 推動[1]的、近期正在興起的容器化技術,可用於上規模地託管 Web 應用。從技術層面來講,我並不是一個 DevOps,但當我每天構建 Web 應用時,多去留意這些技術如何去發展,會對我有所裨益。

這種進步的一個絕佳的例子,是近一段時間高速發展的容器編排平台。它允許你輕鬆地部署、管理容器化應用,並對它們的規模進行調整。目前看來,容器編排的流行工具有 Kubernetes (來自 Google)[2],Docker Swarm[3] 和 Apache Mesos[4]。如果你想較好的了解上面那些技術以及它們的區別,我推薦你看一下這篇文章[5]。

在這篇文章中,我們將會從一些簡單的操作開始,了解一下 Kubernetes 平台,看看如何將一個 WordPress 網站部署在本地機器上的一個單節點集群中。


安裝 Kubernetes

在 Kubernetes 文檔[6]中有一個很好的互動教程,涵蓋了很多東西。但出於本文的目的,我只會介紹在 MacOS 中 Kuberentes 的安裝和使用。

我們要做的第一件事是在你的本地主機中安裝 Kubernetes。我們將使用一個叫做 MiniKube[7] 的工具,它專門用於在你的機器上方便地設置一個用於測試的 Kubernetes 集群。

根據 Minikube 文檔,在我們開始之前,有一些先決條件。首先要保證你已經安裝了一個 Hypervisor (我將會使用 Virtualbox)。接下來,我們需要安裝 Kubernetes 命令行工具[8](也就是 kubectl)。如果你在用 Homebrew,這一步非常簡單,只需要運行命令:


$ brew install kubectl

現在我們可以真正 安裝 Minikube[9] 了:


$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.21.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

最後,我們要啟動 Minicube[10] 創建一個虛擬機,來作為我們的單節點 Kubernetes 集群。現在我要說一點:儘管我們在本文中只在本地運行它,但是在真正的伺服器[11]上運行 Kubernetes 集群時,後面提到的大多數概念都會適用。在多節點集群上,「主節點」將負責管理其它工作節點(虛擬機或物理伺服器),並且 Kubernetes 將會在集群中自動進行容器的分發和調度。


$ minikube start --vm-driver=virtualbox

安裝 Helm

現在,本機中應該有一個正在運行的(單節點)Kubernetes 集群了。我們現在可以用任何方式來與 Kubernetes 交互。如果你想現在可以體驗一下,我覺得 kubernetesbyexample.com[12] 可以很好地向你介紹 Kubernetes 的概念和術語。

雖然我們可以手動配置這些東西,但實際上我們將會使用另外的工具,來將我們的 WordPress 應用部署到 Kubernetes 集群中。Helm[13] 被稱為「Kubernetes 的包管理工具」,它可以讓你輕鬆地在你的集群中部署預構建的軟體包,也就是「圖表chart」。你可以把圖表看做一組專為特定應用(如 WordPress)而設計的容器定義和配置。首先我們在本地主機上安裝 Helm:


$ brew install kubernetes-helm

然後我們需要在集群中安裝 Helm。 幸運的是,只需要運行下面的命令就好:


$ helm init

安裝 WordPress

現在 Helm 已經在我們的集群中運行了,我們可以安裝 WordPress 圖表[14]。運行:


$ helm install --namespace wordpress --name wordpress --set serviceType=NodePort stable/wordpress

這條命令將會在容器中安裝並運行 WordPress,並在容器中運行 MariaDB 作為資料庫。它在 Kubernetes 中被稱為「Pod」。一個 Pod[15] 基本上可視為一個或多個應用程序容器和這些容器的一些共享資源(例如存儲卷,網路等)的組合的抽象。

我們需要給這個部署一個名字和一個命名空間,以將它們組織起來並便於查找。我們同樣會將 serviceType 設置為 NodePort 。這一步非常重要,因為在默認設置中,服務類型會被設置為 LoadBalancer。由於我們的集群現在沒有負載均衡器,所以我們將無法在集群外訪問我們的 WordPress 站點。

在輸出數據的最後一部分,你會注意到一些關於訪問你的 WordPress 站點的有用的命令。運行那些命令,你可以獲取到我們的 WordPress 站點的外部 IP 地址和埠:

$ export NODE_PORT=$(kubectl get --namespace wordpress -o jsonpath="{.spec.ports[0].nodePort}" services wordpress-wordpress)

$ export NODE_IP=$(kubectl get nodes --namespace wordpress -o jsonpath="{.items[0].status.addresses[0].address}")

$ echo http://$NODE_IP:$NODE_PORT/admin

你現在訪問剛剛生成的 URL(忽略 /admin 部分),就可以看到 WordPress 已經在你的 Kubernetes 集群中運行了!


擴展 WordPress

Kubernetes 等服務編排平台的一個偉大之處,在於它將應用的擴展和管理變得易如反掌。我們看一下應用的部署狀態:


$ kubectl get deployments --namespace=wordpress

在 Kubernetes 集群中運行 WordPress

kubectl get deployments

可以看到,我們有兩個部署,一個是 Mariadb 資料庫,一個是 WordPress 本身。現在,我們假設你的 WordPress 開始承載大量的流量,所以我們想將這些負載分攤在多個實例上。我們可以通過一個簡單的命令來擴展 wordpress-wordpress 部署:


$ kubectl scale --replicas 2 deployments wordpress-wordpress --namespace=wordpress

再次運行 kubectl get deployments,我們現在應該會看到下面的場景:

在 Kubernetes 集群中運行 WordPress

kubectl get deployments

你剛剛擴大了你的 WordPress 站點規模!超級簡單,對不對?現在我們有了多個 WordPress 容器,可以在它們之中對流量進行負載均衡。想了解 Kubernetes 擴展的更多信息,參見這篇指南[16]。


高可用

Kubernetes 等平台的的另一大特色在於,它不單單能進行方便的擴展,還可以通過自愈組件來提供高可用性。假設我們的一個 WordPress 部署因為某些原因失效了,那 Kubernetes 會立刻自動替換掉這個部署。我們可以通過刪除我們 WordPress 部署的一個 pod 來模擬這個過程。

首先運行命令,獲取 pod 列表:


$ kubectl get pods --namespace=wordpress

在 Kubernetes 集群中運行 WordPress

kubectl get pods

然後刪除其中一個 pod:


$ kubectl delete pod wordpress-wordpress-876183909-jqc8s --namespace=wordpress

如果你再次運行 kubectl get pods 命令,應該會看到 Kubernetes 立刻換上了新的 pod (3l167)。

在 Kubernetes 集群中運行 WordPress

kubectl get pods


更進一步

我們只是簡單了解了 Kubernetes 能完成工作的表面。如果你想深入研究,我建議你查看以下功能:

  • 平行擴展[17]

  • 自愈[18]

  • 自動更新及回滾[19]

  • 密鑰管理[20]

你在容器平台上運行過 WordPress 嗎?有沒有使用過 Kubernetes(或其它容器編排平台),有沒有什麼好的技巧?你通常會怎麼擴展你的 WordPress 站點?請在評論中告訴我們。



作者簡介:

Gilbert 喜歡構建軟體。從 jQuery 腳本到 WordPress 插件,再到完整的 SaaS 應用程序,Gilbert 一直在創造優雅的軟體。 他粗昂做的最有名的的產品,應該是 Nivo Slider.



via: https://deliciousbrains.com/running-wordpress-kubernetes-cluster/

作者:Gilbert Pellegrom[21] 譯者:StdioA 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


點擊「了解更多」可訪問文內鏈接

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

WordPress 棄用 React,並將進行重寫
減少 curl 中內存分配操作(malloc)
Stack Overflow 報告:Python 正在令人難以置信地增長!
函數式編程簡介
Headless Chrome 入門

TAG:Linux技術 |