最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡

 更新時(shí)間:2023年04月10日 08:51:47   作者:路由器沒有路  
這篇文章主要為大家介紹了k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡的工作原理及使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

本文將介紹 Kubernetes 的資源對象 Service,內(nèi)容包括 Service 介紹、Service 的四種類型及使用方式、不指定 Selectors 的服務(wù)、Headless 服務(wù)、Service 工作原理及原理圖。同時(shí)也會(huì)講解 Ingress 和集群外部如何訪問服務(wù)。

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

Service 介紹

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

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

Service 的四種類型及使用方式

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

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

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

Service 的定義和使用

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

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

使用 kubectl create 命令創(chuàng)建一個(gè)名為 nginx 的服務(wù),并將服務(wù)的 80 端口轉(zhuǎn)發(fā)到 default namespace 中帶有標(biāo)簽 run=nginx 的 Pod 的 80 端口。運(yùn)行以下命令:

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

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

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

service/nginx created (dry run)

使用 kubectl apply 命令創(chuàng)建 Service。運(yùn)行以下命令:

kubectl apply -f nginx-service.yaml

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

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

service/nginx created

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

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

kubectl get services

這個(gè)命令將顯示所有已經(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

使用 kubectl describe 命令查看指定 Service 的詳細(xì)信息。運(yùn)行以下命令:

kubectl describe service nginx

這個(gè)命令將顯示名為 nginx 的 Service 的詳細(xì)信息,包括它的類型、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ù)

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

Headless 服務(wù)

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

Service 工作原理及原理圖

Service 的工作原理是通過代理模式實(shí)現(xiàn)的,即 kube-proxy 負(fù)責(zé)將 service 負(fù)載均衡到后端 Pod 中。

當(dāng)用戶通過 Service 的 IP 和端口訪問 Service 時(shí),請求會(huì)先到達(dá) Service 代理,然后由代理將請求轉(zhuǎn)發(fā)給后端的 Pod。

當(dāng) Pod 發(fā)生變化時(shí),Service 會(huì)自動(dòng)更新 Endpoint,從而保證請求能夠正確地到達(dá)后端 Pod。

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

Ingress 講解

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

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

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

  • NodePort

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

  • LoadBalancer

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

  • Ingress

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

總結(jié)

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

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

通過 Ingress,用戶可以在集群外部定義一個(gè)域名,然后將該域名路由到 Service 中,從而實(shí)現(xiàn)灰度發(fā)布、負(fù)載均衡、SSL 終止等功能。

以上就是k8s Service 實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡的詳細(xì)內(nèi)容,更多關(guān)于k8s Service服務(wù)發(fā)現(xiàn)負(fù)載均衡的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何在 K8S 中使用 Values 文件定制不同環(huán)境下的應(yīng)用配置

    如何在 K8S 中使用 Values 文件定制不同環(huán)境下的應(yīng)用配置

    Kubernetes是一個(gè)開源的容器編排平臺(tái),它可以自動(dòng)化容器的部署、擴(kuò)展和管理,在 K8s 中,應(yīng)用程序通常以容器的形式運(yùn)行,這些容器被組織在不同的資源對象中,這篇文章主要介紹了如何在 K8S 中使用 Values 文件定制不同環(huán)境下的應(yīng)用配置,需要的朋友可以參考下
    2025-03-03
  • 云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解

    云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解

    這篇文章主要介紹了云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用K8S,感興趣的朋友可以了解下
    2021-03-03
  • K8s搭建Jenkins的詳細(xì)教程(附源代碼)

    K8s搭建Jenkins的詳細(xì)教程(附源代碼)

    Jenkins 是一個(gè)開源的自動(dòng)化服務(wù)器,主要用于持續(xù)集成和持續(xù)交付,這篇文章主要來和大家介紹一下如何在K8s中搭建Jenkins,有需要的可以了解下
    2025-03-03
  • K8S部署Kafka界面管理工具(kafkamanager)方法詳解

    K8S部署Kafka界面管理工具(kafkamanager)方法詳解

    這篇文章主要介紹了K8S部署Kafka界面管理工具(kafkamanager)方法詳解,需要的朋友可以參考下
    2022-01-01
  • Istio 自動(dòng)注入 sidecar 失敗導(dǎo)致無法訪問webhook服務(wù)的解決方法

    Istio 自動(dòng)注入 sidecar 失敗導(dǎo)致無法訪問webhook服務(wù)的解決方法

    最近工作中在部署Istio環(huán)境的過程中發(fā)現(xiàn)官方示例啟動(dòng)的pod不能訪問不到Istio的webhook,這個(gè)問題也是困擾了我一天,我把他歸類到sidecar注入失敗的情況下,本文給大家分享問題解決方法,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 使用sealos快速搭建K8s集群環(huán)境的過程

    使用sealos快速搭建K8s集群環(huán)境的過程

    這篇文章主要介紹了使用sealos快速搭建K8s集群環(huán)境,主要包括sealos安裝方法,虛擬機(jī)設(shè)置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • K8S?中?kubectl?命令詳解

    K8S?中?kubectl?命令詳解

    這篇文章主要介紹了K8S?中?kubectl?命令,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • kubernetes(k8s)安裝metrics-server實(shí)現(xiàn)資源使用情況監(jiān)控方式詳解

    kubernetes(k8s)安裝metrics-server實(shí)現(xiàn)資源使用情況監(jiān)控方式詳解

    這篇文章主要介紹了kubernetes(k8s)安裝metrics-server實(shí)現(xiàn)資源使用情況監(jiān)控,包括Metrics?Server下載方式,?k8s集群安裝部署metrics的問題,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • k8s控制deamonset中pod數(shù)量的方法

    k8s控制deamonset中pod數(shù)量的方法

    DaemonSet是Kubernetes中用于確保每個(gè)節(jié)點(diǎn)運(yùn)行一個(gè)Pod副本的控制器,常用于運(yùn)行集群守護(hù)進(jìn)程,通過節(jié)點(diǎn)選擇器、節(jié)點(diǎn)親和性、容忍度和更新策略,可以精確控制Pod的數(shù)量和調(diào)度,本文介紹k8s控制deamonset中pod數(shù)量的方法,感興趣的朋友一起看看吧
    2025-01-01
  • Spark三種屬性配置方式詳解

    Spark三種屬性配置方式詳解

    有時(shí)間還是多學(xué)習(xí)知識比較好,這篇文章主要介紹了Spark三種屬性配置方式詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10

最新評論

佛山市| 务川| 盱眙县| 西畴县| 庆阳市| 越西县| 乌鲁木齐县| 清流县| 衡山县| 阳春市| 进贤县| 玉林市| 伊川县| 牙克石市| 浮梁县| 蚌埠市| 吴江市| 密云县| 奎屯市| 钦州市| 巨野县| 永清县| 砚山县| 巴林右旗| 莆田市| 玉环县| 佛坪县| 定西市| 金溪县| 道孚县| 穆棱市| 永济市| 贞丰县| 廉江市| 西乡县| 平乡县| 眉山市| 车险| 曲阜市| 遂川县| 安宁市|