iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0
DevOps

從煉獄走到天堂的AWS DevOps 工具及應用開發大進擊系列 第 25

應用程式快速更新還原,讓服務持續運作不中斷,公司財源滾滾,老闆開心,大家開心

財源滾滾

今日會詳細講解Service和Deployment的功能

Service

在[Day22]有使用port-forward的方式,讓local端的機器可以在browser上瀏覽想要的pod上,但這樣只有自己才可以看到,當正式環境要上線時,就需要有一個通道可以access到pod做溝通,所以在[Day24]使用Service這個抽象層,透過EC2的DNS Name訪問對應的pod,而node、service和pod的對應關係,請看下面這張圖:
https://ithelp.ithome.com.tw/upload/images/20211009/20140172wUsvfXFQw3.png
從圖上很清楚地可以看到元件彼此的關係。此篇的Service Type,以NodePort為主,接下來說明YAML

apiVersion: v1
kind: Service

metadata:
  name: web-service
  labels:
    app: web-demo

spec:
  selector:
    name: web-demo
  type: NodePort
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 80
      nodePort: 30001

selector: 會去尋找Pod的label為web-demo去做連結,產生一個Endpoint才可以去access
nodePort: 在Node(EC2)上開啟一個Port,讓Internet的User可以透過這個Port access到後面的應用程式
Port: 將nodePort和targetPort做mapping,進行串流
targetPort: 開啟Pod上的Port,讓其他服務可以訪問

Deployment

若應用程式是不容許中斷服務,那就會需要有HA的方式去維護。在Kubernetes有Controller Object這個概念,而Deployment就是其中一種,透過Deployment去控制多個Pod,甚至是當Pod壞掉,會自動新增Pod來滿足YAML裡replicas數量。
當Container或應用程式要做更新時,不需要把現有的Pod砍掉,在Deployment會先啟動新的Pod才把舊Pod砍掉,執行RollingUpdate/RollingBack
在Deployment底下的Pod也可以做橫向擴展,產生更多的Pod去運作應用程式

Deployment YAML描述

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      name: itdemo
  template:
    metadata:
      labels:
        name: itdemo
    spec:
      containers:
      - name: itdemo
        image: johnson860312/awswebdb
        resources:
          limits:
            memory: "256Mi"
            cpu: "128m"
        ports:
          - containerPort: 80

replicas: 決定Pod的數量。若有Pod掛掉,也會啟動新的Pod等於設定的數量
template: 創建的Pod都會依照模板去設定
matchLabels: 符合{“key”:”value”}這個組合去建立Pod

刪除Pod,然後EKS會自動啟動新的Pod
https://ithelp.ithome.com.tw/upload/images/20211009/20140172f2l6NnJet4.png
https://ithelp.ithome.com.tw/upload/images/20211009/20140172SrQEaAM9KD.png

更換Container

筆者使用Windows所以執行kubectl edit有些問題,所以這邊就使用Lens這套工具
https://ithelp.ithome.com.tw/upload/images/20211009/20140172r6hRCj12yg.png
https://ithelp.ithome.com.tw/upload/images/20211009/20140172ZcCb4YoV0B.png
https://ithelp.ithome.com.tw/upload/images/20211009/20140172Tzvw8Ldh23.png

執行還原,恢復原本的Container
https://ithelp.ithome.com.tw/upload/images/20211009/20140172nRcDnzGlYq.png
https://ithelp.ithome.com.tw/upload/images/20211009/20140172pwiYnrOfMH.png

此篇就介紹到這邊,明天會講Ingress的部分


上一篇
給客戶提供優質服務並驗證服務,讓客戶感覺有被重視
下一篇
順著藏寶圖的指示,可以尋獲龐大的財富
系列文
從煉獄走到天堂的AWS DevOps 工具及應用開發大進擊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言