中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-07-28 17:44:34 來源:億速云 閱讀:142 作者:chen 欄目:云計算

本篇內容主要講解“怎么用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資源

首先要安裝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在AWS上部署和管理Kubernetes

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

kops delete cluster --name ${NAME}

擴展和暫停集群

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

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

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

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”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

勐海县| 揭西县| 三门县| 泉州市| 诸暨市| 新龙县| 淅川县| 富阳市| 当涂县| 竹溪县| 大足县| 凉山| 开化县| 兖州市| 和龙市| 永靖县| 包头市| 城市| 东山县| 抚松县| 永福县| 泌阳县| 蒙自县| 福海县| 陵川县| 越西县| 株洲市| 武平县| 唐山市| 峨眉山市| 蚌埠市| 龙陵县| 同江市| 武宣县| 池州市| 昂仁县| 东辽县| 红原县| 雷山县| 横山县| 张家川|