Kubernetes POD與NodePort服務釋出

劉磊 Ryan發表於2021-01-03

查詢最新發布規範樣例,可以在官方文件中找到。K8S API Reference

POD釋出規範及YAML檔案

本YAML檔案以釋出映象petclinic為例。
大小寫需要嚴謹。縮排為兩個空格。- 為列表格式,代表可以為多個。

假設樣例檔案為:petclinic-pod.yml
內容如下:

apiVersion: v1
kind: Pod
metadata:
  # Pod名字
  name: petclinic
spec:
  containers:
      # 容器名字
    - name: petclinic
      # 映象地址
      image: spring2go/spring-petclinic:1.0.0.RELEASE

官方樣例:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#pod-v1-core

POD釋出命令

登入到K8S Master節點,使用一下命令檢視叢集狀態。

#可以看到K8S內執行的服務/POD.
kubectl get all

#釋出POD, 選項-f後面接要釋出的檔名稱,成功後會顯示一行POD created資訊。
kubectl apply -f petclinic-pod.yml

#再次檢視K8S內執行的服務/POD。
kubectl get all
#可以單獨看pod的資訊, 用pod的名字,pod選擇可以縮寫為po。
kubectl get pod petclinic
kubectl describe pod petclinic

POD埠轉發(僅適用於除錯)

此方法不用於生產環境。

kubectl get po
#前面是本機埠8080轉發到POD埠8080.
kubectl port-forward petclinic 8080:8080

NodePort Service路由YAML檔案

Service 3種型別: NodePort, LoadBalancer(用於公有云), ClusterIP(K8S內的反向代理)
在這裡插入圖片描述

NodePort Service YAML釋出檔案

apiVersion: v1
kind: Service
metadata:
  # Unique key of the Service instance
  name: petclinic
spec:
  ports:
    # Accept traffic sent to port 80
    - name: http
      #是本service的埠,在叢集內部使用
      port: 8080
      #對接的後臺pod的埠,可以不填
      targetPort: 8080
      #在本地開啟31080埠,K8S要求nodePort範圍: 30000 ~ 32767
      nodePort: 31080
  selector:
    # 後臺pod標籤
    app: petclinic
  # 本地環境只能選NodePort,看上面service型別。
  type: NodePort

為了讓服務路由生效,需要調整POD的釋出檔案
修改樣例檔案:petclinic-pod.yml
內容如下:(增加了labels)

apiVersion: v1
kind: Pod
metadata:
  # Pod名字
  name: petclinic
  labels:
    app: petclinic
spec:
  containers:
      # 容器名字
    - name: petclinic
      # 映象地址
      image: spring2go/spring-petclinic:1.0.0.RELEASE

官方參考:
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#service-v1-core

服務釋出命令

#可以看到K8S內執行的服務/POD.
kubectl get all

#釋出當前目錄所有檔案
kubectl apply -f .
#再次檢視K8S內執行的服務/POD。
kubectl get all

#可以單獨看service的資訊, 用service的名字,service選擇可以縮寫為svc。
kubectl describe service petclinic

相關文章