国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【云原生】k8s Service 實現(xiàn)服務(wù)發(fā)現(xiàn)和負載均衡

這篇具有很好參考價值的文章主要介紹了【云原生】k8s Service 實現(xiàn)服務(wù)發(fā)現(xiàn)和負載均衡。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

在容器編排系統(tǒng)中,如 Kubernetes,Pod 是最小的部署單元。而一組 Pod 通常對外提供某種服務(wù)。在 Kubernetes 中,Service 就是用來對外暴露一組 Pod 的服務(wù)的資源對象。Service 可以通過 IP 地址和端口號訪問,從而對外提供服務(wù)。

Service 介紹

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

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

Service 的四種類型及使用方式

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

  • ClusterIP:是 Service 的默認類型,它會為 Service 創(chuàng)建一個 Cluster IP,這個 IP 只能在集群內(nèi)部訪問。通過 ClusterIP,用戶可以訪問該 Service 關(guān)聯(lián)的 Pod。
  • NodePort:在每個節(jié)點上綁定一個端口,從而將 Service 暴露到集群外部。用戶可以通過任意一個節(jié)點的 IP 地址和該端口號來訪問 Service。
  • LoadBalancer:在云廠商提供的負載均衡器上創(chuàng)建一個 VIP,從而將 Service 暴露到集群外部。用戶可以通過該 VIP 地址來訪問 Service。
  • ExternalName:可以將 Service 映射到集群外部的一個 DNS 名稱上,從而將 Service 暴露到集群外部。

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

Service 的定義和使用

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

以下是帶有 selector 和 type 的 YAML 文件定義一個名為 nginx 的 Service,將服務(wù)的 80 端口轉(zhuǎn)發(fā)到 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。

以下是通過命令創(chuàng)建及查看創(chuàng)建的服務(wù)情況的操作步驟和預(yù)期的展示內(nèi)容。

通過命令創(chuàng)建服務(wù)

  1. 使用 kubectl create 命令創(chuàng)建一個名為 nginx 的服務(wù),并將服務(wù)的 80 端口轉(zhuǎn)發(fā)到 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 文件,其中包含了創(chuàng)建 Service 所需的配置信息。

預(yù)期展示內(nèi)容:

service/nginx created (dry run)
  1. 使用 kubectl apply 命令創(chuàng)建 Service。運行以下命令:
kubectl apply -f nginx-service.yaml

這個命令將根據(jù) YAML 文件中的配置信息創(chuàng)建一個名為 nginx 的 Service。

預(yù)期展示內(nèi)容:

service/nginx created

查看創(chuàng)建的服務(wù)情況

  1. 使用 kubectl get 命令查看已經(jīng)創(chuàng)建的 Service。運行以下命令:
kubectl get services

這個命令將顯示所有已經(jīng)創(chuàng)建的 Service,包括它們的名稱、類型、Cluster IP、端口等信息。
預(yù)期展示內(nèi)容:

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP    4h19m
nginx        ClusterIP   10.96.58.173   <none>        80/TCP     1m
  1. 使用 kubectl describe 命令查看指定 Service 的詳細信息。運行以下命令:
kubectl describe service nginx

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

預(yù)期展示內(nèi)容:

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 的服務(wù)

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

Headless 服務(wù)

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

Service 工作原理及原理圖

Service 的工作原理是通過代理模式實現(xiàn)的,即 kube-proxy 負責將 service 負載均衡到后端 Pod 中。
當用戶通過 Service 的 IP 和端口訪問 Service 時,請求會先到達 Service 代理,然后由代理將請求轉(zhuǎn)發(fā)給后端的 Pod。
當 Pod 發(fā)生變化時,Service 會自動更新 Endpoint,從而保證請求能夠正確地到達后端 Pod。
以下是 Service 工作原理的原理圖:
【云原生】k8s Service 實現(xiàn)服務(wù)發(fā)現(xiàn)和負載均衡

Ingress 講解

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

集群外部如何訪問服務(wù)

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

  • NodePort

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

  • LoadBalancer

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

  • Ingress

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

總結(jié)

以上是關(guān)于 Kubernetes 中的 Service 的介紹,包括 Service 介紹和定義、Service 的四種類型 Service 工作原理、Ingress 講解以及集群外部如何訪問服務(wù)。

在使用 Service 時,用戶不需要關(guān)心 Pod 的具體 IP 地址和端口號,也不需要擔心 Pod 的數(shù)量變化會影響服務(wù)的訪問。

通過 Ingress,用戶可以在集群外部定義一個域名,然后將該域名路由到 Service 中,從而實現(xiàn)灰度發(fā)布、負載均衡、SSL 終止等功能。文章來源地址http://www.zghlxwxcb.cn/news/detail-415437.html

到了這里,關(guān)于【云原生】k8s Service 實現(xiàn)服務(wù)發(fā)現(xiàn)和負載均衡的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 持續(xù)集成部署-k8s-服務(wù)發(fā)現(xiàn)-Service

    在K8s中, Service 是一種可以暴露一個或多個 Pod 的穩(wěn)定的網(wǎng)絡(luò)終點,從而形成邏輯上的應(yīng)用服務(wù)單元,為服務(wù)發(fā)現(xiàn)、負載均衡、容錯等提供了基礎(chǔ)設(shè)施支持。 Service 的主要作用包括以下幾個方面: 1. 實現(xiàn)內(nèi)部服務(wù)發(fā)現(xiàn) :在K8s中,往往會有多個 Pod 運行同一種應(yīng)用服務(wù), Servi

    2024年02月08日
    瀏覽(20)
  • k8s-服務(wù)發(fā)現(xiàn)service和ingress

    k8s-服務(wù)發(fā)現(xiàn)service和ingress

    回到目錄 service用于集群內(nèi)部應(yīng)用的網(wǎng)絡(luò)調(diào)用,處理東西流量 ingress用于集群外部用戶訪問內(nèi)部服務(wù),處理南北流量 kubernetes集群中有三層網(wǎng)絡(luò),一類是真實存在的,例如Node Network、Pod Network,提供真實IP地址;一類是虛擬的,例如Cluster Network或Service Network,提供虛擬IP地址,不會

    2024年02月14日
    瀏覽(19)
  • Kubernetes(k8s)服務(wù)service:service的發(fā)現(xiàn)和service的發(fā)布

    目錄 一.系統(tǒng)環(huán)境 二.前言 三.Kubernetes service簡介 四.使用hostPort向外界暴露應(yīng)用程序 4.1 創(chuàng)建deploy 4.2 使用hostPort向外界暴露pod的端口 五.使用service服務(wù)向外界暴露應(yīng)用程序 5.1 使用service服務(wù)向外界暴露pod 5.1.1 創(chuàng)建service服務(wù) 5.1.2 測試svc的負載均衡 六.service服務(wù)的發(fā)現(xiàn) 6.1 使用

    2024年02月08日
    瀏覽(21)
  • k8s服務(wù)發(fā)現(xiàn)之第一彈Service概述

    Kubernetes 中 Pod 是隨時可以消亡的(節(jié)點故障、容器內(nèi)應(yīng)用程序錯誤等原因)。如果使用 Deployment 運行您的應(yīng)用程序,Deployment 將會在 Pod 消亡后再創(chuàng)建一個新的 Pod 以維持所需要的副本數(shù)。每一個 Pod 有自己的 IP 地址,然而,對于 Deployment 而言,對應(yīng) Pod 集合是動態(tài)變化的。

    2024年02月12日
    瀏覽(16)
  • k8s服務(wù)發(fā)現(xiàn)之第二彈Service詳解

    k8s服務(wù)發(fā)現(xiàn)之第二彈Service詳解

    Kubernetes Servies 是一個 RESTFul 接口對象,可通過 yaml 文件創(chuàng)建。 例如,假設(shè)您有一組 Pod: 每個 Pod 都監(jiān)聽 9376 TCP 端口 每個 Pod 都有標簽 app=MyApp 上述 YAML 文件可用來創(chuàng)建一個 Service: 名字為 my-service 目標端口為 TCP 9376 選取所有包含標簽 app=MyApp 的 Pod 關(guān)于 Service,您還需要了解

    2024年02月16日
    瀏覽(19)
  • 【 云原生 | K8S 】部署 CNI 網(wǎng)絡(luò)組件+k8s 多master集群部署+負載均衡及Dashboard k8s儀表盤圖像化展示管理

    【 云原生 | K8S 】部署 CNI 網(wǎng)絡(luò)組件+k8s 多master集群部署+負載均衡及Dashboard k8s儀表盤圖像化展示管理

    目錄 1 部署 CNI 網(wǎng)絡(luò)組件 1.1 部署 flannel 1.2 部署 Calico 1.3 部署 CoreDNS 2 負載均衡部署 3 部署 Dashboard K8S 中 Pod 網(wǎng)絡(luò)通信: ●Pod 內(nèi)容器與容器之間的通信 在同一個 Pod 內(nèi)的容器(Pod 內(nèi)的容器是不會跨宿主機的)共享同一個網(wǎng)絡(luò)命令空間,相當于它們在同一臺機器上一樣,可以用

    2024年01月22日
    瀏覽(31)
  • k8s服務(wù)發(fā)現(xiàn)之第五彈--使用 Service 連接到應(yīng)用

    通過前面教程的學(xué)習(xí),我們已經(jīng)可以將容器化的應(yīng)用程序在 Kubernetes 中運行起來,并且發(fā)布到 Kubernetes 內(nèi)/外的網(wǎng)絡(luò)上。 通常,Docker 使用一種 host-private 的聯(lián)網(wǎng)方式,在此情況下,只有兩個容器都在同一個節(jié)點(主機)上時,一個容器才可以通過網(wǎng)絡(luò)連接另一個容器。為了使

    2024年02月15日
    瀏覽(46)
  • 持續(xù)集成部署-k8s-服務(wù)發(fā)現(xiàn)-Service:Service、Endpoint、Pod之間的關(guān)系與原理

    在 Kubernetes 中, Service 是一種抽象的邏輯概念,用于將一組具有相同功能的 Pod 組合成一個邏輯服務(wù)。 Service 提供了一種穩(wěn)定的 IP 地址和 DNS 域名,供客戶端訪問這個邏輯服務(wù)。同時, Service 還提供了負載均衡、會話保持等功能,可以很方便地實現(xiàn)服務(wù)發(fā)現(xiàn)與調(diào)用。 在 Kuber

    2024年02月06日
    瀏覽(35)
  • k8s服務(wù)發(fā)現(xiàn)(service discovery)常用的兩種方式Nodeport和ClusterIP

    k8s服務(wù)發(fā)現(xiàn)(service discovery)常用的兩種方式Nodeport和ClusterIP

    NodePort: 主要特點: 為Service在每個節(jié)點上分配一個固定的端口(NodePort),允許外部流量通過節(jié)點的IP地址和NodePort訪問Service。 NodePort將流量從集群外部引入到Service內(nèi)部。 Service類型為NodePort時,還會創(chuàng)建一個ClusterIP,但它只是一個內(nèi)部的ClusterIP,通常不會直接使用。 使用場

    2024年02月05日
    瀏覽(26)
  • Spring Cloud Gateway使用K8S (Kubernetes)的云原生服務(wù)發(fā)現(xiàn)

    Spring Cloud Gateway通常使用注冊中心作為服務(wù)發(fā)現(xiàn),但在Kubernetes里面,由于K8S已經(jīng)集成了服務(wù)注冊與發(fā)現(xiàn)功能,不必要再另外使用注冊中心了,而且,還可以使用K8S的服務(wù)監(jiān)控對服務(wù)進行監(jiān)控。 本來按照網(wǎng)上教程,升級到最新版的springboot3.x,結(jié)果發(fā)現(xiàn)無法發(fā)現(xiàn)服務(wù)。后來按著

    2024年04月22日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包