kubernetsサービスのネーミングスペース間アクセス
8294 ワード
kubernetesサービスのネーミングスペース間アクセス
namespaceはリソースとして隔離され、グループ化に使用され、私の異なるコンポーネント、異なるサービスを異なるnamespaceの下に置くことができ、管理しやすいことはよく知られています.では、私は今需要があります.サービス間で相互にアクセスできることを望んでいます.つまり、namespaceにまたがるサービスアクセスは、どのように処理すればいいのでしょうか.
svcの4種類のClusterIPはデフォルトで、1つのVIPを割り当てて、内部アクセスNodePort ClusterIPの基礎の上で、各ノードが1つの対外アクセスポートLoadBalancerを縛ってNodePortの基礎の上で、外部負荷イコライザはNodePort ExternalNameクラスタの外部のサービスに転送してクラスタの内部に引き込んで、クラスタの内部は使用します
上記の機能を実現するには、大きなs vcのExternalNameというタイプを使用する必要があります.
具体的な操作方法は以下の通りです. defaultの下でサービスを作成し、echoserviceを例に
kubectlでサービスを表示できます namespace test を新規作成 testでsvcを作成し、defaultでsvc に関連付けます. testの下でingresを作成し、testの下のsvcを指します.これによりdefaultの下のechoサービスにアクセスできます.
これによりsvcのExternalNameでnamespaceにまたがるアクセスが可能になります
namespaceはリソースとして隔離され、グループ化に使用され、私の異なるコンポーネント、異なるサービスを異なるnamespaceの下に置くことができ、管理しやすいことはよく知られています.では、私は今需要があります.サービス間で相互にアクセスできることを望んでいます.つまり、namespaceにまたがるサービスアクセスは、どのように処理すればいいのでしょうか.
svcの4種類のClusterIPはデフォルトで、1つのVIPを割り当てて、内部アクセスNodePort ClusterIPの基礎の上で、各ノードが1つの対外アクセスポートLoadBalancerを縛ってNodePortの基礎の上で、外部負荷イコライザはNodePort ExternalNameクラスタの外部のサービスに転送してクラスタの内部に引き込んで、クラスタの内部は使用します
上記の機能を実現するには、大きなs vcのExternalNameというタイプを使用する必要があります.
具体的な操作方法は以下の通りです.
$ kubectl apply -f https://bit.ly/echo-service
service/echo created
deployment.apps/echo created
kubectlでサービスを表示できます
$ kubectl get svc echo
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echo ClusterIP 10.102.214.18 <none> 8080/TCP,80/TCP 69m
$ kubectl create namespace test
apiVersion: v1
kind: Service
metadata:
name: echo-default
namespace: test
spec:
type: ExternalName
externalName: echo.default.svc.cluster.local
$ kubectl get svc -n test
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echo-default ExternalName <none> echo.default.svc.cluster.local <none> 29m
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: demo
namespace: test
spec:
rules:
- http:
paths:
- path: /bar
backend:
serviceName: echo-default
servicePort: 80
$ kubectl get ingress -n test
NAME HOSTS ADDRESS PORTS AGE
demo * 192.168.159.129 80 31m
$ curl -i 192.168.159.129:32359/bar
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Date: Sat, 09 May 2020 09:08:48 GMT
Server: echoserver
X-Kong-Upstream-Latency: 1
X-Kong-Proxy-Latency: 1
Via: kong/2.0.3
Hostname: echo-c4cb89895-pnf85
Pod Information:
node name: 192.168.159.129
pod name: echo-c4cb89895-pnf85
pod namespace: default
pod IP: 10.32.0.7
Server values:
server_version=nginx: 1.13.3 - lua: 10008
Request Information:
client_address=::ffff:10.32.0.6
method=GET
real path=/
query=
request_version=1.1
request_scheme=http
これによりsvcのExternalNameでnamespaceにまたがるアクセスが可能になります