在 Azure 上部署 Kubernetes 叢集
在實驗、演示的時候,或者是生產過程中,我經常會需要執行一些 Docker 負載。雖然這在本地計算機上十分容易,但是當你要在雲端執行的時候就有點困難了。相比於本地執行,在雲端執行真的太複雜了。我嘗試了幾個方法,比如在 AWS Beanstalk、AWS ECS 或者 Azure ACS DC/OS 上執行 Docker,但是針對於我的需求來說,這些嘗試太複雜了,而且限制諸多。 |
Azure 宣佈 Azure Container Service 預支援 Kubernetes,與此同時,Kubernetes 也宣佈支援 ACS,所以是時候嘗試一下 Kubernetes 了。
你可以跳過所有步驟,只閱讀演示部署和說明,點選連結:。
那麼,什麼是 Kubernetes 呢?用一句簡單的話來概括:它是一個容器編排工具。第一步,將應用程式進行打包,然後 Kubernetes 可以對打包好的這些應用程式進行部署、執行以及擴充套件。為了深入瞭解,可能還需要透過 Tutorial 瞭解,但是這個十分容易,你完全可以跳過這個步驟直接嘗試如何執行它。
在本文中,我會使用新的 Azure CLI。安裝十分簡單,大多數情況下,只需要“pip install azure-cli”就可以了。
所以現在讓我們來預覽一下我們的叢集。首先,你可能需要資源組來隔離你的基礎設施。
az group create -n my-very-own-k8s-cluster -l "West Europe"
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
在等待 完成的時候,我們來看一些評論。
1、如果你的 出現了一些問題,比如這些命令出現一些無意義的錯誤,新增-debug 引數有點囉嗦,但是會出現一些錯誤。
2、-dnsprefix 是可選的,個人建議還是要新增上去,不然的話,就會按照“叢集名字+組名字”使用,如果超過 90 個字元的長度,之後在操作過程中就會出現奇怪的錯誤。
預設設定下,ACS 用單個 master 和 3 個 agents 來設定叢集。這些步驟預設設定下都是使用 D2 的,所以這個叢集耗費比較高,當你不需要的時候記得清理資源。
以及,歡迎閱讀 Kubernetes 的 ACS 引擎之下的內容,連結:。上述內容給了實施過程中的一些很棒的觀點。注意了,ACS 文件沒有使用新的 Azure 工具,所以操作起來會有點複雜。
第一個有效負載
所有的基礎設施準備完成,現在開始部署 Kubernetes。要管理叢集,那麼就需要 kubectl。你可以透過以下程式碼自動執行(可能需要自行新增到 PATH):
az acs kubernetes install-cli
接下來,你需要用叢集來認證 kubectl。
az acs kubernetes get-credentials -n my-very-own-k8s-cluster \ -g my-very-k8s-cluster
檢查所有一切是否 OK。這個命令列會提供客戶端和伺服器端的版本。
kubectl version
從這裡開始,你已經擁有你所需要的東西來執行你的第一個有效負載。所以讓我們來建立第一個定義檔案,並且嘗試執行。Kubernetes 內的定義檔案可以使用很多檔案格式,我用的是 YAML, 所以我們用以下內容來建立 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 術語十分重要。
Pod——容器例項—— Deployment——確保 pods 能夠執行,扮演監督的角色—— Service——將 pod 組成一個系統——
所以,對於定義在模版中的單個 pod 來說,我們剛剛建立的定義檔案是個 deployment。以下命令列會拉取Docker映象`chaliy/ner-ms:uk`,開啟它的例項並且設定監督員:
kubectl create -f ./hello.yml
現在可以使用的命令列很少:
# 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
如果你想要重新配置應用程式,可以在定義檔案中修改,比如設定`replicas:10`,然後執行:
kubectl apply -f ./hello.yml
技術上來說,這已經在執行有效負載了。我們來看看它的執行狀況。Kubernetes 的 UI 介面向使用者呈現叢集執行狀況。它的執行方式跟應用程式的執行方式是一樣的。當然,如果你不希望這樣的 UI 出現在叢集外面,那麼預設設定下你可以只在叢集內執行。但是,如果訪問又會如何?
方法很簡單,Kubernetes 實現 Basteon 模式,並且透過簡單的方法代理到你的本地電腦。所以首先你需要執行代理:
kubectl proxy --port=8000
然後,你需要立刻看到 Kubernetes Dashboard 的話。可以瀏覽:
還有就是,你可能需要釋出對叢集外的服務。對於這個,你需要建立 service(對於 Kubernetes),然後使用 expose 命令,用新的 Loadbalancer。
kubectl expose deployment hello --type="LoadBalancer"--port=80 -- target-port=8080
這個命令列會開始設定新的 load balance,需要一點時間。要檢查它是否執行,要查詢關於 service 的資訊:
kubectl get services/hello
之後你就會看到外部 IP 地址,意味著服務已處於 OK 狀態,你可以用來傳送請求。類似於:
curl/
所有的 都可以在這個網址找到:。在這裡你可以找到使用 Nginx 代理作為路由器的一些真例項子。
對於我來說,使用者體驗很棒,但是我也不確定我會不會繼續使用,因為有幾個問題還在困擾著我:
1、Kubernetes ACS 版本還在預釋出階段,有些功能還沒有實現(比如,你還不能對你的叢集進行縮容擴容)。
2、使用成本較高,至少需要 4D2 個節點,每月最高可能要花費 1000 美元。使用相對小一點的例項也是可以的,但是,我的負載型別還不知道如何利用它。
3、目前還沒有可以建立系統的裝置。類似於 docker-compose 能夠提供相關服務。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2642587/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在 Azure 中部署 Kubernetes 容器叢集
- Kubernetes — 在 OpenStack 上使用 kubeadm 部署高可用叢集
- 在kubernetes上部署consul叢集
- 教你在Kubernetes中快速部署ES叢集
- 容器化 | 在 Kubernetes 上部署 RadonDB MySQL 叢集MySql
- 使用Rancher在Kubernetes上部署EMQ X叢集MQ
- 在 Azure AKS 上部署 EMQX MQTT 伺服器叢集MQQT伺服器
- 使用Gardener在GoogleCloudPlatform上建立Kubernetes叢集GoCloudUDPPlatform
- Kubernetes 叢集搭建(上)
- 拆除kubeadm部署的Kubernetes 叢集
- Kubernetes部署叢集Mysql服務MySql
- 使用Gardener在Google Cloud Platform上建立Kubernetes叢集GoCloudPlatform
- 使用 Terraform 在 AWS 上快速部署 MQTT 叢集ORMMQQT
- 將 .NET Aspire 部署到 Kubernetes 叢集
- 基於containerd 部署 kubernetes 1.28叢集AI
- 在 Minecraft 中管理 Kubernetes 叢集Raft
- 使用 Terraform 在阿里雲上快速部署 MQTT 叢集ORM阿里MQQT
- Kubernetes叢集部署史上最詳細(二)Prometheus監控Kubernetes叢集Prometheus
- 部署Kubernetes v1.22.10高可用叢集
- Kubernetes 部署 Nebula 圖資料庫叢集資料庫
- 基於Ubuntu部署企業級kubernetes叢集---k8s叢集容部署UbuntuK8S
- 在滴滴雲上學習 Kubernetes v1.13.0:叢集搭建
- Ubuntu上kubeadm安裝Kubernetes叢集Ubuntu
- 如何在CentOS上建立Kubernetes叢集CentOS
- 在華為雲 OSC 上快速部署 EMQX MQTT 叢集MQQT
- kubeadm部署一主兩從的kubernetes叢集
- 使用 Kubeadm+Containerd 部署一個 Kubernetes 叢集AI
- 使用Minikube部署本地Kubernetes叢集(二十八)
- 利用 Kubeadm部署 Kubernetes 1.13.1 叢集實踐錄
- 在kubernetes叢集中部署open-falcon
- 在大規模 Kubernetes 叢集上實現高 SLO 的方法
- Kubernetes叢集部署
- PostgreSQL-HA 高可用叢集在 Rainbond 上的部署方案SQLAI
- Kubernetes(k8s)部署redis-cluster叢集K8SRedis
- Kubernetes實戰:高可用叢集的搭建和部署
- 實踐展示openEuler部署Kubernetes 1.29.4版本叢集
- 在 AWS EKS 上部署 EMQX MQTT 叢集MQQT
- 在Rainbond上部署高可用Apollo叢集AI