Kubernetes服务外部名称

Kubernetes服务外部名称,kubernetes,Kubernetes,我对Kubernetes ExternalName服务有一些问题。我想从集群访问服务器'dummy.restapiexample.com'。我创建了以下服务: apiVersion: v1 kind: Service metadata: name: dummy-svc spec: type: ExternalName externalName: dummy.restapiexample.com $kubectl获得svc 名称类型CLUSTER-IP外部IP端口年龄

我对Kubernetes ExternalName服务有一些问题。我想从集群访问服务器'dummy.restapiexample.com'。我创建了以下服务:

apiVersion: v1
kind: Service
metadata:
   name: dummy-svc
spec:
    type: ExternalName
    externalName: dummy.restapiexample.com   
$kubectl获得svc
名称类型CLUSTER-IP外部IP端口年龄
虚拟svc外部名称dummy.restapiexample.com 33m
kubernetes ClusterIP 100.64.0.1 443/TCP 6d19h
但是,当我尝试从同一名称空间的pod访问服务时,得到的代码是http403

$ curl -v http://dummy-svc/api/v1/employee/1
> GET /api/v1/employee/1 HTTP/1.1
> User-Agent: curl/7.35.0
> Host: dummy-svc
> Accept: */*
>
< HTTP/1.1 403 Forbidden
< Content-Type: text/plain
< Date: Sat, 23 Nov 2019 14:21:05 GMT 
< Content-Length: 9
<
$curl-vhttp://dummy-svc/api/v1/employee/1
>GET/api/v1/employee/1http/1.1
>用户代理:curl/7.35.0
>主机:虚拟svc
>接受:*/*
>
我可以在没有任何问题的情况下访问外部服务器:

$ curl -v http://dummy.restapiexample.com/api/v1/employee/1                               │
> GET /api/v1/employee/1 HTTP/1.1 
> User-Agent: curl/7.35.0 
> Host: dummy.restapiexample.com
> Accept: */*                                                                                            
< HTTP/1.1 200 OK 
...
< Content-Length: 104
{"id":"1","employee_name":"56456464646","employee_salary":"2423","employee_age":"23","profile_image":""}
$curl-vhttp://dummy.restapiexample.com/api/v1/employee/1                               │
>GET/api/v1/employee/1http/1.1
>用户代理:curl/7.35.0
>主持人:dummy.restapiexample.com
>接受:**

我的代码有什么问题?任何提示都将不胜感激。群集在AWS上运行,并安装有kops。

正如Patrik W所指出的,服务工作正常。它将请求路由到远程服务器。Ping到达远程服务器:

$ ping dummy-svc

PING dummy.restapiexample.com (52.209.246.67) 56(84) bytes of data.
64 bytes from ec2-52-209-246-67.eu-west-1.compute.amazonaws.com (52.209.246.67): icmp_seq=1 ttl=62 time=1.29 ms
由于URL不同,从远程服务器接收到代码403


@帕特里克·W:谢谢你的帮助。

403是由你的服务器返回的,不是服务返回的。您配置服务的方式没有问题。我理解我的服务返回的代码,我不理解为什么。据我所知,服务应该只是将请求转发到外部服务器,但它拒绝这样做。服务只是解析名称。如果您尝试跟踪路由,您应该会看到它到达您的服务器属性Tanks!我明白你的意思。你说得对。如果我ping我的服务,我会从远程服务器得到正确的响应。我只是想知道,两个curl命令之间的区别是什么:一个直接向远程服务器发送请求并接收正确的响应,另一个通过服务发送相同的请求并接收403?您通过服务使用不同的url,您的应用程序可能不喜欢这样
$ ping dummy-svc

PING dummy.restapiexample.com (52.209.246.67) 56(84) bytes of data.
64 bytes from ec2-52-209-246-67.eu-west-1.compute.amazonaws.com (52.209.246.67): icmp_seq=1 ttl=62 time=1.29 ms