k8s service定義與建立
阿新 • • 發佈:2021-11-01
1. k8s-service定義與建立
-
建立service:
kubectl apply -f service.yaml
-
檢視service:
kubectl get service
-
示例程式碼
apiVersion: v1 kind: Service metadata: labels: app: web name: web spec: type: ClusterIP # 服務型別 ports: - port: 80 # Service埠 protocol: TCP # 協議 targetPort: 80 # 容器埠 selector: app: web # 指定關聯Pod的標籤
-
多埠service配置
對於某些服務,你需要公開多個埠。 Kubernetes 允許你在 Service 物件上配置多個埠定義。 為服務使用多個埠時,必須提供所有埠名稱,以使它們無歧義。 例如:
apiVersion: v1 kind: Service metadata: name: web spec: selector: app: web # 指定關聯Pod的標籤 type: ClusterIP # 服務型別 ports: - name: http # 容器名稱 protocol: TCP # 協議 port: 80 # Service埠 targetPort: 80 # 容器埠 - name: https # 容器名稱定義 protocol: TCP # 配置協議 port: 443 # service埠 targetPort: 443 # 容器埠
2. 案例
-
我們先啟動一個pod容器
[root@k8s-master deployment]# vim web.yaml [root@k8s-master deployment]# cat web.yaml apiVersion: apps/v1 kind: Deployment metadata: name: web namespace: default annotations: # 記錄回滾引數 kubernetes.io/change-cause: "web.v1-nginx-1.19" #記錄到revision中的內容,記錄版本號 spec: replicas: 3 # Pod副本預期數量 revisionHistoryLimit: 10 # RS歷史版本儲存數量 selector: matchLabels: app: web strategy: rollingUpdate: maxSurge: 25% # 滾動更新過程最大pod副本數 maxUnavailable: 25% # 滾動更新過程中最大不可用pod副本數, type: RollingUpdate template: metadata: labels: app: web # Pod副本的標籤 spec: containers: - name: web image: nginx:1.16 readinessProbe: # 存活檢查,如果失敗,將殺死容器,來重啟 httpGet: port: 80 path: /index.html initialDelaySeconds: 10 #啟動容器後多少秒健康檢查 periodSeconds: 10 #以後間隔多少秒檢查一次 livenessProbe: # 就緒檢查,失敗就會剔除 service httpGet: port: 80 path: /index.html
-
啟動pod服務
[root@k8s-master deployment]# kubectl apply -f web-ClusterIP.yaml deployment.apps/web unchanged
-
使用service服務,暴露web應用
[root@k8s-master service]# vim web-ClusterIP.yaml [root@k8s-master service]# cat web-ClusterIP.yaml apiVersion: v1 kind: Service metadata: labels: app: web name: web spec: type: ClusterIP # 服務型別 ports: - port: 80 # Service埠 protocol: TCP # 協議 targetPort: 80 # 容器埠 selector: app: web # 指定關聯Pod的標籤
-
啟動service服務
[root@k8s-master service]# kubectl apply -f web-ClusterIP.yaml service/web created
-
檢視service服務
[root@k8s-master service]# kubectl get serviceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d5hprobe-demo ClusterIP 10.104.161.168 <none> 80/TCP 3d6hweb ClusterIP 10.100.222.42 <none> 80/TCP 33s