kubernetes Service

kubernetes Service

參考文獻:
https://blog.csdn.net/watermelonbig/article/details/79693962

A错负、k8s的Service定義了一個服務的訪問入口地址失乾,前端的應用通過這個入口地址訪問其背 后的一組由Pod副本組成的集群實例,來自外部的訪問請求被負載均衡到后端的各個容器應用上锚沸。
B、Service與其后端Pod副本集群之間則是通過Label Selector來實現(xiàn)對接的涕癣;
C哗蜈、而RC的作用相當于是保證Service的服務能力和服務質量始終處于預期的標準。Service 定義可以基于 POST 方式坠韩,請求 apiserver 創(chuàng)建新的實例距潘。
D、一個 Service 在 Kubernetes 中是一個 REST 對象只搁。
本文對Service的使用進行詳細說明音比,包括Service的負載均衡、外網(wǎng)訪問氢惋、DNS服務的搭建洞翩、Ingress7層路由機制等。

1焰望、Service 定義詳解

1.1 yaml格式的Service定義文件的完整內容

apiVersion: v1
kind: Service
matadata:
  name: string
  namespace: string
  labels:
  - name: string
  annotations:
  - name: string
spec:
  selector: []
  type: string
  clusterIP: string
  sessionAffinity: string
  ports:
  - name: string
    protocol: string
    port: int
    targetPort: int
    nodePort: int
  status:
    loadBalancer:
      ingress:
        ip: string
        hostname: string

1.2 對Service定義文件中各屬性的說明表

屬性名稱 取值類型 是否必須 取值說明
version string Required v1
kind string Required Service
metadata object Required 元數(shù)據(jù)
metadata.name string Required Service名稱
metadata.namespace string Required 命名空間骚亿,默認為default
metadata.labels[] list 自定義標簽屬性列表
metadata.annotation[] list 自定義注解屬性列表
spec object Required 詳細描述
spec.selector[] list Required Label Selector配置,將選擇具有指定Label標簽的Pod作為管理范圍
spec.type string Required Service的類型熊赖,指定Service的訪問方式来屠,默認值為ClusterIP。取值范圍如下:ClusterIP: 虛擬服務的IP震鹉,用于k8s集群內部的pod訪問的妖,在Node上kube-proxy通過設置的Iptables規(guī)則進行轉發(fā)。NodePort:使用宿主機的端口足陨,使用能夠訪問各Node的外部客戶端通過Node的IP地址和端口就能訪問服務嫂粟。LoadBalancer: 使用外接負載均衡器完成到服務的負載分發(fā),需要在spec.status.loadBalancer字段指定外部負載均衡器的IP地址墨缘,并同時定義nodePort和clusterIP星虹,用于公有云環(huán)境。
spec.clusterIP string 虛擬服務的IP地址镊讼,當type=clusterIP時宽涌,如果不指定,則系統(tǒng)進行自動分配蝶棋。也可以手工指定卸亮。當type=LoadBalancer時,則需要指定玩裙。
spec.sessionAffinity string 是否支持Session兼贸,可選值為ClientIP段直,表示將同一個源IP地址的客戶端訪問請求都轉發(fā)到同一個后端Pod。默認值為空溶诞。
spec.ports[] list Service需要暴露的端口列表
spec.ports[].name string 端口名稱
spec.ports[].protocol string 端口協(xié)議鸯檬,支持TCP和UDP,默認值為TCP
spec.ports[].port int 服務監(jiān)聽的端口號
spec.ports[].targetPort int 需要轉發(fā)到后端Pod的端口號
spec.ports[].nodePort int 當spec.type=NodePort時螺垢,指定映射到物理機的端口號
status object 當spec.type=LoadBalancer時喧务,設置外部負載均衡器的地址,用于公有云環(huán)境
status.loadBalancer object 外部負載均衡器
status.loadBalancer.ingress object 外部負載均衡器
status.loadBalancer.ingress.ip string 外部負載均衡器的IP地址
status.loadBalancer.ingress.hostname string 外部負載均衡器的主機名

2 Service, RC, Pod 架構層次關系

image

3 VIP和Service 代理

3.1 kube-proxy

運行在每個Node上的kube-proxy進程其實就是一個智能的軟件負載均衡器枉圃,它會負責把對Service的請求轉發(fā)到后端的某個Pod實例上并在內部實現(xiàn)服務的負載均衡與會話保持機制功茴。Service不是共用一個負載均衡器的IP,而是被分配了一個全局唯一的虛擬IP地址孽亲,稱為Cluster IP痊土。
在Service的整個生命周期內,它的Cluster IP不會改變墨林。
kube-proxy 負責為 Service 實現(xiàn)了一種 VIP(虛擬 IP)的形式赁酝,而不是 ExternalName 的形式。
在k8s v1.2版本之前默認使用userspace提供vip代理服務旭等,從 Kubernetes v1.2 起酌呆,默認是使用 iptables 代理。

3.2 iptables 代理模式

這種模式搔耕,kube-proxy 會監(jiān)視 Kubernetes master 對 Service 對象和 Endpoints 對象的添加和移除隙袁。 對每個 Service,它會創(chuàng)建相關 iptables 規(guī)則弃榨,從而捕獲到達該 Service 的 clusterIP(虛擬 IP)和端口的請求菩收,進而將請求重定向到 Service 的一組 backend 中的某個上面。 對于每個 Endpoints 對象鲸睛,它也會創(chuàng)建 iptables 規(guī)則娜饵,這個規(guī)則會選擇一個 backend Pod。
默認的策略是官辈,隨機選擇一個 backend箱舞。 實現(xiàn)基于客戶端 IP 的會話親和性,可以將 service.spec.sessionAffinity 的值設置為 "ClientIP" (默認值為 "None")拳亿。
和 userspace 代理類似晴股,網(wǎng)絡返回的結果是,任何到達 Service 的 IP:Port 的請求肺魁,都會被代理到一個合適的 backend电湘,不需要客戶端知道關于 Kubernetes、Service、或 Pod 的任何信息寂呛。 這應該比 userspace 代理更快怎诫、更可靠。然而昧谊,不像 userspace 代理,如果初始選擇的 Pod 沒有響應酗捌,iptables 代理能夠自動地重試另一個 Pod呢诬,所以它需要依賴 readiness probes。

image

4胖缤、 發(fā)布服務---type類型

對一些應用希望通過外部(Kubernetes 集群外部)IP 地址暴露 Service尚镰。
Kubernetes ServiceTypes 允許指定一個需要的類型的 Service,默認是 ClusterIP 類型哪廓。
Type 的取值以及行為如下:

  • ClusterIP:通過集群的內部 IP 暴露服務狗唉,選擇該值,服務只能夠在集群內部可以訪問涡真,這也是默認的 ServiceType分俯。
  • NodePort:通過每個 Node 上的 IP 和靜態(tài)端口(NodePort)暴露服務。NodePort 服務會路由到 ClusterIP 服務哆料,這個 ClusterIP 服務會自動創(chuàng)建缸剪。通過請求<NodeIP>:<NodePort>,可以從集群的外部訪問一個 NodePort 服務东亦。
  • LoadBalancer:使用云提供商的負載局衡器杏节,可以向外部暴露服務。外部的負載均衡器可以路由到 NodePort 服務和 ClusterIP 服務典阵。
  • ExternalName:通過返回 CNAME 和它的值奋渔,可以將服務映射到 externalName 字段的內容(例如, foo.bar.example.com)壮啊。 沒有任何類型代理被創(chuàng)建嫉鲸,這只有 Kubernetes 1.7 或更高版本的 kube-dns 才支持。

k8s中有3種IP地址:

  • Node IP: Node節(jié)點的IP地址歹啼,這是集群中每個節(jié)點的物理網(wǎng)卡的IP地址充坑;
  • Pod IP: Pod的IP地址,這是Docker Engine根據(jù)docker0網(wǎng)橋的IP地址段進行分配的染突,通常是一個虛擬的二層網(wǎng)絡捻爷;
  • Cluster IP:Service 的IP地址,這也是一個虛擬的IP份企,但它更像是一個“偽造”的IP地址也榄,因為它沒有一個實體網(wǎng)絡對象,所以無法響應ping命令。它只能結合Service Port組成一個具體的通信服務端口甜紫,單獨的Cluster IP不具備TCP/IP通信的基礎降宅。

在k8s集群之內,Node IP網(wǎng)囚霸、Pod IP網(wǎng)與Cluster IP網(wǎng)之間的通信采用的是k8s自己設計的一種編程實現(xiàn)的特殊的路由規(guī)則腰根,不同于常見的IP路由實現(xiàn)

5、 服務發(fā)現(xiàn)

Kubernetes 支持2種基本的服務發(fā)現(xiàn)模式 —— 環(huán)境變量和 DNS拓型。
環(huán)境變量
當 Pod 運行在 Node 上额嘿,kubelet 會為每個活躍的 Service 添加一組環(huán)境變量。 它同時支持 Docker links兼容 變量劣挫、簡單的 {SVCNAME}_SERVICE_HOST 和 {SVCNAME}_SERVICE_PORT 變量册养,這里 Service 的名稱需大寫,橫線被轉換成下劃線压固。
舉個例子球拦,一個名稱為 "redis-master" 的 Service 暴露了 TCP 端口 6379,同時給它分配了 Cluster IP 地址 10.0.0.11帐我,這個 Service 生成了如下環(huán)境變量:

REDIS_MASTER_SERVICE_HOST=10.0.0.11
REDIS_MASTER_SERVICE_PORT=6379
REDIS_MASTER_PORT=tcp://10.0.0.11:6379
REDIS_MASTER_PORT_6379_TCP=tcp://10.0.0.11:6379
REDIS_MASTER_PORT_6379_TCP_PROTO=tcp
REDIS_MASTER_PORT_6379_TCP_PORT=6379
REDIS_MASTER_PORT_6379_TCP_ADDR=10.0.0.11

這意味著需要有順序的要求 —— Pod 想要訪問的任何 Service 必須在 Pod 自己之前被創(chuàng)建坎炼,否則這些環(huán)境變量就不會被賦值。DNS 并沒有這個限制拦键。
DNS
一個強烈推薦的集群插件 是 DNS 服務器点弯。 DNS 服務器監(jiān)視著創(chuàng)建新 Service 的 Kubernetes API,從而為每一個 Service 創(chuàng)建一組 DNS 記錄矿咕。 如果整個集群的 DNS 一直被啟用抢肛,那么所有的 Pod 應該能夠自動對 Service 進行名稱解析。
例如碳柱,有一個名稱為 "my-service" 的 Service捡絮,它在 Kubernetes 集群中名為 "my-ns" 的 Namespace 中,為 "my-service.my-ns" 創(chuàng)建了一條 DNS 記錄莲镣。 在名稱為 "my-ns" 的 Namespace 中的 Pod 應該能夠簡單地通過名稱查詢找到 "my-service"福稳。 在另一個 Namespace 中的 Pod 必須限定名稱為 "my-service.my-ns"。 這些名稱查詢的結果是 Cluster IP瑞侮。
Kubernetes 也支持對端口名稱的 DNS SRV(Service)記錄的圆。 如果名稱為 "my-service.my-ns" 的 Service 有一個名為 "http" 的 TCP 端口,可以對 "_http._tcp.my-service.my-ns" 執(zhí)行 DNS SRV 查詢半火,得到 "http" 的端口號越妈。
Kubernetes DNS 服務器是唯一的一種能夠訪問 ExternalName 類型的 Service 的方式。 更多信息可以查看DNS Pod 和 Service钮糖。
Kubernetes 從 1.3 版本起梅掠, DNS 是內置的服務酌住,通過插件管理器 集群插件 自動被啟動。Kubernetes DNS 在集群中調度 DNS Pod 和 Service 阎抒,配置 kubelet 以通知個別容器使用 DNS Service 的 IP 解析 DNS 名字酪我。

6、 Service的基本用法

????一般來說且叁,對外提供服務的應用程序需要通過某種機制來實現(xiàn)都哭,對于容器應用最簡便的方式就是通過TCP/IP機制及監(jiān)聽IP和端口號來實現(xiàn)。
創(chuàng)建一個基本功能的Service
(1) 例如逞带,我們定義一個提供web服務的RC欺矫,由兩個tomcat容器副本組成,每個容器通過containerPort設置提供服務號為8080:
webapp-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: webapp
spec:
  replicas: 2
  template:
    metadata:
      name: webapp
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: tomcat
        ports:
        - containerPort: 8080

創(chuàng)建該RC

kubectl create -f webapp-rc.yaml 

獲取Pod的IP地址:

[root@master service]# kubectl get pods -l app=webapp -o yaml| grep podIP | grep -v cni
    podIP: 192.168.2.94
    podIP: 192.168.1.73
[root@master service]# 

直接通過這兩個Pod的IP地址和端口號訪問Tomcat服務:

[root@master service]# curl 192.168.2.94:8080



<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/8.5.34</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />
    </head>
........

說明可以直接通過podIP進行訪問
直接通過Pod的IP地址和端口號可以訪問容器內的應用服務掰担,但是Pod的IP地址是不可靠的汇陆,例如Pod所在的Node發(fā)生故障怒炸,Pod將被k8s重新調度到另一臺Node带饱。Pod的IP地址將發(fā)生變化,更重要的是阅羹,如果容器應用本身是分布式的部署方式勺疼,通過多個實例共同提供服務,就需要在這些實例的前端設置一個負載均衡器來實現(xiàn)請求的分發(fā)捏鱼。kubernetes中的Service就是設計出來用于解決這些問題的核心組件执庐。

(2) 為了讓客戶端應用能夠訪問到兩個Tomcat Pod 實例,需要創(chuàng)建一個Service來提供服務
k8s提供了一種快速的方法导梆,即通過kubectl expose命令來創(chuàng)建:

[root@master service]# kubectl expose deployment webapp
service/webapp exposed

查看新創(chuàng)建的Service可以看到系統(tǒng)為它分配了一個虛擬的IP地址(clusterIP)轨淌,而Service所需的端口號則從Pod中的containerPort復制而來:

[root@master service]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP    6d10h
webapp       ClusterIP   10.103.4.220   <none>        8080/TCP   5s
[root@master service]# 

接下來,我們就可以通過Service的IP地址和Service的端口號訪問該Service了:

image

這里看尼,對Service地址10.103.4.220:8080的訪問被自動負載分發(fā)到了后端兩個Pod之一递鹉。

(3) 除了使用kubectl expose命令創(chuàng)建Service,我們也可以通過配置文件定義Service藏斩,再通過kubectl create命令進行創(chuàng)建
例如前面的webapp就用躏结,我們可以設置一個Service:
webapp-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: webapp
spec:
  ports:
  - port: 8081
    targetPort: 8080
  selector:
    app: webapp

本例中ports定義部分指定了Service所需的虛擬端口號為8081,由于與Pod容器端口號8080不一樣狰域,所以需要在通過targetPort來指定后端Pod的端口
selector定義部分設置的是后端Pod所擁有的label: app=webapp
(4) 目前kubernetes提供了兩種負載分發(fā)策略:RoundRobin和SessionAffinity

  • RoundRobin:輪詢模式媳拴,即輪詢將請求轉發(fā)到后端的各個Pod上
  • SessionAffinity:基于客戶端IP地址進行會話保持的模式,第一次客戶端訪問后端某個Pod兆览,之后的請求都轉發(fā)到這個Pod上
    默認是RoundRobin模式屈溉。

7、 多端口Service

有時候抬探,一個容器應用提供多個端口服務语婴,可以按下面這樣定義:

apiVersion: v1
kind: Service
metadata:
  name: webapp
spec:
  ports:
  - name: web
    port: 8080
    targetPort: 8080
  - name: management
    port: 8005
    targetPort: 8005
  selector:
    app: webapp 

另一個例子是兩個端口使用了不同的4層協(xié)議,即TCP和UDP

apiVersion: v1
kind: Service
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "KubeDNS"
spec:
  selector:
    k8s-app: kube-dns
  clusterIP: 10.10.10.100
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP

8、 Headless Service

有時不需要或不想要負載均衡砰左,以及單獨的 Service IP匿醒。 遇到這種情況,可以通過指定 Cluster IP(spec.clusterIP)的值為 "None" 來創(chuàng)建 Headless Service缠导。
這個選項允許開發(fā)人員自由尋找他們自己的方式廉羔,從而降低與 Kubernetes 系統(tǒng)的耦合性。 應用仍然可以使用一種自注冊的模式和適配器僻造,對其它需要發(fā)現(xiàn)機制的系統(tǒng)能夠很容易地基于這個 API 來構建憋他。
對這類 Service 并不會分配 Cluster IP,kube-proxy 不會處理它們髓削,而且平臺也不會為它們進行負載均衡和路由竹挡。僅依賴于Label Selector將后端的Pod列表返回給調用的客戶端。

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

這樣立膛,Service就不再具有一個特定的ClusterIP地址揪罕,對其進行訪問將獲得包含Label"app=nginx"的全部Pod列表,然后客戶端程序自行決定如何處理這個Pod列表宝泵。
例如, StatefulSet就是使用Headless Service為客戶端返回多個服務地址好啰。
Lable Secector:
配置 Selector:對定義了 selector 的 Headless Service,Endpoint 控制器在 API 中創(chuàng)建了 Endpoints 記錄儿奶,并且修改 DNS 配置返回 A 記錄(地址)框往,通過這個地址直接到達 Service 的后端 Pod上。
不配置 Selector:對沒有定義 selector 的 Headless Service闯捎,Endpoint 控制器不會創(chuàng)建 Endpoints 記錄椰弊。

9、 外部服務Service——沒有 selector 的 Service

在某些環(huán)境中瓤鼻,應用系統(tǒng)需要將一個外部數(shù)據(jù)庫用為后端服務進行連接秉版,或將另一個集群或Namespace中的服務作為服務的后端,這時可以通過創(chuàng)建一個無Label Selector的Service實現(xiàn):

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

Servcie 抽象了該如何訪問 Kubernetes Pod娱仔,但也能夠抽象其它類型的 backend沐飘,例如:
希望在生產環(huán)境中使用外部的數(shù)據(jù)庫集群。
希望服務指向另一個 Namespace 中或其它集群中的服務牲迫。
正在將工作負載同時轉移到 Kubernetes 集群和運行在 Kubernetes 集群之外的 backend耐朴。
由于這個 Service 沒有 selector,就不會創(chuàng)建相關的 Endpoints 對象盹憎∩盖停可以手動將 Service 映射到指定的 Endpoints:

kind: Endpoints
apiVersion: v1
metadata:
  name: my-service
subsets:
  - addresses:
      - ip: 1.2.3.4
    ports:
      - port: 9376

注意:Endpoint IP 地址不能是 loopback(127.0.0.0/8)、 link-local(169.254.0.0/16)陪每、或者 link-local 多播(224.0.0.0/24)影晓。
訪問沒有 selector 的 Service镰吵,與有 selector 的 Service 的原理相同。請求將被路由到用戶定義的 Endpoint(該示例中為 1.2.3.4:9376)挂签。
ExternalName Service 是 Service 的特例疤祭,它沒有 selector,也沒有定義任何的端口和 Endpoint饵婆。 相反地勺馆,對于運行在集群外部的服務,它通過返回該外部服務的別名這種方式來提供服務侨核。

kind: Service
apiVersion: v1
metadata:
  name: my-service
  namespace: prod
spec:
  type: ExternalName
  externalName: my.database.example.com

當查詢主機 my-service.prod.svc.CLUSTER時草穆,集群的 DNS 服務將返回一個值為 my.database.example.com 的 CNAME 記錄。 訪問這個服務的工作方式與其它的相同搓译,唯一不同的是重定向發(fā)生在 DNS 層悲柱,而且不會進行代理或轉發(fā)。 如果后續(xù)決定要將數(shù)據(jù)庫遷移到 Kubernetes 集群中些己,可以啟動對應的 Pod豌鸡,增加合適的 Selector 或 Endpoint,修改 Service 的 type轴总。

10直颅、集群外部訪問Pod或Service的方法

由于Pod和Service是k8s集群范圍內的虛擬概念博个,所以集群外的客戶端系統(tǒng)無法通過Pod的IP地址或者Service的虛擬IP地址和虛擬端口號訪問到它們怀樟。
為了讓外部客戶端可以訪問這些服務,可以將Pod或Service的端口號映射到宿主機盆佣,以使得客戶端應用能夠通過物理機訪問容器應用往堡。

10.1、將容器應用的端口號映射到物理機

(1) 通過設置容器級別的hostPort共耍,將容器應用的端口號映射到物理機上
文件pod-hostport.yaml

apiVersion: v1
kind: Pod
metadata:
  name: webapp
  labels:
    app: webapp
spec:
  containers:
  - name: webapp
    image: tomcat
    ports:
    - containerPort: 8080
      hostPort: 8081

hostPort的值可以跟containerPort的值一樣
通過kubectl create創(chuàng)建這個Pod:

kubectl create -f pod-hostport.yaml

通過物理機的IP地址和8081端口號訪問Pod內的容器服務:

curl 172.16.91.137:8081

(2) 通過設置Pod級別的hostNetwork=true虑灰,該Pod中所有容器的端口號都將被直接映射到物理機上
設置hostWork=true時需要注意,在容器的ports定義部分如果不指定hostPort痹兜,則默認hostPort等于containerPort穆咐,如果指定了hostPort,則hostPort必須等于containerPort的值字旭。
文件pod-hostnetwork.yaml

apiVersion: v1
kind: Pod
metadata:
  name: webapp-hostnetwork
  labels:
    app: webapp-hostnetwork
spec:
  hostNetwork: true
  containers:
  - name: webapp-hostnetwork
    image: tomcat
    imagePullPolicy: Never
    ports:
    - containerPort: 8080

創(chuàng)建這個Pod:

kubectl create -f pod-hostnetwork.yaml
[root@master pod]# kubectl get pod -owide
NAME                      READY   STATUS    RESTARTS   AGE   IP              NODE     NOMINATED NODE
webapp-77df6fff64-dhczl   1/1     Running   1          14h   192.168.2.95    slave2   <none>
webapp-77df6fff64-kpl6w   1/1     Running   1          14h   192.168.1.74    slave1   <none>
webapp-hostnetwork        1/1     Running   0          7s    172.16.91.136   slave1   <none>

通過物理機的IP地址和8080端口訪問Pod的容器服務

curl slave1:8080  

10.2 將Service的端口號映射到物理機

(1) 通過設置nodePort映射到物理機对湃,同時設置Service的類型為NodePort
文件webapp-svc-nodeport.yaml

apiVersion: v1
kind: Service
metadata:
  name: webapp-nodeport
spec:
  type: NodePort
  ports:
  - port: 8090
    targetPort: 8080
    nodePort: 8090
  selector:
    app: webapp

創(chuàng)建這個Service:

kubectl create -f webapp-svc-nodeport.yaml
[root@master service]# kubectl get svc
NAME              TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes        ClusterIP   10.96.0.1      <none>        443/TCP          7d1h
webapp            ClusterIP   10.103.4.220   <none>        8080/TCP         14h
webapp-nodeport   NodePort    10.99.248.88   <none>        8090:31090/TCP   6s

通過物理機的IP和端口訪問:(4種方式訪問)

#Service的IP,即ClusterIP
curl 10.99.248.88:8090 
#master的IP遗淳,
curl master:31090 
curl slave1:31090 
curl slave2:31090 

也就是說拍柒,只要是nodePort端口,就會在物理機上開始監(jiān)聽端口號

image

image

如果訪問不通屈暗,查看下物理機的防火墻設置
同樣拆讯,對該Service的訪問也將被負載分發(fā)到后端多個Pod上

(2) 通過設置LoadBalancer映射到云服務商提供的LoadBalancer地址
這種用法僅用于在公有云服務提供商的云平臺上設置Service的場景脂男。
status.loadBalancer.ingress.ip設置的146.148.47.155為云服務商提供的負載均衡器的IP地址。對該Service的訪問請求將會通過LoadBalancer轉發(fā)到后端的Pod上种呐,負載分發(fā)的實現(xiàn)方式依賴云服務商提供的LoadBalancer的實現(xiàn)機制宰翅。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: Myapp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
    nodePort: 30061
  clusterIP: 10.0.171.239
  loadBalancerIP: 78.11.24.19
  type: LoadBalancer
status:
  loadBalancer:
    ingree:
    - ip: 146.148.47.155
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市爽室,隨后出現(xiàn)的幾起案子堕油,更是在濱河造成了極大的恐慌,老刑警劉巖肮之,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掉缺,死亡現(xiàn)場離奇詭異,居然都是意外死亡戈擒,警方通過查閱死者的電腦和手機眶明,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筐高,“玉大人搜囱,你說我怎么就攤上這事「掏粒” “怎么了蜀肘?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長稽屏。 經常有香客問我扮宠,道長,這世上最難降的妖魔是什么狐榔? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任坛增,我火速辦了婚禮,結果婚禮上薄腻,老公的妹妹穿的比我還像新娘收捣。我一直安慰自己,他們只是感情好庵楷,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布罢艾。 她就那樣靜靜地躺著,像睡著了一般尽纽。 火紅的嫁衣襯著肌膚如雪咐蚯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天蜓斧,我揣著相機與錄音仓蛆,去河邊找鬼。 笑死挎春,一個胖子當著我的面吹牛看疙,可吹牛的內容都是我干的豆拨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼能庆,長吁一口氣:“原來是場噩夢啊……” “哼施禾!你這毒婦竟也來了?” 一聲冷哼從身側響起搁胆,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤弥搞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渠旁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體攀例,經...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年顾腊,在試婚紗的時候發(fā)現(xiàn)自己被綠了粤铭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡杂靶,死狀恐怖梆惯,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情吗垮,我是刑警寧澤垛吗,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站烁登,受9級特大地震影響怯屉,放射性物質發(fā)生泄漏。R本人自食惡果不足惜防泵,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一蚀之、第九天 我趴在偏房一處隱蔽的房頂上張望蝗敢。 院中可真熱鬧捷泞,春花似錦、人聲如沸寿谴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讶泰。三九已至咏瑟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痪署,已是汗流浹背码泞。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留狼犯,地道東北人余寥。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓领铐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宋舷。 傳聞我的和親對象是個殘疾皇子绪撵,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內容