install k8s on aws
AWS安裝集群有很多種方式,今天教大家使用eksctl進行部署集群,其中部署集群的Node有分linux或者Fargate,不管是哪種部署,都是很方便的。
- AWS Fargate 是一項技術,可以與 Amazon ECS 搭配使用以執行容器,而不需管理 Amazon EC2 執行個體的伺服器或叢集。使用 Fargate,就不再需要佈建、設定或擴展虛擬機器的叢集來執行容器。這樣一來即無須選擇伺服器類型、決定何時擴展叢集,或最佳化叢集壓縮。
- Linux就是使用EC2去建立你的Node,這邊就不贅述。
- Note: Fargate 特性關係,就無法使用 Daemonset
記得要先安裝好 eksctl 和 kubectl
如果都已安裝好了,那就開始建立cluster吧
1 | $ eksctl create cluster # 建立cluster |
Note: 命令執行i 會在你的本機下 ~/.kube/config 建立組態檔案,也稱為 kubeconfig。kubeconfig 包含有關 Amazon EKS 叢集的詳細資訊,包括叢集名稱和身分驗證方法
等待並確認是否安裝cluster成功
開始建立
你會看到你的EKS建立一個新的集群出來了
點選cluster進去,會看到node是你所開的機器類型
再到EC2就會看到你剛建立的group
如果你建立的是fargate類型,那就不會看到EC2開立
基本上以上確認就算是成功了~接下來我們來試試看一個簡單的例子,放上k8s裡吧
建立ECR的image
- 用之前gcp的簡單範例,建立image
1 | vi Dockerfile |
1 | FROM node:6.9.2 |
1 | $ docker build -t 185271018684.dkr.ecr.us-east-2.amazonaws.com/hello-node:v1 . |
- 擷取上方的 repositoryUri 值,並建立tag。
1 | $ docker tag hello-node:v1 185271018684.dkr.ecr.us-east-2.amazonaws.com/hello-node:v1 |
執行 aws ecr get-login-password 命令,如此us-west-2 區域的範例中所示
1
aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 185271018684.dkr.ecr.us-west-2.amazonaws.com/hello-node:v1
push
1
docker push 185271018684.dkr.ecr.us-east-2.amazonaws.com/hello-node:v1
你可以到ECR畫面中確認,應該已經出現hello-node:v1,把URI位置複製下來吧~
Note: Mac M1下build的image會有問題,請務必使用linux系統編譯
執行kubectl,讓image進入k8s
1 | apiVersion: apps/v1 |
建立k8s deployment
1 | kubectl apply -f deployment-hello.yaml |
建立service,AWS會自動給予LB endpoint
1 | kubectl expose deployment web-deployment --type=LoadBalancer --name=demo-aws-service --port 8080 |
執行連結