<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Service是邏輯上的一組Pod,一種可以存取Pod的策略,而且其他Pod可以通過Service存取到這個Service代理的Pod,可以把它理解為傳統架構中的反向代理。
相對於Pod而言,Service有一個固定的名稱,不會發生改變,並且提供了負載均衡的功能。
通過Service的定義,可以對使用者端應用遮蔽後端Pod範例數量及Pod IP地址的變化,通過負載均衡策略實現請求到後端Pod範例的轉發,為使用者端應用提供一個穩定的服務存取入口地址。
Service實現的是微服務架構中的幾個核心功能:全自動的服務註冊、服務發現、服務負載均衡等。
apiVersion: v1 kind: Service metadata: labels: app: nginx-svc name: nginx-svc spec: ports: - name: http #service埠名稱 port: 80 #service自己的埠 protocol: TCP #支援TCP UDP SCTP等 targetPort: 80 #後端應用介面 - name: https port: 443 protocol: TCP targetPort: 443 selector: app: nginx #這個就是匹配規則,代理標籤中有nginx的後端伺服器 sessionAffinity: None type: ClusterIP
執行上面的yaml檔案,建立一個service
[root@k8s-master01 ~]# kubectl create -f nginx-svc.yaml service/nginx-svc created [root@k8s-master01 ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d nginx-svc ClusterIP 10.110.150.87 <none> 80/TCP,443/TCP 15s
我們通過存取svc地址就能存取到後端的nginx
[root@k8s-master01 ~]# curl 10.110.150.87 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/" rel="external nofollow" >nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/" rel="external nofollow" >nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
.namespace名稱
就可以了,使用需謹慎,沒必要不推薦注意,以上內容只能在叢集內部存取
下面我們定義一個外部應用的service
apiVersion: v1 kind: Service metadata: labels: app: nginx-svc-w name: nginx-svc-w spec: ports: - name: http port: 80 protocol: TCP targetPort: 80 # - name: https # port: 443 # protocol: TCP # targetPort: 443 # selector: # app: nginx sessionAffinity: None type: ClusterIP
區別就是少了這兩個引數:
selector: app: nginx
建立成功後檢視,可以發現雖然建立成功了但是沒有ENDPOINTS
[root@k8s-master01 ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 9d nginx-svc ClusterIP 10.110.150.87 <none> 80/TCP,443/TCP 31m nginx-svc-w ClusterIP 10.110.144.61 <none> 80/TCP 58s [root@k8s-master01 ~]# kubectl get ep NAME ENDPOINTS AGE kubernetes 192.168.10.2:6443,192.168.10.3:6443,192.168.10.4:6443 9d nginx-svc 172.17.125.10:443,172.18.195.22:443,172.17.125.10:80 + 1 more... 31m
接下來我們需要手動建立一個自定義的ENDPOINTS借用存在的ep生成一個新的ep檔案
[root@k8s-master01 ~]# kubectl get ep nginx-svc -o yaml > nginx-ep-w.yaml
apiVersion: v1 kind: Endpoints metadata: labels: app: nginx-svc-w name: nginx-svc-w namespace: default subsets: - addresses: - ip: 110.242.68.3 # 代理的外部服務的地址 ports: - name: http port: 80 protocol: TCP
可以看到已經有外部的代理了
[root@k8s-master01 ~]# kubectl create -f nginx-ep-w.yaml endpoints/nginx-svc-w created [root@k8s-master01 ~]# kubectl get ep NAME ENDPOINTS AGE kubernetes 192.168.10.2:6443,192.168.10.3:6443,192.168.10.4:6443 9d nginx-svc 172.17.125.10:443,172.18.195.22:443,172.17.125.10:80 + 1 more... 47m nginx-svc-w 110.242.68.3:80 11s
接下來試試能不能存取成功
# 直接存取的話是通的,返回值200 [root@k8s-master01 ~]# curl baidu.com -I HTTP/1.1 200 OK Date: Mon, 14 Feb 2022 01:43:18 GMT Server: Apache Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT ETag: "51-47cf7e6ee8400" Accept-Ranges: bytes Content-Length: 81 Cache-Control: max-age=86400 Expires: Tue, 15 Feb 2022 01:43:18 GMT Connection: Keep-Alive Content-Type: text/html # 通過存取service的IP可以看到也是通的,返回值200 [root@k8s-master01 ~]# curl 10.110.144.61 -I HTTP/1.1 200 OK Date: Mon, 14 Feb 2022 01:44:20 GMT Server: Apache Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT ETag: "51-47cf7e6ee8400" Accept-Ranges: bytes Content-Length: 81 Cache-Control: max-age=86400 Expires: Tue, 15 Feb 2022 01:44:20 GMT Connection: Keep-Alive Content-Type: text/html
如果業務變更ep地址變了怎麼辦?只需要在ep中將代理的地址更換即可。
比如我們更換一個taobao的地址測試:
# 取出taobao的IP [root@k8s-master01 ~]# ping taobao.com PING taobao.com (140.205.94.189) 56(84) bytes of data. 64 bytes from 140.205.94.189 (140.205.94.189): icmp_seq=1 ttl=128 time=27.4 ms 64 bytes from 140.205.94.189 (140.205.94.189): icmp_seq=2 ttl=128 time=27.4 ms # 修改ep的yaml檔案:nginx-ep-w.yaml apiVersion: v1 kind: Endpoints metadata: labels: app: nginx-svc-w name: nginx-svc-w namespace: default subsets: - addresses: - ip: 140.205.94.189 # taobao ports: - name: http port: 80 protocol: TCP # 重新載入 [root@k8s-master01 ~]# kubectl replace -f nginx-ep-w.yaml
存取測試一下看是否連通:這個返回501是沒問題的。
[root@k8s-master01 ~]# curl 10.110.144.61 -I HTTP/1.1 501 Not Implemented Server: Tengine Date: Mon, 14 Feb 2022 01:39:16 GMT Content-Type: text/html Content-Length: 583 Connection: close
這個不說了,知道怎麼配就行了。
Service的yaml檔案:
apiVersion: v1 kind: Service metadata: labels: app: nginx-svc-wname name: nginx-svc-wname spec: type: ExternalName externalName: www.baidu.com
然後建立就行了:
kubectl apply -f nginx-svc-wname.yaml
ClusterIP
:在叢集內部使用,預設
ExternalName
:通過返回定義的CNAME別名
NodePort
:在所有安裝了kube-proxy的節點上開啟一個埠,此埠可以代理至後端Pod,然後叢集外部可以使用節點的IP地址和NodePort埠號存取到叢集Pod服務。埠取值範圍預設30000-32767
LoadBalancer
:使用雲服務商提供的負載均衡器公開服務
以上就是服務發現與負載均衡機制Service範例建立的詳細內容,更多關於服務發現與負載均衡Service的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45