成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

K8s新手必看,不可不知的K8s技能,Service發現全解析!

云計算 云原生
本文我們通過一個簡單的 Nginx 部署案例,演示了如何使用 ClusterIP 和 NodePort 類型的 Service。

概念介紹

Kubernetes是一個開源的容器編排平臺,用于自動化部署、擴展和管理容器化應用。在Kubernetes中,Service是一種抽象,它定義了一組Pod的邏輯集合,并且能夠在這些Pod之間實現負載均衡。Service 使得我們可以通過一個固定的IP地址或DNS名稱訪問Pod,即使這些Pod的數量和位置在不斷變化。

Service實現方式

1.userspace

在userspace模式下,kube-proxy會為每個Service創建一個監聽端口。通過Iptables規則,發往Cluster IP的請求被重定向到kube-proxy監聽的端口。kube-proxy根據負載均衡算法選擇一個服務的Pod,與其建立連接并將請求轉發給該Pod。在這種模式下,kube-proxy充當四層負載均衡器的角色。由于kube-proxy在用戶空間運行,轉發過程中涉及內核與用戶空間之間的數據拷貝,雖然這種方式較為穩定,但效率相對較低。

kube-proxy userspace模式

2.iptables

在iptables模式下,kube-proxy為每個Service的后端Pod創建相應的iptables規則,將發往Cluster IP的請求直接重定向到一個Pod IP。這種模式下,kube-proxy并不充當四層負載均衡器的角色,只負責創建和維護iptables規則。相比于userspace模式,iptables模式的效率更高,但無法提供靈活的負載均衡策略,并且當后端Pod不可用時也無法進行請求重試。

kube-proxy iptables模式

3.ipvs

IPVS模式與 iptables 類似,kube-proxy通過監控Pod的變化來創建相應的IPVS規則。與 iptables 相比,IPVS轉發效率更高,并且支持更多的負載均衡算法。

kube-proxy ipvs模式

Service 的類型

Service的資源清單文件:

kind:Service# 資源類型
apiVersion:v1# 資源版本
metadata:# 元數據
  name:service# 資源名稱
  namespace:dev# 命名空間
spec:# 描述
  selector:# 標簽選擇器,用于確定當前service代理哪些pod
    app:nginx
  type:# Service類型,指定service的訪問方式
  clusterIP:# 虛擬服務的ip地址
  sessionAffinity:# session親和性,支持ClientIP、None兩個選項
  ports:# 端口信息
    -protocol:TCP
      port:3017# service端口
      targetPort:5003# pod端口
      nodePort:31122# 主機端口

Kubernetes 提供了幾種類型的 Service,以滿足不同的需求:

  • ClusterIP:默認類型,創建一個只能在集群內部訪問的虛擬IP。
  • NodePort:在每個Node上打開一個特定的端口,并將流量轉發到ClusterIP。
  • LoadBalancer:使用云提供商的負載均衡器,將外部流量分發到NodePort和ClusterIP。
  • ExternalName:將服務映射到外部的DNS名稱。

部署一個簡單的 Web 應用

接下來,我們通過一個實際案例來展示如何創建和使用 Service。假設我們有一個簡單的 Nginx Web 應用,我們將使用 Kubernetes 部署它,并通過 Service 進行訪問。

Step 1: 創建 Deployment

首先,我們需要創建一個 Deployment 來部署 Nginx 容器。創建一個名為 nginx-deployment.yaml 的文件,內容如下:

apiVersion:apps/v1
kind:Deployment
metadata:
  name:nginx-deployment
  labels:
    app:nginx
spec:
  replicas:3
  selector:
    matchLabels:
      app:nginx
  template:
    metadata:
      labels:
        app:nginx
    spec:
      containers:
      -name:nginx
        image:nginx:1.17.1
        ports:
        -containerPort:80

使用以下命令來應用這個 Deployment:

kubectl apply -f nginx-deployment.yaml

創建完成后,查看每個pod的IP地址,如下圖所示:

Step 2: 創建 Service

現在,我們創建一個 Service 來暴露這個 Deployment。創建一個名為 nginx-service.yaml 的文件,內容如下:

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

使用以下命令來應用這個 Service:

kubectl apply -f nginx-service.yaml

Step 3: 驗證 Service

應用成功后,我們可以使用以下命令來查看 Service 的詳情:

kubectl get services

你應該會看到類似如下的輸出:

通過 Service 的CLUSTER-IP,我們可以在集群內部訪問 Nginx 服務。

HeadlessService的概念和應用

在某些應用場景中,客戶端應用不需要通過Kubernetes內置 Service 實現的負載均衡功能,或需要自行完成對服務后端各實例的服務發現機制,或者自行實現負載均衡功能。這時,可以創建一種特殊的服務類型,稱為 Headless Service。

Headless Service的特點是,這種服務沒有入口訪問地址(即沒有 ClusterIP 地址),kube-proxy不會為其創建負載轉發規則。其服務名(DNS 域名)的解析機制則取決于該 Headless Service 是否設置了 Label Selector。

1.已設置Label Selector

如果Headless Service設置了Label Selector,Kubernetes則將根據Label Selector查詢后端Pod列表,自動創建Endpoint列表,將服務名(DNS域名)的解析機制設置為:當客戶端訪問該服務名時,得到的是全部Endpoint列表(而不是一個確定的IP地址)。以下面的Headless Service為例,其設置了Label Selector:

apiversion:v1
kind:Service
metadata:
  name:nginx
  labels:
    app:nginx
spec:
  ports:
  -port:80
  clusterIP:None
  selector:
    app:nginx

使用kubectl create命令創建完之后,可以查看該Headless Service的詳細信息,可以看到后端的Endpoint列表:

用nslookup工具對Headless Service名稱嘗試域名解析,將會看到DNS系統返回的全部Endpoint的IP地址,例如:

結論

通過本教程,我們學習了如何在 Kubernetes 中創建和使用 Service 來暴露應用。我們通過一個簡單的 Nginx 部署案例,演示了如何使用 ClusterIP 和 NodePort 類型的 Service。掌握這些基本概念和操作后,可以更輕松地管理和擴展 Kubernetes 集群中的應用服務。

責任編輯:趙寧寧 來源: 攻城獅成長日記
相關推薦

2023-08-03 08:36:30

Service服務架構

2022-04-22 13:32:01

K8s容器引擎架構

2023-11-06 07:16:22

WasmK8s模塊

2021-03-11 12:31:33

K8sCoreDNSDNS服務器

2023-09-06 08:12:04

k8s云原生

2020-07-17 08:40:47

K8SServicePOD

2023-09-11 15:35:25

2022-08-29 08:21:00

k8sDocker

2020-05-12 10:20:39

K8s kubernetes中間件

2022-09-05 08:26:29

Kubernetes標簽

2023-05-25 21:38:30

2023-08-04 08:19:02

2024-01-26 14:35:03

鑒權K8sNode

2022-09-05 17:28:25

k8sNode IPClusterIP

2022-04-29 10:40:38

技術服務端K8s

2021-04-12 20:42:50

K8S端口內存

2023-03-05 21:50:46

K8s集群容量

2023-09-03 23:58:23

k8s集群容量

2022-12-07 17:33:50

K8Skubernetes

2021-12-03 06:29:56

K8sDubboSpring
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99在线国产 | 亚洲一区二区三区四区av | 久久中文免费视频 | 99久久婷婷国产综合精品电影 | av毛片| 日韩欧美在线视频观看 | 亚洲精品日韩精品 | 在线成人www免费观看视频 | 一区二区三区在线观看免费视频 | 精品丝袜在线 | 亚洲成人久久久 | 日韩综合在线播放 | 成人一区二区电影 | 最新日韩av | 成人免费在线视频 | a级在线观看 | 久久蜜桃资源一区二区老牛 | 成人av观看| 精品一区二区三区av | 日韩在线观看网站 | 蜜桃av一区二区三区 | 成人高清视频在线观看 | 成人高清在线视频 | 精品日韩一区二区三区av动图 | 风间由美一区二区三区在线观看 | 一区在线免费视频 | 国产探花在线精品一区二区 | 久久高清精品 | 色偷偷人人澡人人爽人人模 | 久久九九网站 | 黄色毛片免费 | 一区二区欧美在线 | 羞羞视频免费观看 | 久热久草 | 国产精品美女一区二区三区 | 五月婷婷色 | 亚洲成人精品一区二区 | 国产精品欧美精品日韩精品 | 国产福利视频导航 | 欧美日韩亚洲在线 | 亚洲国产精品久久 |