iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0

接著我們要來介紹同樣基本的 Service 。

通常大部分的服務都需要有資訊輸入及輸出,例如網頁前後端、資料庫之類的,而我們的 Pod 在啟動時都會有個 IP 由 Kubernetes 自動分配,那麼問題就來了,我們不知道每次分配的 IP ,那我們要如何存取我們的服務呢?

Kubernetes 當然早就想到這一點,因此提供了同樣基本的 Service 供我們連接我們的服務。

還是一樣,我們同樣要寫個 YAML 檔來建立我們的服務,這次我們使用 nginx 來示範。

service.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
  labels:
    app: nginx-pod  # 這邊的 Label ,key 跟 value 基本上隨便取即可。
spec:
  containers:
    - name: nginx
      image: nginx
      ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-nodeport-service
spec:
  type: NodePort
  selector:
    app: nginx-pod  # 要跟這邊對應
  ports:
    - name: nginx
      port: 3306
      targetPort: 80
      nodePort: 30000  # 30000 ~ 32767

這邊我們的 Pod 使用 Nginx 並且開啟 Port 80 ,接著我們的 Service 使用 Port 3306 去連接 Pod 的 Port 80 ,並且在所有 Node 上開啟 Port 30000 供外部連線, NodePort 是指我們的 Service 會在所有 Worker Node 上開放同樣的 nodePort 供外部連線,否則預設只有提供給 Kubernetes 內部做連線。

以及不能忘記的我們的 Pod 需要先使用 Label 做個標記,並且 Service 會使用 Label Selector 去選擇對應 Label 的 Pod 做連線。

這樣我們的 Service 就做好了,接著我們就使用以下指令來讓我們的服務建立起來。

$ kubectl apply -f service.yaml

我們的服務建立起來之後,就可以再任意一台機器上(Master 或 Worker)透過瀏覽器在 http://localhost:30000 瀏覽我們建立起來的服務了。

如果要查看我們所有的 Service ,可以透過以下指令。

$ kubectl get service
# or
$ kubectl get svc

更詳細的設定可參考 官方文件

那麼就先到這邊,因為是面向新手的教學,因此暫時沒有講到比較細節的東西。

大家掰~掰~


上一篇
Day 17 Pod
下一篇
Day 19 Volume, PersistentVolume & PersistentVolumeClaim
系列文
30天漫遊雲端之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言