国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用 Kubernetes 來部署你的 Laravel 程序

JowayYoung / 752人閱讀

摘要:有些人將其稱為容器編排平臺,而并非唯一的此類平臺。但是在中,您可以快速擴(kuò)展出多個實例你看看使用擴(kuò)展你的網(wǎng)站是何其便捷。當(dāng)你指向群集的地址和節(jié)點的端口號時,你就已經(jīng)可見瀏覽器中正在運行的程序了。

Laravel 是開發(fā) PHP 應(yīng)用程序的優(yōu)秀框架。 無論您是需要構(gòu)建新想法的原型,開發(fā) MVP(最小可行產(chǎn)品)還是發(fā)布成熟的企業(yè)系統(tǒng),Laravel 都可以促進(jìn)所有開發(fā)任務(wù)和工作流程。

如何處理部署應(yīng)用程序是一個很有選擇性的問題。 Vagrant 非常適合搭建類似于遠(yuǎn)程服務(wù)器的本地環(huán)境。 但是,在生產(chǎn)環(huán)境中,您很可能需要的不僅僅是一個 Web 主機(jī)和一個數(shù)據(jù)庫。 您可能會針對多個要求提供多帶帶的服務(wù)。 您還需要有適當(dāng)?shù)臋C(jī)制來確保應(yīng)用程序始終在線運行,并且服務(wù)器可以有效地均衡負(fù)載。

在本文中,我將解釋如何在 Kubernetes 上搭建一個簡單的 Laravel 應(yīng)用程序的環(huán)境。

Kubernetes 是什么?為什么使用它?

Kubernetes 是一款由 Google 發(fā)起的開源系統(tǒng),目的在于提高集群環(huán)境下管理容器化應(yīng)用的效率。有些人將其稱為容器編排平臺,而 Kubernetes 并非唯一的此類平臺。不過,相比其它對手,其享譽已盛,且知名度仍在不斷提高;更別說你一旦習(xí)慣上它,就會發(fā)現(xiàn)它真的十分易用。

如果你依然好奇為何有人能夠愉快地和 Kubernetes 玩耍,答案就是——簡單。Kubernetes 能夠讓部署、管理多個項目所需的大量集群變得更加容易。

將 Laravel 應(yīng)用部署到 Minikube

正如我之前提到的,我將會在本文展示如何部署一個簡單、無狀態(tài)的 Laravel 應(yīng)用到 Kubernetes。我將詳細(xì)說明此過程中涉及到的步驟,同時向大家解釋為何需要執(zhí)行某項操作。此外,我還將展示如何快速橫向擴(kuò)展應(yīng)用,并使用 Ingress Controller 使其能夠通過特定域名或 IP 訪問。

你可以在多個云平臺上面運行 Kubernetes ,例如 Google Cloud Engine 和 Amazon Web Services。在這個例子中,你會使用 Minikube 運行你的程序,Minikube 是一個讓你在本地更容易運行 Kubernetes 的工具。

與 Vagrant 類似,Minikube 僅僅是一個包含了 Kubernetes 運行平臺和 Docker 的虛擬機(jī)。如果使用真正的 Kubernetes 的話,你需要使用 Docker 部署你的應(yīng)用,同時你需要將運行平臺擴(kuò)展到三個節(jié)點。

應(yīng)用

我已經(jīng)準(zhǔn)備了一個簡單的 Laravel 程序,你可以從 GitHub 克隆下來。它只是一個全新的 Laravel 安裝程序。因此,你可以使用本例中的演示程序,也可以自己創(chuàng)建一個新的 Laravel 程序。如果使用本例中的演示程序,請按照下面的命令將其克隆到項目目錄里面。

cd /to/your/working/directory
git clone git@github.com:learnk8s/laravel-kubernetes-demo.git .
預(yù)備條件

要實現(xiàn)本示例,你需要在你的本地系統(tǒng)中安裝如下軟件:

1)?Docker

2)?Kubectl

3)?Minikube

如果你在Windows系統(tǒng)中安裝上述軟件遇到問題,請查閱?Windows 10 中 Docker 和 Kubernetes 入門教程,這是一個手把手教學(xué)的入門教程。
Docker 鏡像

Kubernetes 部署容器化的應(yīng)用,因此首先你需要為示例應(yīng)用創(chuàng)建一個 Dcoker 鏡像。由于本例中你在本地運行 Minikube,因此你只能用示例代碼中的 Dockerfile 文件創(chuàng)建一個本地 Docker 鏡像。

FROM composer:1.6.5 as build 
WORKDIR /app 
COPY . /app 
RUN composer install
FROM php:7.1.8-apache 
EXPOSE 80 
COPY --from=build /app /app 
COPY vhost.conf /etc/apache2/sites-available/000-default.conf 
RUN chown -R www-data:www-data /app  
  && a2enmod rewrite

該?Dockerfile?文件由兩部分組成:

第一部分?jǐn)U展了一個 PHP 的 composer 鏡像,因此你能夠安裝應(yīng)用依賴。

第二部分創(chuàng)建了一個包含 Apache 服務(wù)的鏡像, Apache 服務(wù)將會為示例應(yīng)用服務(wù)。

在測試 Docker 鏡像前,你需要使用如下的命令創(chuàng)建鏡像:

cd /to/your/project/directory 
docker build -t yourname/laravel-kubernetes-demo .

然后使用下面的命令運行示例程序:

docker run -ti  
  -p 8080:80  
  -e APP_KEY=base64:cUPmwHx4LXa4Z25HhzFiWCf7TlQmSqnt98pnuiHmzgY=      
  laravel-kubernetes-demo

示例程序可以通過?http://localhost:8080 訪問。

在這個安裝中,容器是通用的,同時 APP_KEY 并不是寫死或共享的。

在 Minikube 中創(chuàng)建鏡像
cd /to/your/project/directory
eval $(minikube docker-env)
docker build -t yourname/laravel-kubernetes-demo .
別忘記執(zhí)行上面的 eval 命令。 要在虛擬機(jī)中創(chuàng)建鏡像,執(zhí)行上面的 eval 命令是必須的。你只需要在當(dāng)前的終端中執(zhí)行一次這個命令。
部署鏡像

現(xiàn)在示例應(yīng)用的鏡像已經(jīng)創(chuàng)建完成,并且在 Minikube 中是可用的,因此你可以接下來繼續(xù)部署這個鏡像。

我總是一開始就要確保 kubectl 在正確的上下文環(huán)境中。在這個例子中,上下文環(huán)境是 Minikube。你可以使用下面的命令快速的切換上下文環(huán)境:

kubectl config use-context minikube

然后你可以部署容器鏡像:

kubectl run laravel-kubernetes-demo    
        --image=yourname/laravel-kubernetes-demo    
        --port=80    
        --image-pull-policy=IfNotPresent    
        --env=APP_KEY=base64:cUPmwHx4LXa4Z25HhzFiWCf7TlQmSqnt98pnuiHmzgY=

上述的命令告訴 kubectl 從 Docker 鏡像中運行我們的示例程序。上述命令的第一個參數(shù)告訴 kubectl 如果在本地存在鏡像,就不要去登記處(例如 Docker Hub)拉取鏡像。請注意,你仍然需要登錄到 Docker 中,因為這樣 kubectl 才能檢查鏡像是否是最新的。

通過下面的命令,你會看到有一個 Pod 是為示例程序而創(chuàng)建的:

kubectl get pods

該命令會返回類似如下的輸出:

NAME                                     READY STATUS RESTARTS AGE
laravel-kubernetes-demo-7dbb9d6b48-q54wp 1/1   Running 0       18m

你也可以使用 Minikube 的 GUI 控制面板來監(jiān)控集群。GUI 還有助于可視化大多數(shù)經(jīng)常討論的指標(biāo)。要查看該控制面板,請執(zhí)行下屬命令:

minikube dashboard

或者獲取控制面板的 URL 地址:

minikube dashboard --url=true
暴露一個服務(wù)

到目前為止,你已經(jīng)創(chuàng)建了一個運行示例程序容器的部署。在集群中運行的 Pod 有一個動態(tài)的 IP。如果你使用該 IP 并直接把流量路由到那里,在每次重啟 Pod 的時候,你可能每次都要更新路由表。事實上,在每次部署或者容器重啟的時候,一個新的 IP 會關(guān)聯(lián)到這個 Pod 中。為了避免需要手動的管理 IP 地址,你需要使用服務(wù)。服務(wù)在 Pods 集合中充當(dāng)負(fù)載均衡器的角色。所以,盡管一個 Pod 的 IP 地址改變了,但是服務(wù)總是指向該 Pod。同時,由于服務(wù)總是擁有一個固定的 IP,因此你不需要手動更新任何東西。

你可以使用下面的命令創(chuàng)建一個服務(wù):

kubectl expose deployment laravel-kubernetes-demo --type=NodePort --port=80

倘若一切順利,你會看到一個與下面信息相似的確認(rèn)信息:

service "laravel-kubernetes-demo" exposed

執(zhí)行下面的命令:

kubectl get services

上述命令顯示了正在運行中的服務(wù)列表。你也可以通過控制面板中的 「服務(wù)」 導(dǎo)航菜單查看正在運行中的服務(wù)。很顯然,一個更加令人興奮的驗證部署和服務(wù)暴露的方法就是在瀏覽器中運行示例程序。 ?

要獲取應(yīng)用(服務(wù))的URL地址,你可以使用下面的命令:

minikube service --url=true laravel-kubernetes-demo

上述命令會輸出 IP 地址和端口號,例如:

http://192.168.99.101:31399

或者直接在瀏覽器中啟動程序:

minikube service laravel-kubernetes-demo

不想錯過接下來的故事,實驗或者小提示。 如果你欣賞這篇文章,敬請期待接下來更多的文章內(nèi)容。 希望新的內(nèi)容直接發(fā)到你的郵箱并提升在 Kubernetes 方面的專業(yè)技能。? 現(xiàn)在請訂閱

擴(kuò)展

你已經(jīng)成功在 Kubernetes 中部署了應(yīng)用。這是令人興奮的。但是做這一切的重點是什么?你只是在一個 Pod 中做了一個部署,在一個節(jié)點上面暴露了網(wǎng)頁服務(wù)。讓我們把目前的應(yīng)用多部署兩個實例。

現(xiàn)在你應(yīng)該明白你正在處于什么位置,執(zhí)行下面的命令獲取希望得到的和現(xiàn)在已有的 Pod 列表:

kubectl get deployment
NAME                    DESIRED CURRENT UP-TO-DATE AVAILABLE
AGE laravel-kubernetes-demo 1       1       1          1         57m

上面的輸出中,每一項都是「1」。你希望獲得三個 Pod。因此,我們通過下面的命令進(jìn)行擴(kuò)展:

kubectl scale --replicas=3 deployment/laravel-kubernetes-demo deployment "laravel-kubernetes-demo" scaled

命令執(zhí)行完成。你已經(jīng)將第一個 Pod 復(fù)制另外兩個,系統(tǒng)為你提供了三個 Pod 來運行這個服務(wù)。執(zhí)行 get deployment 可以檢驗這一切:

kubectl get deployment
NAME                    DESIRED CURRENT UP-TO-DATE AVAILABLE
AGE laravel-kubernetes-demo 3       3       3          3         59m

你也可以在控制面板中的 Pods 頁面或服務(wù)頁面查看這些內(nèi)容。

現(xiàn)在,你正在使用三個 Pod 運行三個應(yīng)用實例。

想象一下這種場景,你的應(yīng)用越來越受歡迎。成千上萬的訪客使用你的網(wǎng)頁或軟件。過去,你可能都焦頭爛額在編寫腳本創(chuàng)建更多實例的事情上。但是在 Kubernetes 中,您可以快速擴(kuò)展出多個實例:

kubectl scale --replicas=10 deployment/laravel-kubernetes-demo deployment "laravel-kubernetes-demo" scaled

你看看使用 Kubernetes 擴(kuò)展你的網(wǎng)站是何其便捷。

Ingress

你已經(jīng)實現(xiàn)了不錯的功能,部署了應(yīng)用并擴(kuò)展之。當(dāng)你指向群集的(Minikube)IP地址和節(jié)點的端口號時,你就已經(jīng)可見瀏覽器中正在運行的程序了。 現(xiàn)在,你將看到如果通過指定的 URL 訪問應(yīng)用程序,就如同之前部署到云端那樣。

為了在 Kubernetes 中使用 URL,你需要一個 Ingress。 Ingress 是一組允許入站連接到達(dá) Kubernetes 集群的規(guī)則。Ingress 是非常必要的,因為在 Kubernetes 中,諸如 Pod 之類的資源僅具有可在集群內(nèi)和集群內(nèi)路由的IP地址。也就是說它們是無法進(jìn)出外部環(huán)境的。

我在演示應(yīng)用源碼中包含了一個有如下內(nèi)容的?ingress.yaml 文件:

apiVersion: extensions/v1beta1 kind: Ingress metadata:   name: laravel-kubernetes-demo-ingress   annotations: ingress.kubernetes.io/rewrite-target: / spec:   backend:     serviceName: default-http-server     servicePort: 80   rules:   - host: laravel-kubernetes.demo   - http:       paths:       - path: /         backend:           serviceName: laravel-kubernetes-demo           servicePort: 80

在你所期望的 Kubernetes 資源文件基本內(nèi)容里,該文件定義了一組路由流量入站的規(guī)則。?laravel-kubernetes.demo?URL 會指向應(yīng)用運行的 Service ,就像之前在 8181 端口上標(biāo)記?laravel-kubernetes-demo?那樣。

沒有集成 Ingress 資源, Ingress 控制器是無法使用的,因此您需要創(chuàng)建一個新的控制器或使用現(xiàn)有控制器。 本教程使用的是 Nginx Ingress 控制器來管理路由資源。 Minikube(v0.14及以上版本) 附帶 Nginx 設(shè)置作為插件,您需要手動啟用這個插件:

minikube addons enable ingress
注意,Minikube 可能需要幾分鐘才能下載并安裝 Nginx 作為 Ingress 路由控制器。

啟用 Ingress 插件后,您可以通過這種方式來創(chuàng)建 Ingress 實例:

kubectl create -f path-to-your-ingress-file.yaml

您可以通過運行以下命令來驗證并獲取 Ingress 的實例信息:

kubectl describe ing laravel-kubernetes-demo-ingress

輸出一些配置相關(guān)的信息:

Name: laravel-kubernetes-demo-ingress 
Namespace: default 
Address: 192.168.99.101 
Default backend: default-http-server:80 () 
Rules:   
  Host Path Backends   
  ---- ---- --------
  *        
       / laravel-kubernetes-demo:8181 (172.17.0.6:8181) 
Annotations:
  rewrite-target: / 
Events: 
Type   Reason Age  From                     Message 
----   ------ ---- ----                     ------- 
Normal CREATE 39s  nginx-ingress-controller Ingress default/laravel-kubernetes-demo-ingress

Normal UPDATE 20s  nginx-ingress-controller Ingress default/laravel-kubernetes-demo-ingress

您現(xiàn)在可以通過 minikube IP地址訪問應(yīng)用程序,如上所示。 要通過 URL https://laravel-kubernetes.demo 訪問網(wǎng)站應(yīng)用,您需要在 hosts 文件中添加一條解析記錄。

結(jié)論

希望這篇文章能幫助您熟悉 Kubernetes 的部署和搭建。 根據(jù)我自己的經(jīng)驗,如果你經(jīng)常進(jìn)行類似的環(huán)境搭建,這會讓你的搭建過程更加得心應(yīng)手且有趣。

轉(zhuǎn)自 PHP / Laravel 開發(fā)者社區(qū) https://laravel-china.org/top...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/29943.html

相關(guān)文章

  • 將 Node.js 應(yīng)用從 PaaS 平臺移動到 Kubernetes Tutorial

    摘要:目前正在運行的應(yīng)用程序。內(nèi)置非配置負(fù)載均衡器如何設(shè)置運行的集群在這里你有幾個選項。它跟其它的谷歌云組件也都整合得很好,比如負(fù)載均衡器和磁盤。它會告訴負(fù)載均衡器,流量可以被重新傳到特定的。元信息和谷歌云會以正確的方式展現(xiàn)出來。 Kubernetes實踐案例分享|在這次的 RisingStack 案例分享中,我們可以在 Kubernetes Tutorial 中學(xué)習(xí)到如何從 PaaS 供應(yīng)...

    skinner 評論0 收藏0
  • Travix是如何部署應(yīng)用程序Kubernetes上的

    摘要:在這篇文章中,我們來看是如何部署應(yīng)用程序到,以及如何將它作為一個公共服務(wù)的。在中的是跟應(yīng)用程序通信的入口。每個除了運行在部署的主要應(yīng)用程序上的也為終端運行。部署是高級別的抽象。 Travix總部位于荷蘭,是一家在線旅游商務(wù)網(wǎng)站,業(yè)務(wù)輻射全球28個國家,成立于2011年,旗下有五個網(wǎng)站:CheapTickets,BudgetAir,Vliegwinkel和Flugladen。公司通過這五...

    miqt 評論0 收藏0
  • 如何在Kubernetes上進(jìn)行微服務(wù)部署

    摘要:今天我們將探討如何基于微服務(wù)部署來構(gòu)建。還能監(jiān)控并保障所需要數(shù)量正在運行,并將那些停止的替換掉。目前你的部署應(yīng)顯示以下信息。我們將更細(xì)致地探討如何設(shè)置終端多服務(wù)部署服務(wù)發(fā)現(xiàn)及應(yīng)用要如何應(yīng)對失敗場景等。 原文來源:Rancher Labs 大多數(shù)人在生產(chǎn)環(huán)境中運行Docker,是把它作為構(gòu)建和移動部署配置的一種方式。然而,他們的部署模型要么非常整體化,要么有幾個大的服務(wù)模塊組成。使用真實...

    keithyau 評論0 收藏0
  • 如何在Kubernetes上進(jìn)行微服務(wù)部署

    摘要:今天我們將探討如何基于微服務(wù)部署來構(gòu)建。還能監(jiān)控并保障所需要數(shù)量正在運行,并將那些停止的替換掉。目前你的部署應(yīng)顯示以下信息。我們將更細(xì)致地探討如何設(shè)置終端多服務(wù)部署服務(wù)發(fā)現(xiàn)及應(yīng)用要如何應(yīng)對失敗場景等。 原文來源:Rancher Labs 大多數(shù)人在生產(chǎn)環(huán)境中運行Docker,是把它作為構(gòu)建和移動部署配置的一種方式。然而,他們的部署模型要么非常整體化,要么有幾個大的服務(wù)模塊組成。使用真實...

    jsummer 評論0 收藏0
  • Kubernetes部署的最佳安全實踐

    摘要:將成安全評估如漏洞掃描加入持續(xù)集成中,使其成為構(gòu)建流程的一部分。持續(xù)集成應(yīng)確保只使用審查通過的代碼來構(gòu)建鏡像。我們推薦這篇文章中提到的安全實踐,將的靈活配置能力加入到持續(xù)集成中,自動將安全性無縫融合到整個流程中。 編者按:本文是由 Aqua Security 的Amir Jerbi 和Michael Cherny 所寫,基于他們從本地和云端上收集到的實際數(shù)據(jù),描述了Kubernetes...

    Rocture 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<