iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
DevOps

用K8s打造你的Youtube系列 第 9

deployment 跟 service

  • 分享至 

  • xImage
  •  

前面都是直接實作,我們現在要來談談K8S的兩大主力,deployment 跟 service。

首先是 deployment,他是用來定義pods跟 replica set的

我們直接看檔案

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ecsdemo-nodejs
  labels:
    app: ecsdemo-nodejs
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ecsdemo-nodejs
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: ecsdemo-nodejs
    spec:
      containers:
      - image: brentley/ecsdemo-nodejs:latest
        imagePullPolicy: Always
        name: ecsdemo-nodejs
        ports:
        - containerPort: 3000
          protocol: TCP
  1. apiVersion指的是K8S的版本號

  2. metadata - name 指的是這個pod的名稱

  3. metadata - label 是K8S核心元件,K8s 會透過 Label Selector 將Pod分群管理

  4. metadata - annotations 跟label很像,但是給外部查找用的。有點像是runner標籤。通常會是版本號或發佈日期

  5. spec是定義container,如果你有兩個container你也可以這樣寫

    • 範例

      spec:
      
        containers:
      
          - name: front-end
      
            image: nginx
      
            ports:
      
              - containerPort: 80
      
          - name: rss-reader
      
            image: nickchase/rss-php-nginx:v1
      
            ports:
      
              - containerPort: 88
      
  6. spec replicas 這是管理一群pods的replicas。設定的方法我們又稱作ReplicaSet。如果replicas:2,代表的是不碖哪個pod要被deploy,我都希望他有兩個replicas。但你如果只這樣設定,他並不知道你要怎樣的replica,所以我們要在詳細描述。你會發現看起來很眼熟,沒錯,他跟你單獨定義pods很像。

  7. spec - template 是定義哪些物件被replica

  8. spec - label 。這邊我們在Deployment跟 template都有定義app:web,並且在selector定義了matchLabels。指的是我們指定哪些對像是部署的一部分

  9. spec - container - imagePullPolicy 每當K8s啟動pod時,會去檢查container的repo,並將名稱解攜為摘要。如果k8s有容器image且摘要有在本地緩存,K8s會使用其緩存的image。如果沒有就會重新拉

上面是deployment的檔案介紹,如果你想啟用這份deployment檔案,我們可以輸入指令

kubectl apply -f kubernetes/deployment.yaml

上一篇
從本地端連線回EKS
下一篇
Service
系列文
用K8s打造你的Youtube13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言