腾讯云部署k8s nginx 为什么不可以直接访问service
时间: 2024-01-09 19:05:11 浏览: 136
阿里云k8s kubectl 一键部署vue+nginx
在 Kubernetes 集群中,Service 是一种虚拟的访问入口,用于将请求转发到后端的 Pod。当你创建一个 Service 时,Kubernetes 会为该 Service 创建一个 Cluster IP,用于在集群内部进行访问,而且这个 IP 只能在集群内部进行访问。因此,在默认情况下,如果你通过集群外部的 IP 直接访问 Service,是无法成功的。
如果你希望从集群外部访问 Kubernetes 中的 Service,可以使用 Kubernetes Ingress 或者 NodePort 来实现。其中,Ingress 可以将多个 Service 绑定到同一个域名下,并通过反向代理来转发请求;而 NodePort 可以将 Service 暴露在 Kubernetes Node 的 IP 和一个固定的端口上,从而可以通过 Node 的 IP 和端口来访问 Service。
在腾讯云上部署 Kubernetes 时,你可以使用 TKE Ingress 或者腾讯云负载均衡来实现 Ingress 的功能,也可以使用腾讯云 CLB 来实现 NodePort 的功能。具体来说,你需要在创建 Ingress 或者 Service 时,配置相应的 annotations 或者标签,来指定使用 TKE Ingress、腾讯云负载均衡或者 CLB。例如,你可以使用以下 annotations 来创建一个 Ingress,并通过腾讯云负载均衡来实现 Ingress 的负载均衡功能:
```
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
ingress.cloud.tencent.com/group-name: "example-group" # 指定负载均衡器的分组名称
ingress.cloud.tencent.com/load-balance-id: "lb-xxxxxxxx" # 指定负载均衡器的 ID
spec:
rules:
- host: example.com
http:
paths:
- path: /foo
backend:
serviceName: example-service
servicePort: 80
```
这样,在创建 Ingress 对象时,Kubernetes 会自动创建一个负载均衡器,并将请求转发到后端的 Service 上。需要注意的是,不同的云平台提供的负载均衡器的配置方式和限制可能不同,具体可以参考相应的文档。
阅读全文