我在Kubernetes外部名称服务方面遇到一些问题。我想从群集访问服务器'dummy.restapiexample.com'。我创建了以下服务:
apiVersion: v1
kind: Service
metadata:
name: dummy-svc
spec:
type: ExternalName
externalName: dummy.restapiexample.com
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
dummy-svc ExternalName <none> dummy.restapiexample.com <none> 33m
kubernetes ClusterIP 100.64.0.1 <none> 443/TCP 6d19h
但是当我尝试从同一名称空间的pod访问服务时,我得到的代码是HTTP 403。
$ 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 -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":""}
我的代码有什么问题?任何提示将不胜感激。该集群在AWS上运行,并安装了kops。
答案 0 :(得分:3)
如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
由于网址不同,从远程服务器收到的代码403。
@Patrik W:谢谢您的帮助。