亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

k8s?Service怎么實現服務發現和負載均衡

發布時間:2023-05-08 16:44:36 來源:億速云 閱讀:136 作者:iii 欄目:開發技術

這篇文章主要介紹了k8s Service怎么實現服務發現和負載均衡的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇k8s Service怎么實現服務發現和負載均衡文章都會有所收獲,下面我們一起來看看吧。

Service 介紹

Service 是 Kubernetes 中一個非常重要的概念,它可以將一組 Pod 封裝成一個邏輯服務單元。

Service 可以通過定義的 Label Selector,將一組 Pod 綁定到一起,形成一個 Service。通過 Service,用戶可以方便地訪問這個服務,不需要關心 Pod 的具體 IP 地址和端口號,也不需要擔心 Pod 的數量變化會影響服務的訪問。

Service 的四種類型及使用方式

Kubernetes 中的 Service 一共有四種類型,分別是 ClusterIP、NodePort、LoadBalancer 和 ExternalName。

  • ClusterIP:是 Service 的默認類型,它會為 Service 創建一個 Cluster IP,這個 IP 只能在集群內部訪問。通過 ClusterIP,用戶可以訪問該 Service 關聯的 Pod。

  • NodePort:在每個節點上綁定一個端口,從而將 Service 暴露到集群外部。用戶可以通過任意一個節點的 IP 地址和該端口號來訪問 Service。

  • LoadBalancer:在云廠商提供的負載均衡器上創建一個 VIP,從而將 Service 暴露到集群外部。用戶可以通過該 VIP 地址來訪問 Service。

  • ExternalName:可以將 Service 映射到集群外部的一個 DNS 名稱上,從而將 Service 暴露到集群外部。

另外,也可以將已有的服務以 Service 的形式加入到 Kubernetes 集群中來,只需要在創建 Service 的時候不指定 Label selector,而是在 Service 創建好后手動為其添加 endpoint。

Service 的定義和使用

Service 也是可以通過 yaml 來定義的。

以下是帶有 selector 和 type 的 YAML 文件定義一個名為 nginx 的 Service,將服務的 80 端口轉發到 default namespace 中帶有標簽 run=nginx 的 Pod 的 80 端口:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    run: nginx
  type: ClusterIP
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

其中,type 為 Service 的類型,可以取值為 ClusterIP、NodePort、LoadBalancer 和 ExternalName。

本例中的 type 為 ClusterIP,表示該 Service 的類型為 ClusterIP。

以下是通過命令創建及查看創建的服務情況的操作步驟和預期的展示內容。

通過命令創建服務

使用 kubectl create 命令創建一個名為 nginx 的服務,并將服務的 80 端口轉發到 default namespace 中帶有標簽 run=nginx 的 Pod 的 80 端口。運行以下命令:

kubectl create service clusterip nginx --tcp=80:80 --dry-run=client -o yaml > nginx-service.yaml

這個命令將在當前目錄下生成一個名為 nginx-service.yaml 的 YAML 文件,其中包含了創建 Service 所需的配置信息。

預期展示內容:

service/nginx created (dry run)

使用 kubectl apply 命令創建 Service。運行以下命令:

kubectl apply -f nginx-service.yaml

這個命令將根據 YAML 文件中的配置信息創建一個名為 nginx 的 Service。

預期展示內容:

service/nginx created

查看創建的服務情況

使用 kubectl get 命令查看已經創建的 Service。運行以下命令:

kubectl get services

這個命令將顯示所有已經創建的 Service,包括它們的名稱、類型、Cluster IP、端口等信息。

預期展示內容:

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP    4h29m
nginx        ClusterIP   10.96.58.173   <none>        80/TCP     1m

使用 kubectl describe 命令查看指定 Service 的詳細信息。運行以下命令:

kubectl describe service nginx

這個命令將顯示名為 nginx 的 Service 的詳細信息,包括它的類型、Cluster IP、端口、Selector 等信息。

預期展示內容:

Name:              nginx
Namespace:         default
Labels:            run=nginx
Annotations:       <none>
Selector:          run=nginx
Type:              ClusterIP
IP:                10.96.58.173
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.0.7:80
Session Affinity:  None
Events:            <none>

不指定 Selectors 的服務

當用戶創建 Service 的時候,可以不指定 Label Selector,這種 Service 被稱為無選擇器服務(no selector service)。無選擇器服務不能和 Pod 綁定,而只是提供一個固定的 IP 和端口,用于訪問后端服務。這種服務通常用于代理到外部的服務,如數據庫、消息隊列等。

Headless 服務

Kubernetes 中的 Service 還有一個特殊的類型,叫做 Headless 服務。Headless 服務的 ClusterIP 為 None,它不會為 Service 創建 Cluster IP。通過 Headless 服務,用戶可以直接訪問該 Service 關聯的 Pod,而不需要通過 Service 進行訪問。

Service 工作原理及原理圖

Service 的工作原理是通過代理模式實現的,即 kube-proxy 負責將 service 負載均衡到后端 Pod 中。

當用戶通過 Service 的 IP 和端口訪問 Service 時,請求會先到達 Service 代理,然后由代理將請求轉發給后端的 Pod。

當 Pod 發生變化時,Service 會自動更新 Endpoint,從而保證請求能夠正確地到達后端 Pod。

以下是 Service 工作原理的原理圖:

k8s?Service怎么實現服務發現和負載均衡

Ingress 講解

Ingress 是 Kubernetes 中另一個重要的資源對象,它用于將集群外部的 HTTP(S) 流量路由到集群內部的 Service。通過 Ingress,用戶可以在集群外部定義一個域名,然后將該域名路由到 Service 中。Ingress 可以實現灰度發布、負載均衡、SSL 終止等功能。

集群外部如何訪問服務

當用戶需要從集群外部訪問 Kubernetes 中的 Service 時,可以通過 NodePort、LoadBalancer 或 Ingress 來實現。具體方式如下:

  • NodePort

用戶可以通過任意一個節點的 IP 地址和該節點上綁定的端口號來訪問 Service。例如,如果 NodePort 的端口為 30080,節點 IP 地址為 192.168.0.10,則用戶可以通過 http://192.168.0.10:30080 訪問該 Service。

  • LoadBalancer

當 Service 的類型為 LoadBalancer 時,云廠商會在其提供的負載均衡器上為 Service 創建一個 VIP,用戶可以通過該 VIP 地址來訪問 Service。

  • Ingress

通過 Ingress,用戶可以在集群外部定義一個域名,并將該域名路由到 Service 中。用戶可以通過該域名來訪問 Service。

關于“k8s Service怎么實現服務發現和負載均衡”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“k8s Service怎么實現服務發現和負載均衡”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇平县| 拜泉县| 临颍县| 安岳县| 志丹县| 九龙县| 高邮市| 临朐县| 大港区| 南郑县| 衡水市| 江津市| 搜索| 柳河县| 开江县| 宝鸡市| 克什克腾旗| 三穗县| 朝阳市| 江阴市| 万年县| 信丰县| 鄱阳县| 嘉定区| 容城县| 巴青县| 罗定市| 蒙城县| 大连市| 德钦县| 浦县| 同江市| 定兴县| 奎屯市| 日照市| 常德市| 平安县| 依兰县| 北海市| 三原县| 鞍山市|