如何在Azure上部署Kubernetes集群

如何在Azure上部署Kubernetes集群,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

成都創(chuàng)新互聯(lián)公司網(wǎng)站設(shè)計(jì),為客戶量身定制各類網(wǎng)站建設(shè)業(yè)務(wù),包括企業(yè)型、電子商務(wù)型、響應(yīng)式網(wǎng)站開發(fā)、行業(yè)門戶型等各類網(wǎng)站,實(shí)戰(zhàn)經(jīng)驗(yàn)豐富,成功案例眾多。以客戶利益為出發(fā)點(diǎn),成都創(chuàng)新互聯(lián)公司網(wǎng)站制作為客戶規(guī)劃、按需制作網(wǎng)站符合企業(yè)需求、帶有營銷價(jià)值的網(wǎng)絡(luò)建站方案認(rèn)真對(duì)待每一個(gè)客戶,我們不用口頭的語言來吹擂我們的優(yōu)秀,數(shù)千家的成功案例見證著我們的成長。

在實(shí)驗(yàn)、演示的時(shí)候,或者是生產(chǎn)過程中,我經(jīng)常會(huì)需要運(yùn)行一些 Docker 負(fù)載。雖然這在本地計(jì)算機(jī)上十分容易,但是當(dāng)你要在云端運(yùn)行的時(shí)候就有點(diǎn)困難了。相比于本地運(yùn)行,在云端運(yùn)行真的太復(fù)雜了。我嘗試了幾個(gè)方法,比如在 AWS Beanstalk、AWS ECS 或者 Azure ACS DC/OS 上運(yùn)行 Docker,但是針對(duì)于我的需求來說,這些嘗試太復(fù)雜了,而且限制諸多。

Azure 宣布 Azure Container Service 預(yù)支持 Kubernetes,與此同時(shí),Kubernetes 也宣布支持 ACS,所以是時(shí)候嘗試一下 Kubernetes 了。

你可以跳過所有步驟,只閱讀演示部署和說明,點(diǎn)擊鏈接:https://github.com/chaliy/play-azure-kubernetes。

介紹

那么,什么是 Kubernetes 呢?用一句簡單的話來概括:它是一個(gè)容器編排工具。第一步,將應(yīng)用程序進(jìn)行打包,然后 Kubernetes 可以對(duì)打包好的這些應(yīng)用程序進(jìn)行部署、運(yùn)行以及擴(kuò)展。為了深入了解,可能還需要通過 Tutorial 了解,但是這個(gè)十分容易,你完全可以跳過這個(gè)步驟直接嘗試如何運(yùn)行它。

所需的基礎(chǔ)設(shè)施

在本文中,我會(huì)使用新的 Azure CLI。安裝十分簡單,大多數(shù)情況下,只需要“pip install azure-cli”就可以了。
所以現(xiàn)在讓我們來預(yù)覽一下我們的集群。首先,你可能需要資源組來隔離你的基礎(chǔ)設(shè)施。

az group create -n my-very-own-k8s-cluster -l "West Europe"

接下來是規(guī)制集群

az acs create -n my-very-own-k8s-cluster \
 -g my-very-own-k8s-cluster \
 --DNS-prefix my-very-own-k8s-cluster \
 --orchestrator-type kubernetes

在等待 命令 完成的時(shí)候,我們來看一些評(píng)論。

1、如果你的 命令 出現(xiàn)了一些問題,比如這些命令出現(xiàn)一些無意義的錯(cuò)誤,添加-debug 參數(shù)有點(diǎn)啰嗦,但是會(huì)出現(xiàn)一些錯(cuò)誤。

2、-dnsprefix 是可選的,個(gè)人建議還是要添加上去,不然的話,就會(huì)按照“集群名字+組名字”使用,如果超過 90 個(gè)字符的長度,之后在操作過程中就會(huì)出現(xiàn)奇怪的錯(cuò)誤。

默認(rèn)設(shè)置下,ACS 用單個(gè) master 和 3 個(gè) agents 來設(shè)置集群。這些步驟默認(rèn)設(shè)置下都是使用 D2 的,所以這個(gè)集群耗費(fèi)比較高,當(dāng)你不需要的時(shí)候記得清理資源。

以及,歡迎閱讀 Kubernetes 的 ACS 引擎之下的內(nèi)容,鏈接:https://github.com/Azure/acs-engine/blob/master/docs/kubernetes.md。上述內(nèi)容給了實(shí)施過程中的一些很棒的觀點(diǎn)。注意了,ACS 文檔沒有使用新的 Azure 工具,所以操作起來會(huì)有點(diǎn)復(fù)雜。

第一個(gè)有效負(fù)載

所有的基礎(chǔ)設(shè)施準(zhǔn)備完成,現(xiàn)在開始部署 Kubernetes。要管理集群,那么就需要 kubectl。你可以通過以下代碼自動(dòng)運(yùn)行(可能需要自行添加到 PATH):

az acs kubernetes install-cli

接下來,你需要用集群來認(rèn)證 kubectl。

az acs kubernetes get-credentials -n my-very-own-k8s-cluster \
 -g my-very-k8s-cluster

檢查所有一切是否 OK。這個(gè)命令行會(huì)提供客戶端和服務(wù)器端的版本。

kubectl version

從這里開始,你已經(jīng)擁有你所需要的東西來運(yùn)行你的第一個(gè)有效負(fù)載。所以讓我們來創(chuàng)建第一個(gè)定義文件,并且嘗試運(yùn)行。Kubernetes 內(nèi)的定義文件可以使用很多文件格式,我用的是 YAML, 所以我們用以下內(nèi)容來創(chuàng)建 hello.yml 文件:

apiVersion: extension/v1beta1
 kind: Deployment
 metadata:
 name: hello # Name of the deployment, just for reference purposes
 spec:
 replica: 1 # Number of instances for the given application
 template:
 metadata:
 labels:
 app: hello
 spec:
 containers:
 - name: ner-uk-ms # Name of container, could be anything you like
 image: chaliy/ner-ms:uk # Docker image to run
 ports:
 -containerPort:8080

目前,理解一些 Kubernetes 術(shù)語十分重要。

Pod——容器實(shí)例——http://kubernetes.io/docs/user-guide/pods/
Deployment——確保 pods 能夠運(yùn)行,扮演監(jiān)督的角色——http://kubernetes.io/docs/user-guide/deployments/
Service——將 pod 組成一個(gè)系統(tǒng)——http://kubernetes.io/docs/user-guide/services/

所以,對(duì)于定義在模版中的單個(gè) pod 來說,我們剛剛創(chuàng)建的定義文件是個(gè) deployment。以下命令行會(huì)拉取Docker鏡像`chaliy/ner-ms:uk`,開啟它的實(shí)例并且設(shè)置監(jiān)督員:

kubectl create -f ./hello.yml

現(xiàn)在可以使用的命令行很少:

# Retrieve logs associated with deployment
 kubectl logs hello
# List Pods
 kubectl get pods
# List deployments
 kubectl get deployments
# Details about concrete pod, for example in case of errors
 kubectl describe pods/podid

如果你想要重新配置應(yīng)用程序,可以在定義文件中修改,比如設(shè)置`replicas:10`,然后運(yùn)行:

kubectl apply -f ./hello.yml

技術(shù)上來說,這已經(jīng)在運(yùn)行有效負(fù)載了。我們來看看它的運(yùn)行狀況。Kubernetes 的 UI 界面向用戶呈現(xiàn)集群運(yùn)行狀況。它的運(yùn)行方式跟應(yīng)用程序的運(yùn)行方式是一樣的。當(dāng)然,如果你不希望這樣的 UI 出現(xiàn)在集群外面,那么默認(rèn)設(shè)置下你可以只在集群內(nèi)運(yùn)行。但是,如果訪問又會(huì)如何?

方法很簡單,Kubernetes 實(shí)現(xiàn) Basteon 模式,并且通過簡單的方法代理到你的本地電腦。所以首先你需要運(yùn)行代理:

kubectl proxy --port=8000

然后,你需要立刻看到 Kubernetes Dashboard 的話??梢詾g覽:http://localhost:8000/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
還有就是,你可能需要發(fā)布對(duì)集群外的服務(wù)。對(duì)于這個(gè),你需要?jiǎng)?chuàng)建 service(對(duì)于 Kubernetes),然后使用 expose 命令,用新的 Loadbalancer。

kubectl expose deployment hello --type="LoadBalancer"--port=80 --
 target-port=8080

這個(gè)命令行會(huì)開始設(shè)置新的 load balance,需要一點(diǎn)時(shí)間。要檢查它是否運(yùn)行,要查詢關(guān)于 service 的信息:

kubectl get services/hello

之后你就會(huì)看到外部 IP 地址,意味著服務(wù)已處于 OK 狀態(tài),你可以用來發(fā)送請(qǐng)求。類似于:

curlhttp://EXTERNAL-IP/

所有的 腳本 都可以在這個(gè)網(wǎng)址找到:https://github.com/chaliy/play-azure-kubernetes。在這里你可以找到使用 Nginx 代理作為路由器的一些真實(shí)例子。

結(jié)論

對(duì)于我來說,用戶體驗(yàn)很棒,但是我也不確定我會(huì)不會(huì)繼續(xù)使用,因?yàn)橛袔讉€(gè)問題還在困擾著我:

1、Kubernetes ACS 版本還在預(yù)發(fā)布階段,有些功能還沒有實(shí)現(xiàn)(比如,你還不能對(duì)你的集群進(jìn)行縮容擴(kuò)容)。

2、使用成本較高,至少需要 4D2 個(gè)節(jié)點(diǎn),每月最高可能要花費(fèi) 1000 美元。使用相對(duì)小一點(diǎn)的實(shí)例也是可以的,但是,我的負(fù)載類型還不知道如何利用它。

3、目前還沒有可以創(chuàng)建系統(tǒng)的設(shè)備。類似于 docker-compose 能夠提供相關(guān)服務(wù)。

關(guān)于如何在Azure上部署Kubernetes集群問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站名稱:如何在Azure上部署Kubernetes集群
當(dāng)前鏈接:http://muchs.cn/article16/gddgdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、云服務(wù)器品牌網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站營銷、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司