摘要:通過外網訪問使用提醒請勿修改由創建的及的名稱和備注,否則會導致異常無法訪問。通過外網暴露服務以后的插件,外網同時支持和兩種協議,下文示例中,對外暴露了三個端口,其中端口使用協議,和使用協議。是否支持多協議目前同時支持和協議。
外網模式下,ULB支持“報文轉發(ULB4)”及“請求代理(ULB7)”兩種轉發模式,推薦使用ULB4,因為ULB4的性能更好;
使用外網ULB4來暴露服務非常簡單,對于TCP協議,可不填寫任何 annotations。
apiVersion: v1
kind: Service
metadata:
name: ucloud-nginx-out-tcp-new
labels:
app: ucloud-nginx-out-tcp-new
annotations:
"service.beta.kubernetes.io/ucloud-load-balancer-type": "outer"
# 代表ULB網絡類型,outer為外網,inner為內網;outer為默認值,此處可省略。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "tcp"
# 表示ULB協議類型,tcp與udp等價,表示ULB4;http與httpS等價,表示ULB7;tcp為默認值,此處可省略。
"service.beta.kubernetes.io/ucloud-load-balancer-eip-bandwidth": "2"
# bandwidth下默認為2Mpbs建議顯式聲明帶寬大小,避免費用超標。
"service.beta.kubernetes.io/ucloud-load-balancer-eip-chargetype": "month"
# 付費模式,支持month,year,dynamic,默認為month
"service.beta.kubernetes.io/ucloud-load-balancer-eip-quantity": "1"
# 付費時長,默認為1,chargetype為dynimic時無效
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: ucloud-nginx-out-tcp-new
---
apiVersion: v1
kind: Pod
metadata:
name: test-nginx-out-tcp
labels:
app: ucloud-nginx-out-tcp-new
spec:
containers:
- name: nginx
image: uhub.service.ucloud.cn/ucloud/nginx:1.9.2
ports:
- containerPort: 80
protocol: TCP
相對于TCP應用,務必在annotations中顯式聲明健康檢查的類型為port,否則ULB可能將正常工作的Pod認為不健康,導致流量轉發異常。
apiVersion: v1
kind: Service
metadata:
name: ucloud-out-udp-new
labels:
app: ucloud-out-udp-new
annotations:
"service.beta.kubernetes.io/ucloud-load-balancer-type": "outer"
# 代表ULB網絡類型,outer為外網,inner為內網;outer為默認值,此處可省略。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "udp"
# 表示ULB協議類型,tcp與udp等價,表示ULB4;http與httpS等價,表示ULB7;tcp為默認值,此處可省略。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-monitor-type": "port"
# 對于ULB4而言,不論容器端口類型是tcp還是udp,均建議顯式聲明為port。
spec:
type: LoadBalancer
ports:
- name: udp
protocol: UDP
port: 53
targetPort: 53
selector:
app: ucloud-out-udp-new
---
apiVersion: v1
kind: Pod
metadata:
name: test-out-udp
labels:
app: ucloud-out-udp-new
spec:
containers:
- name: dns
image: uhub.service.ucloud.cn/library/coredns:1.4.0
ports:
- name: udp
containerPort: 53
protocol: UDP
UK8S的cloudprovider 插件做一個大更新,大于等于19.05.3的版本支持多端口,指定ULB-id等功能,你可以通過如下命令查看cloudprovider的版本:
[root@10-9-53-181 ~]# /usr/local/bin/cloudprovider-ucloud version
CloudProvider-UCloud Version: cloudprovider-19.05.3
Go Version: go version go1.12.5 linux/amd64
Build Time: 2019-05-30-UTC/06:18:06
Git Commit ID: 2723d13b69a4d6f5b905a7f96bd7eed49617f439
升級指南即將發布,如有需求,請聯系UCloud技術支持。
老版本的ULB7只支持單種協議,即HTTP或HTTPS。 下文示例中,對外暴露2個端口都使用HTTP協議。
apiVersion: v1
kind: Service
metadata:
name: ucloud-nginx-out-tcp-new
labels:
app: ucloud-nginx-out-tcp-new
annotations:
"service.beta.kubernetes.io/ucloud-load-balancer-type": "outer"
# 代表ULB類型,outer為外網,inner為內網;outer為默認值,此處可省略。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-listentype": "requestproxy"
# 代表監聽器的類型為請求代理,必須填寫。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "http"
# 表示Verser的協議類型,此處為http,則所有的service端口對應的Vserver protocol 都為http,反之亦然。
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 80
name: http
- protocol: TCP
port: 443
targetPort: 80
name: httptoo
selector:
app: ucloud-nginx-out-tcp-new
---
apiVersion: v1
kind: Pod
metadata:
name: test-nginx-out-tcp
labels:
app: ucloud-nginx-out-tcp-new
spec:
containers:
- name: nginx
image: uhub.service.ucloud.cn/ucloud/nginx:1.9.2
ports:
- containerPort: 80
19.05.3以后的插件,外網ULB7同時支持HTTP和HTTPS兩種協議,下文示例中,對外暴露了三個端口,其中80端口使用HTTP協議,443和8443使用HTTPS協議。
apiVersion: v1
kind: Service
metadata:
name: ucloud-nginx-out-tcp-new
labels:
app: ucloud-nginx-out-tcp-new
annotations:
"service.beta.kubernetes.io/ucloud-load-balancer-type": "outer"
# 代表ULB類型,outer為外網,inner為內網;outer為默認值,此處可省略。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-listentype": "requestproxy"
# 代表監聽器的類型為請求代理,5月30日后安裝的集群無需填寫。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "https"
# 表示ULB協議類型,http與https等價,表示ULB7;
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-ssl-cert": "ssl-b103etqy"
# 聲明要綁定的SSL證書Id,需要先將證書上傳至UCloud;
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-ssl-port": "4438443"
# 聲明使用SSL協議的Service端口,多個用""分隔;
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 443
targetPort: 80
name: https
- protocol: TCP
port: 8443
targetPort: 80
name: ssl
- protocol: TCP
port: 80
targetPort: 80
name: http
selector:
app: ucloud-nginx-out-tcp-new
---
apiVersion: v1
kind: Pod
metadata:
name: test-nginx-out-tcp
labels:
app: ucloud-nginx-out-tcp-new
spec:
containers:
- name: nginx
image: uhub.service.ucloud.cn/ucloud/nginx:1.9.2
ports:
- containerPort: 80
小于19.05.3版本的插件,所有service端口只能是HTTP或HTTPS,不能混合使用。
apiVersion: v1
kind: Service
me
name: ucloud-nginx-out-tcp-new
labels:
app: ucloud-nginx-out-tcp-new
annotations:
"service.beta.kubernetes.io/ucloud-load-balancer-type": "outer"
# 代表ULB類型,outer為外網,inner為內網;outer為默認值,此處可省略。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-listentype": "requestproxy"
# 代表監聽器的類型為請求代理,插件版本小于19.05.3的版本必須填寫。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "https"
# 表示Verser的協議類型,此處為https,則所有的service端口對應的Vserver protocol 都為https,反之亦然。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-ssl-cert": "ssl-b103etqy"
# 聲明要綁定的SSL證書Id,需要先將證書上傳至UCloud;
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 443
targetPort: 80
name: https
- protocol: TCP
port: 80
targetPort: 80
name: httpstoo
selector:
app: ucloud-nginx-out-tcp-new
apiVersion: v1
kind: Pod
me
name: test-nginx-out-tcp
labels:
app: ucloud-nginx-out-tcp-new
spec:
containers:
name: nginx
image: uhub.service.ucloud.cn/ucloud/nginx:1.9.2
ports:
### HTTPS支持(cloudprovider-ucloud version>=19.05.3)
外網ULB支持HTTPS協議。用戶通過service.metadata.annotations中的service.beta.kubernetes.io/ucloud-load-balancer-ssl-cert來指定已經上傳的TLS證書ID。
通過service.metadata.annotations中的service.beta.kubernetes.io/ucloud-load-balancer-vserver-ssl-port來指定HTTPS服務端口,如有多端口,用""分隔。
如果某個ServicePort 被指定為HTTPS服務端口,并且已提交TLS證書ID,則該ServicePort所對應的VServer協議為HTTPS。
使用ULB7的HTTPS協議模式時,Pod內的服務程序不需要實現HTTPS協議服務,只需要提供HTTP服務即可,ULB7發往后端的報文為解密后的HTTP協議報文。
apiVersion: v1
kind: Service
me
name: ucloud-nginx-out-tcp-new
labels:
app: ucloud-nginx-out-tcp-new
annotations:
"service.beta.kubernetes.io/ucloud-load-balancer-type": "outer"
# 代表ULB類型,outer為外網,inner為內網;outer為默認值,此處可省略。
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol": "http"
# 表示ULB協議類型,http與https等價,表示ULB7;
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-ssl-cert": "ssl-b103etqy"
# 聲明要綁定的SSL證書Id,需要先將證書上傳至UCloud;
"service.beta.kubernetes.io/ucloud-load-balancer-vserver-ssl-port": "443"
# 聲明使用SSL協議的Service端口,多個用""分隔;
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 443
targetPort: 80
selector:
app: ucloud-nginx-out-tcp-new
apiVersion: v1
kind: Pod
me
name: test-nginx-out-tcp
labels:
app: ucloud-nginx-out-tcp-new
spec:
containers:
name: nginx
image: uhub.service.ucloud.cn/ucloud/nginx:1.9.2
ports:
### 常見問題
#### 1. 如何區別使用ULB4還是ULB7?
通過service.metadata.annotations中的service.beta.kubernetes.io/ucloud-load-balancer-vserver-protocol值來聲明使用ULB4還是ULB7。
如果值為tcp或者udp則使用ULB4。
如果是http或者https,則使用ULB7。
#### 2. 一個LoadBalancer的Service是否支持多端口?
支持,UK8S會為service.spec.ports下每個ServicePort分別創建一個VServer,VServer端口為Service端口。
#### 3. 是否支持多協議?
目前UK8S同時支持HTTP和HTTPS協議。
#### 4. UK8S的LoadBalancer類型的Service是否支持UDP?
目前已支持,后續計劃支持,灰度中。
#### 5. 如果Loadbalancer創建外網ULB后,用戶在ULB控制臺頁面綁定了新的EIP,會被刪除嗎?
只有訪問SVC的ExternalIP才能把流量導入后端Pod,訪問其他EIP無效。刪除SVC時,所有EIP都會被刪除。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/126267.html
摘要:通過內網訪問使用提醒請勿修改由創建的及的名稱和備注,否則會導致異常無法訪問。控制創建所在子網,填寫子網通過內網對外暴露服務代表類型,為外網,為內網為默認值,此處可省略。通過內網ULB訪問Service1、使用提醒請勿修改由UK8S創建的ULB及Vserver的名稱和備注,否則會導致Service異常無法訪問。除外網EIP外,ULB相關參數目前均不支持Update,如不確認如何填寫,請咨詢UC...
摘要:介紹本章節主要為您簡要介紹中的一個重要概念即服務,本文中兩者等同,以及的相關知識。在每臺的固定端口上暴露服務,選擇的服務類型,集群會自動創建一個類型的服務,負責處理接收到的外部流量。集群外部的可以通過的方式訪問該服務。Service 介紹本章節主要為您簡要介紹 Kubernetes 中的一個重要概念 Service(即服務,本文中兩者等同),以及ULB的相關知識。Service 介紹Serv...
摘要:通過暴露是社區的一個開源項目,你可以通過來部署更新應用排查應用故障以及管理集群資源。執行以下命令安裝,使用的鏡像已經去掉了的證書限制。不支持的版本范圍。通過ULB暴露Kubernetes DashboardDashboard是Kubernetes社區的一個Web開源項目,你可以通過Dashboard來部署更新應用、排查應用故障以及管理Kubernetes集群資源。另外,Dashboard還提...
摘要:指定已有的實例創建,被刪除后,實例不會被刪除,僅刪除對應的。下面我們來看下如何使用已有的實例。使用已有的內網聲明使用已有的內網,需要聲明至少兩個。使用已有的ULB背景UK8S支持在創建LoadBalancer類型的Service時,指定使用已有的ULB實例,而不是創建一個新的ULB實例。也支持多個Service復用一個ULB實例,但存在以下規則限制:已有的ULB實例,必須是你自行創建的ULB...
摘要:介紹介紹介紹是集群中的一個資源對象,用于定義如何訪問一組帶有相同特征的。下面我們分別介紹下如何通過在內網外網訪問。 Service 介紹本篇目錄1. Service 介紹2. ULB 簡要介紹本章節主要為您簡要介紹 Kubernetes 中的一個重要概念 Service(即服務,本文中兩者等同),以及ULB的相關知識。1. Service 介紹Service 是 Kubernetes 集群中...
閱讀 3514·2023-04-25 20:09
閱讀 3720·2022-06-28 19:00
閱讀 3035·2022-06-28 19:00
閱讀 3058·2022-06-28 19:00
閱讀 3131·2022-06-28 19:00
閱讀 2859·2022-06-28 19:00
閱讀 3014·2022-06-28 19:00
閱讀 2610·2022-06-28 19:00