iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
DevOps

第一次參賽就學 Kubernetes系列 第 19

[Day 19] 在 AWS 部署 Kubernetes 叢集 (三) - 使用 kops 在 AWS 上部署叢集 (部署程式)

  • 分享至 

  • xImage
  •  

接著在叢集上部署 nginx。


部署應用程式

先查看目前叢集的狀況。

kubectl get nodes

NAME                  STATUS   ROLES           AGE   VERSION
i-06e28e09e8c59e824   Ready    node            36m   v1.28.4
i-075493dae795c7a24   Ready    control-plane   38m   v1.28.4
i-0c00cf6b2e7b64548   Ready    node            36m   v1.28.4

建立 deployment

建立完 AWS 叢集後,試著在叢集上建立應用程式。這邊使用到在 k8s 上的範例

執行以下指令。

kubectl apply -f https://k8s.io/examples/application/deployment.yaml

deployment.apps/nginx-deployment created

查看一下 deployment 裡的 pods。

kubectl get po

NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-86dcfdf4c6-hf4pr   1/1     Running   0          28s
nginx-deployment-86dcfdf4c6-xf7zf   1/1     Running   0          28s

建立 service

再來,必須建立一個 Service 讓應用程式可以被外界(瀏覽器)存取,參考 k8s 範例

執行以下指令,建立一個 loadbalancer 類型的 Service,之後透過 External-IP 可讓外界存取到 pods 中的應用程式。

kubectl expose deployment nginx-deployment --type=LoadBalancer --name=my-service

查看一下 Services,可以看到 my-service 的 EXTERNAL-IP

kubectl get svc

NAME         TYPE           CLUSTER-IP       EXTERNAL-IP                                                            PORT(S)        AGE
kubernetes   ClusterIP      100.64.0.1       <none>                                                                 443/TCP        39m
my-service   LoadBalancer   100.67.249.213   a62b26710f3114ddc9c9fcd38cff7725-7155824.us-east-1.elb.amazonaws.com   80:32248/TCP   5s

在瀏覽器上輸入 IP 位址可存取到應用程式。

https://ithelp.ithome.com.tw/upload/images/20240103/201625110zmbIOGFjU.png

或是使用以下指令。

# curl http://<external-ip>:<port>

curl http://a62b26710f3114ddc9c9fcd38cff7725-7155824.us-east-1.elb.amazonaws.com:80
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   612  100   612    0     0    773      0 --:--:-- --:--:-- --:--:--   772<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

刪除 deployment、service

測試完畢後刪除剛剛建立好的資源。

kubectl delete svc my-service
kubectl delete deploy nginx-deployment

service "my-service" deleted
deployment.apps "nginx-deployment" deleted

刪除叢集

每次使用完叢集後,都記得將其刪除才不會產生額外的費用。

kops delete cluster --name ${NAME} --yes

...
Deleted cluster: "mycluster.k8s.local"

刪除 S3 bucket

前往 AWS 主控台刪除 S3 bucket,有 State store 與 OIDC store。必須先清空內容後,才能進行移除。

其他延伸

後續會想要自訂一個應用程式,建立一個叢集在上面跑,而不是使用現行官網上的範例。另外就是要設定 DNS 而不是建立一個 gossip-based 的叢集。


參考來源

  1. DevOps Tutorials | How to create Kubernetes cluster on AWS using kOps and S3 Storage | AWS Tutorial

上一篇
[Day 18] 在 AWS 部署 Kubernetes 叢集 (二) - 使用 kops 在 AWS 上部署叢集 (建立叢集)
下一篇
[Day 20] Label & Selector
系列文
第一次參賽就學 Kubernetes30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言