您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么用KOps在AWS上部署和管理Kubernetes”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用KOps在AWS上部署和管理Kubernetes”吧!
Kubernetes作為容器編排的領導者地位已經不容置疑,可是Kubernetes還是面臨這一些問題,一個是學習曲線非常陡峭,從容器到K8s你仍然要學習很多東西,另一個是部署,要在部署一套K8s并不容易,你有一些選擇:
minikube minikube在你的本機的VM中安裝一個單節點的K8s集群,但是這個只能用于本地測試和學習,不能用于真正的生產和大規模使用。
裸機 bare metal 可以自己在裸機(或者虛機)上安裝,但是要自己管理物理資源,配置網絡和驅動,很麻煩。如果想挑戰自己的話可以去參考官方文檔
云服務 (cloud hosted solution),各大云廠商都推出了自己的K8s的云方案。云服務優勢明顯,但通常云服務的master是由云廠商控制,用戶自己對集群的控制比較少,而且,云服務使得用戶把自己的業務綁定在某個云廠商。例如:
Google GKE
Azure AKS
Amazon EKS
IBM Cloud Kubernetes Service
阿里 容器服務
最后,我們希望使用云,但是又不想受到云廠商的限制,這個時候我們可以使用例如以下個工具在云上部署自己的K8s。例如:
Kops
Kubespray
我們今天就看看如何使用kops在AWS上部署一個K8s的cluster。
假定所有操作在Linux客戶端中完成,Mac或者其它客戶端自行搜索。
假定你有一個擁有對應權限的AWS account。
安裝kubectl,kubectl是K8s的命令行客戶端,Kops會使用該客戶端進行k8s的配置。
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
安裝kops
curl -LO https://github.com/kubernetes/kops/releases/download/$(curl -s https://api.github.com/repos/kubernetes/kops/releases/latest | grep tag_name | cut -d '"' -f 4)/kops-linux-amd64 chmod +x kops-linux-amd64 sudo mv kops-linux-amd64 /usr/local/bin/kops
首先要安裝AWS cli
實現我們需要一個AWS用戶用于運行Kops,該用戶需要具有以下的權限:
AmazonEC2FullAccess AmazonRoute53FullAccess AmazonS3FullAccess IAMFullAccess AmazonVPCFullAccess
用CLI創建對應的用戶組,用戶和access key:
aws iam create-group --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-name kops aws iam create-user --user-name kops aws iam add-user-to-group --user-name kops --group-name kops aws iam create-access-key --user-name kops
記錄下最后一步創建的用戶SecretAccessKey 和 AccessKeyID,并在客戶端中配置,導出到環境變量
# configure the aws client to use your new IAM user aws configure # Use your new access and secret key here aws iam list-users # you should see a list of all your IAM users here # Because "aws configure" doesn't export these vars for kops to use, we export them now export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id) export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
用戶配置好了可以配置DNS,這個是可選項,我們先略過。
Kops把K8s集群的配置存儲在AWS的S3中,每一個集群的配置對應于一個S3文件,所有我們創建一個S3的bucket用于存儲集群的配置。
export BUCKET=<bucket-name> aws s3api create-bucket \ --bucket $BUCKET \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 aws s3api put-bucket-versioning --bucket $BUCKET --versioning-configuration Status=Enabled
好了,準備完畢,我們可以開始創建K8s集群了。
首先, 如果你的客戶端沒有ssh key,創建一個
ssh-keygen -t rsa -C "your_email@example.com"
配置環境變量,定義集群的名字和配置的url
export NAME= <cluster-name>.k8s.local export KOPS_STATE_STORE=s3://$BUCKET
創建集群之前,查看一下有哪些可用的AZ
aws ec2 describe-availability-zones --region us-west-2
我當前在使用 us-west-2的region可用的az是這三個
{ "AvailabilityZones": [ { "State": "available", "Messages": [], "RegionName": "us-west-2", "ZoneName": "us-west-2a" }, { "State": "available", "Messages": [], "RegionName": "us-west-2", "ZoneName": "us-west-2b" }, { "State": "available", "Messages": [], "RegionName": "us-west-2", "ZoneName": "us-west-2c" } ] }
那么我們就選則在us-west-2a中創建
kops create cluster \ --zones us-west-2a \ ${NAME}
注意這一步只是生成了集群的配置文件,并存儲在S3中。
可以使用kops命令,修改配置:
kops edit cluster ${NAME}
如果配置沒有問題,就可以部署了:
kops update cluster ${NAME} --yes
缺省的情況下,kops會創建所有對應的AWS資源,包含VPC,子網,EC2,Auto Scaling Group,ELB,安全組等等。
如果需要安裝在特定的子網,在創建集群時可以指定子網的id。另外,也支持跨AZ的HA配置。
集群安裝好之后,需要幾分鐘時間啟動,我們可以用kubectl來查看一下狀態(Kops會自動把cluster的配置寫到~/.kube/config 文件中作為缺省配置):
kubectl cluster-info
建議安裝kube-dashboard,可以用UI來管理集群,Linux終端狂人自行略過。
在集群不需要的時候,可以用kops刪除集群:
kops delete cluster --name ${NAME}
在云上的K8s集群可以很方便的擴展,如果你的集群的計算資源都用的差不多了,你希望擴展你的集群的時候,有兩種辦法。
一是直接修改AWS的auto scaling group。KOps會在AWS上創建兩個auto scaling group,一個用于Node,另一用于Master,通常我們只要修改Node所在的Auto Scaling Group的number就好了。
Kops的缺省設置是2,你可以把對應的數值設置成自己需要的數字。
另一個就是通過Kops來修改
kops edit ig nodes
把maxSize和minSize都設置成需要的值,然后更新
kops update cluster --yes kops rolling-update cluster
使用rolling-update可以保證在更新的時候業務不會中斷。
另外,有人可能會問,我希望不用的時候能把集群暫停,這樣就不會使用很多的AWS系統資源了,這要怎么辦。因為Auto Scaling Group的存在,如果直接stop對應的EC2實例,Auto Scaling Group會創建新的實例的取代,所以這個方法是不管用的。其實辦法很簡單,只要把對應的Auto Scaling Group的數值設置為0就好了。
同樣可以在AWS中直接修改Master和Node所在的Auto Scaling Group,或者在Kops中修改。
注意在Kops中修改,需要調用如下的命令來獲得Master所在group的名字。
$ kops get ig Using cluster from kubectl context: staging.cluster-name.com NAME ROLE MACHINETYPE MIN MAX SUBNETS master-us-west-2a Master m3.medium 0 0 us-west-2a nodes Node t2.medium 0 0 us-west-2a
到此,相信大家對“怎么用KOps在AWS上部署和管理Kubernetes”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。