溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么用KOps在AWS上部署和管理Kubernetes

發(fā)布時(shí)間:2021-07-28 17:44:34 來(lái)源:億速云 閱讀:135 作者:chen 欄目:云計(jì)算

本篇內(nèi)容主要講解“怎么用KOps在AWS上部署和管理Kubernetes”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么用KOps在AWS上部署和管理Kubernetes”吧!

Kubernetes作為容器編排的領(lǐng)導(dǎo)者地位已經(jīng)不容置疑,可是Kubernetes還是面臨這一些問(wèn)題,一個(gè)是學(xué)習(xí)曲線(xiàn)非常陡峭,從容器到K8s你仍然要學(xué)習(xí)很多東西,另一個(gè)是部署,要在部署一套K8s并不容易,你有一些選擇:

  • minikube minikube在你的本機(jī)的VM中安裝一個(gè)單節(jié)點(diǎn)的K8s集群,但是這個(gè)只能用于本地測(cè)試和學(xué)習(xí),不能用于真正的生產(chǎn)和大規(guī)模使用。

  • 裸機(jī) bare metal 可以自己在裸機(jī)(或者虛機(jī))上安裝,但是要自己管理物理資源,配置網(wǎng)絡(luò)和驅(qū)動(dòng),很麻煩。如果想挑戰(zhàn)自己的話(huà)可以去參考官方文檔 

  • 云服務(wù) (cloud hosted solution),各大云廠商都推出了自己的K8s的云方案。云服務(wù)優(yōu)勢(shì)明顯,但通常云服務(wù)的master是由云廠商控制,用戶(hù)自己對(duì)集群的控制比較少,而且,云服務(wù)使得用戶(hù)把自己的業(yè)務(wù)綁定在某個(gè)云廠商。例如:

    • Google GKE

    • Azure AKS

    • Amazon EKS

    • IBM Cloud Kubernetes Service

    • 阿里 容器服務(wù)

  • 最后,我們希望使用云,但是又不想受到云廠商的限制,這個(gè)時(shí)候我們可以使用例如以下個(gè)工具在云上部署自己的K8s。例如:

    • Kops

    • Kubespray

我們今天就看看如何使用kops在AWS上部署一個(gè)K8s的cluster。

  • 假定所有操作在Linux客戶(hù)端中完成,Mac或者其它客戶(hù)端自行搜索。

  • 假定你有一個(gè)擁有對(duì)應(yīng)權(quán)限的AWS account。

安裝客戶(hù)端

安裝kubectl,kubectl是K8s的命令行客戶(hù)端,Kops會(huì)使用該客戶(hù)端進(jìn)行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資源

首先要安裝AWS cli

實(shí)現(xiàn)我們需要一個(gè)AWS用戶(hù)用于運(yùn)行Kops,該用戶(hù)需要具有以下的權(quán)限:

AmazonEC2FullAccess
AmazonRoute53FullAccess
AmazonS3FullAccess
IAMFullAccess
AmazonVPCFullAccess

用CLI創(chuàng)建對(duì)應(yīng)的用戶(hù)組,用戶(hù)和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

記錄下最后一步創(chuàng)建的用戶(hù)SecretAccessKey 和 AccessKeyID,并在客戶(hù)端中配置,導(dǎo)出到環(huán)境變量

# 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)

用戶(hù)配置好了可以配置DNS,這個(gè)是可選項(xiàng),我們先略過(guò)。

Kops把K8s集群的配置存儲(chǔ)在AWS的S3中,每一個(gè)集群的配置對(duì)應(yīng)于一個(gè)S3文件,所有我們創(chuàng)建一個(gè)S3的bucket用于存儲(chǔ)集群的配置。

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

好了,準(zhǔn)備完畢,我們可以開(kāi)始創(chuàng)建K8s集群了。

創(chuàng)建集群

首先, 如果你的客戶(hù)端沒(méi)有ssh key,創(chuàng)建一個(gè)

ssh-keygen -t rsa -C "your_email@example.com"

配置環(huán)境變量,定義集群的名字和配置的url

export NAME= <cluster-name>.k8s.local
export KOPS_STATE_STORE=s3://$BUCKET

創(chuàng)建集群之前,查看一下有哪些可用的AZ

aws ec2 describe-availability-zones --region us-west-2

我當(dāng)前在使用 us-west-2的region可用的az是這三個(gè)

{
    "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中創(chuàng)建

kops create cluster \
    --zones us-west-2a \
    ${NAME}

注意這一步只是生成了集群的配置文件,并存儲(chǔ)在S3中。

可以使用kops命令,修改配置:

kops edit cluster ${NAME}

如果配置沒(méi)有問(wèn)題,就可以部署了:

kops update cluster ${NAME} --yes

缺省的情況下,kops會(huì)創(chuàng)建所有對(duì)應(yīng)的AWS資源,包含VPC,子網(wǎng),EC2,Auto Scaling Group,ELB,安全組等等。

如果需要安裝在特定的子網(wǎng),在創(chuàng)建集群時(shí)可以指定子網(wǎng)的id。另外,也支持跨AZ的HA配置。

集群安裝好之后,需要幾分鐘時(shí)間啟動(dòng),我們可以用kubectl來(lái)查看一下?tīng)顟B(tài)(Kops會(huì)自動(dòng)把cluster的配置寫(xiě)到~/.kube/config 文件中作為缺省配置):

kubectl cluster-info

建議安裝kube-dashboard,可以用UI來(lái)管理集群,Linux終端狂人自行略過(guò)。

怎么用KOps在AWS上部署和管理Kubernetes

在集群不需要的時(shí)候,可以用kops刪除集群:

kops delete cluster --name ${NAME}

擴(kuò)展和暫停集群

在云上的K8s集群可以很方便的擴(kuò)展,如果你的集群的計(jì)算資源都用的差不多了,你希望擴(kuò)展你的集群的時(shí)候,有兩種辦法。

一是直接修改AWS的auto scaling group。KOps會(huì)在AWS上創(chuàng)建兩個(gè)auto scaling group,一個(gè)用于Node,另一用于Master,通常我們只要修改Node所在的Auto Scaling Group的number就好了。

怎么用KOps在AWS上部署和管理Kubernetes

Kops的缺省設(shè)置是2,你可以把對(duì)應(yīng)的數(shù)值設(shè)置成自己需要的數(shù)字。

另一個(gè)就是通過(guò)Kops來(lái)修改

kops edit ig nodes

把maxSize和minSize都設(shè)置成需要的值,然后更新

kops update cluster --yes
kops rolling-update cluster

使用rolling-update可以保證在更新的時(shí)候業(yè)務(wù)不會(huì)中斷。

另外,有人可能會(huì)問(wèn),我希望不用的時(shí)候能把集群暫停,這樣就不會(huì)使用很多的AWS系統(tǒng)資源了,這要怎么辦。因?yàn)锳uto Scaling Group的存在,如果直接stop對(duì)應(yīng)的EC2實(shí)例,Auto Scaling Group會(huì)創(chuàng)建新的實(shí)例的取代,所以這個(gè)方法是不管用的。其實(shí)辦法很簡(jiǎn)單,只要把對(duì)應(yīng)的Auto Scaling Group的數(shù)值設(shè)置為0就好了。

同樣可以在AWS中直接修改Master和Node所在的Auto Scaling Group,或者在Kops中修改。

注意在Kops中修改,需要調(diào)用如下的命令來(lái)獲得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

到此,相信大家對(duì)“怎么用KOps在AWS上部署和管理Kubernetes”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI